diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 000000000..9561e7d4e --- /dev/null +++ b/.dockerignore @@ -0,0 +1,5 @@ +Dockerfile +.github +integration_tests +zgrab2_schemas +*.md diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 000000000..aee6e903d --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,18 @@ +version: 2 +updates: + - package-ecosystem: gomod + directory: / + schedule: + interval: weekly + - package-ecosystem: github-actions + directory: "/" + schedule: + interval: weekly + - package-ecosystem: docker + directory: "/" + schedule: + interval: weekly + - package-ecosystem: docker + directory: "/docker-runner" + schedule: + interval: weekly diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml deleted file mode 100644 index 586c1b316..000000000 --- a/.github/workflows/build.yml +++ /dev/null @@ -1,19 +0,0 @@ -name: ZGrab2 build action -on: [push, pull_request] -jobs: - build: - name: Build - runs-on: ubuntu-latest - steps: - - name: Set up Go - uses: actions/setup-go@v2 - with: - go-version: 1.16 - - - name: Check out source - uses: actions/checkout@v2 - - - name: Build - run: | - go get -t ./... - make diff --git a/.github/workflows/docker-publish.yml b/.github/workflows/docker-publish.yml new file mode 100644 index 000000000..fd4b66aaf --- /dev/null +++ b/.github/workflows/docker-publish.yml @@ -0,0 +1,153 @@ +# See also: +# https://docs.docker.com/build/ci/github-actions/multi-platform/ +# https://docs.github.com/en/actions/publishing-packages/publishing-docker-images + +name: Publish Docker image + +on: + push: + branches: + - master + tags: + +env: + REGISTRY: ghcr.io + IMAGE_NAME: ${{ github.repository }} + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + build: + runs-on: ubuntu-latest + permissions: + contents: read + packages: write + id-token: write + attestations: write + strategy: + fail-fast: true + matrix: + platform: + - linux/amd64 + - linux/arm/v6 + - linux/arm/v7 + - linux/arm64 + steps: + - name: Prepare + run: | + platform=${{ matrix.platform }} + echo "PLATFORM_PAIR=${platform//\//-}" >> $GITHUB_ENV + + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Extract metadata (tags, labels) for Docker + id: meta + uses: docker/metadata-action@v5 + with: + images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} + + - name: Log in to the Container registry + uses: docker/login-action@v3 + with: + registry: ${{ env.REGISTRY }} + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - uses: docker/setup-qemu-action@v3 + - uses: docker/setup-buildx-action@v3 + - name: Build and push by digest + id: build + uses: docker/build-push-action@v5 + with: + context: . + cache-from: type=gha + cache-to: type=gha,mode=max + platforms: ${{ matrix.platform }} + labels: ${{ steps.meta.outputs.labels }} + outputs: type=image,name=${{ env.REGISTRY }}/${{ env.IMAGE_NAME }},push-by-digest=true,name-canonical=true,push=true + + - name: Generate artifact attestation + uses: actions/attest-build-provenance@v1 + with: + subject-name: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME}} + subject-digest: ${{ steps.build.outputs.digest }} + push-to-registry: true + + - name: Export digest + run: | + mkdir -p /tmp/digests + digest="${{ steps.build.outputs.digest }}" + touch "/tmp/digests/${digest#sha256:}" + + - name: Upload digest + uses: actions/upload-artifact@v4 + with: + name: digests-${{ env.PLATFORM_PAIR }} + path: /tmp/digests/* + if-no-files-found: error + retention-days: 1 + + publish: + needs: + - build + runs-on: ubuntu-latest + # Sets the permissions granted to the `GITHUB_TOKEN` for the actions in this job. + permissions: + contents: read + packages: write + id-token: write + attestations: write + steps: + - name: Download digests + uses: actions/download-artifact@v4 + with: + path: /tmp/digests + pattern: digests-* + merge-multiple: true + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Extract metadata (tags, labels) for Docker + id: meta + uses: docker/metadata-action@v5 + with: + images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} + tags: | + type=raw,value=latest,enable={{is_default_branch}} + type=semver,pattern={{version}} + type=semver,pattern={{major}}.{{minor}} + type=semver,pattern={{major}} + type=ref,event=tag + type=ref,event=branch + + - name: Log in to the Container registry + uses: docker/login-action@v3 + with: + registry: ${{ env.REGISTRY }} + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Create manifest list and push + id: push + working-directory: /tmp/digests + run: | + docker buildx imagetools create $(jq -cr '.tags | map("-t " + .) | join(" ")' <<< "$DOCKER_METADATA_OUTPUT_JSON") \ + $(printf '${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}@sha256:%s ' *) + + - name: Inspect image + id: inspect + run: | + docker buildx imagetools inspect ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ steps.meta.outputs.version }} + IMAGE_DIGEST=$(docker buildx imagetools inspect --format "{{json .Manifest}}" ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ steps.meta.outputs.version }} | jq -r '.digest') + echo "IMAGE_DIGEST=$IMAGE_DIGEST" >> $GITHUB_OUTPUT + + - name: Generate artifact attestation + uses: actions/attest-build-provenance@v1 + with: + subject-name: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME}} + subject-digest: ${{ steps.inspect.outputs.IMAGE_DIGEST }} + push-to-registry: true diff --git a/.github/workflows/integration-test.yml b/.github/workflows/integration-test.yml new file mode 100644 index 000000000..8c136508e --- /dev/null +++ b/.github/workflows/integration-test.yml @@ -0,0 +1,74 @@ +name: Test +on: + push: + branches: + - master + pull_request: + +jobs: + go-test: + name: Go Test + runs-on: ubuntu-latest + steps: + - name: Check out source + uses: actions/checkout@v4 + + - name: Read go version + id: go_version + run: | + # Read the variable from the file + GO_VERSION=$(grep '^go ' go.mod | awk '{print $2}') + # Set the variable as an output + echo "GO_VERSION=$GO_VERSION" >> $GITHUB_OUTPUT + + - name: Set up Go + uses: actions/setup-go@v5 + with: + go-version: ${{ steps.go_version.outputs.GO_VERSION }} + + - name: Build + run: | + go get -t ./... + make + + - name: Test + run: | + make test + + integration-test: + name: Integration Test + runs-on: ubuntu-22.04 + steps: + - name: Check out source + uses: actions/checkout@v4 + + - name: Read go version + id: go_version + run: | + # Read the variable from the file + GO_VERSION=$(grep '^go ' go.mod | awk '{print $2}') + # Set the variable as an output + echo "GO_VERSION=$GO_VERSION" >> $GITHUB_OUTPUT + + - name: Set up Go + uses: actions/setup-go@v5 + with: + go-version: ${{ steps.go_version.outputs.GO_VERSION }} + + - name: Install dependencies + run: | + set -e + sudo wget https://github.com/jmespath/jp/releases/download/0.2.1/jp-linux-amd64 -O /usr/local/bin/jp + sudo chmod +x /usr/local/bin/jp + # Install Python 2.7 + sudo apt update + sudo apt install -y python2 + curl https://bootstrap.pypa.io/pip/2.7/get-pip.py --output get-pip.py + sudo python2 get-pip.py + # Install Python dependencies + pip2 install --user zschema + pip2 install --user -r requirements.txt + + - name: Run tests + run: | + make integration-test diff --git a/.github/workflows/linter.yml b/.github/workflows/linter.yml new file mode 100644 index 000000000..62f806f3e --- /dev/null +++ b/.github/workflows/linter.yml @@ -0,0 +1,53 @@ +name: Lint + +on: + push: + branches: + - master + pull_request: + + +jobs: + py-black: + name: Python Formatter + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: psf/black@stable + go-fmt: + name: Go Formatter + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Read go version + id: go_version + run: | + # Read the variable from the file + GO_VERSION=$(grep '^go ' go.mod | awk '{print $2}') + # Set the variable as an output + echo "GO_VERSION=$GO_VERSION" >> $GITHUB_OUTPUT + - name: Set up Go + uses: actions/setup-go@v5 + with: + go-version: ${{ steps.go_version.outputs.GO_VERSION }} + - name: Run go fmt + run: | + NON_COMPLIANT_FILES=$(gofmt -s -l $(find . -type f -name '*.go'| grep -v "/.template/")) + if [ -n "$NON_COMPLIANT_FILES" ]; then + echo "The following files are not formatted correctly:" + echo "$NON_COMPLIANT_FILES" + + mkdir -p /tmp/gofmt + for file in $NON_COMPLIANT_FILES; do + mkdir -p /tmp/gofmt/$(dirname $file) + gofmt -s $file > /tmp/gofmt/$file + done + + exit 1 + fi + - name: Upload formatted files + if: failure() + uses: actions/upload-artifact@v4 + with: + name: formatted-files + path: /tmp/gofmt \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 000000000..5368a5271 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,23 @@ +## Build image ## +ARG GO_VERSION=1.20 +FROM golang:${GO_VERSION}-alpine3.16 as build + +# System dependencies +RUN apk add --no-cache make + +WORKDIR /usr/src/zgrab2 + +# Copy and cache deps +COPY go.mod go.sum ./ +RUN go mod download && go mod verify + +# Build the actual app +COPY . . +RUN make all + +## Runtime image ## +FROM alpine:3.20 as run + +COPY --from=build /usr/src/zgrab2/cmd/zgrab2/zgrab2 /usr/bin/zgrab2 + +ENTRYPOINT ["/usr/bin/zgrab2"] diff --git a/Makefile b/Makefile index 4a65dbbdd..c960658aa 100644 --- a/Makefile +++ b/Makefile @@ -9,7 +9,7 @@ TEST_MODULES ?= all: zgrab2 -.PHONY: all clean integration-test integration-test-clean docker-runner container-clean gofmt test +.PHONY: all clean integration-test integration-test-clean docker-runner gofmt test # Test currently only runs on the modules folder because some of the # third-party libraries in lib (e.g. http) are failing. @@ -17,15 +17,15 @@ test: cd lib/output/test && go test -v ./... cd modules && go test -v ./... -gofmt: - goimports -w -l $(GO_FILES) +lint: + gofmt -s -w $(shell find . -type f -name '*.go'| grep -v "/.template/") zgrab2: $(GO_FILES) cd cmd/zgrab2 && go build && cd ../.. rm -f zgrab2 ln -s cmd/zgrab2/zgrab2$(EXECUTABLE_EXTENSION) zgrab2 -docker-runner: zgrab2 +docker-runner: clean make -C docker-runner integration-test: docker-runner @@ -37,12 +37,6 @@ integration-test-clean: ./integration_tests/cleanup.sh make -C docker-runner clean -# This is the target for re-building from source in the container -container-clean: - rm -f zgrab2 - cd cmd/zgrab2 && go build -v -a . && cd ../.. - ln -s cmd/zgrab2/zgrab2$(EXECUTABLE_EXTENSION) zgrab2 - clean: cd cmd/zgrab2 && go clean rm -f zgrab2 diff --git a/README.md b/README.md index dbf168dc5..298d17069 100644 --- a/README.md +++ b/README.md @@ -5,38 +5,76 @@ ZGrab is a fast, modular application-layer network scanner designed for completi ZGrab 2.0 contains a new, modular ZGrab framework, which fully supersedes https://github.com/zmap/zgrab. -## Building +## Installation + +### With Docker + +You can run ZGrab 2.0 with our official Docker image. For example, to scan a single website using the HTTP module, you can use: + +```shell +echo 'example.com' | docker run --rm -i ghcr.io/zmap/zgrab2 http +``` + +For more complex scanning scenarios, such as using multiple modules or custom configurations, you can create a configuration file and pass it to the container: + +```shell +docker run --rm -i -v /path/to/your/config.ini:/config.ini ghcr.io/zmap/zgrab2 multiple -c /config.ini +``` + +Replace `/path/to/your/config.ini` with the path to your configuration file on the host machine. See [Multiple Module Usage](#multiple-module-usage) for more details on configurations. + +### Building from Source + +For Go 1.17 and later you must build from source: + +```shell +git clone https://github.com/zmap/zgrab2.git +cd zgrab2 +make +./zgrab2 +``` + + +For Go 1.16 and below you can install via go get: You will need to have a valid `$GOPATH` set up, for more information about `$GOPATH`, see https://golang.org/doc/code.html. Once you have a working `$GOPATH`, run: -``` -$ go get github.com/zmap/zgrab2 +```shell +go get github.com/zmap/zgrab2 ``` This will install zgrab under `$GOPATH/src/github.com/zmap/zgrab2` -``` -$ cd $GOPATH/src/github.com/zmap/zgrab2 -$ make +```shell +cd $GOPATH/src/github.com/zmap/zgrab2 +make ``` ## Single Module Usage ZGrab2 supports modules. For example, to run the ssh module use -``` +```shell ./zgrab2 ssh ``` +To retrieve detailed command-line usage and options for a specific module, append `-h` to the command: + +```bash +./zgrab2 [module] -h +``` + +This will display the module-specific options, as well as the application-wide options, including usage examples, available flags, and descriptions for each option. + Module specific options must be included after the module. Application specific options can be specified at any time. ## Input Format Targets are specified with input files or from `stdin`, in CSV format. Each input line has three fields: -``` +```text IP, DOMAIN, TAG ``` @@ -50,7 +88,7 @@ Unused fields can be blank, and trailing unused fields can be omitted entirely. These are examples of valid input lines: -``` +```text 10.0.0.1 domain.com 10.0.0.1, domain.com @@ -66,7 +104,7 @@ domain.com To run a scan with multiple modules, a `.ini` file must be used with the `multiple` module. Below is an example `.ini` file with the corresponding zgrab2 command. ***multiple.ini*** -``` +```ini [Application Options] output-file="output.txt" input-file="input.txt" @@ -81,21 +119,21 @@ endpoint="/" [ssh] port=22 ``` -``` +```shell ./zgrab2 multiple -c multiple.ini ``` `Application Options` must be the initial section name. Other section names should correspond exactly to the relevant zgrab2 module name. The default name for each module is the command name. If the same module is to be used multiple times then `name` must be specified and unique. Multiple module support is particularly powerful when combined with input tags and the `--trigger` scanner argument. For example, this input contains targets with two different tags: -``` +```text 141.212.113.199, , tagA 216.239.38.21, censys.io, tagB ``` Invoking zgrab2 with the following `multiple` configuration will perform an SSH grab on the first target above and an HTTP grab on the second target: -``` +```ini [ssh] trigger="tagA" name="ssh22" @@ -113,7 +151,7 @@ Add module to modules/ that satisfies the following interfaces: `Scanner`, `Scan The flags struct must embed zgrab2.BaseFlags. In the modules `init()` function the following must be included. -``` +```go func init() { var newModule NewModule _, err := zgrab2.AddCommand("module", "short description", "long description of module", portNumber, &newModule) @@ -125,9 +163,9 @@ func init() { ### Output schema -To add a schema for the new module, add a module under schemas, and update [`schemas/__init__.py`](schemas/__init__.py) to ensure that it is loaded. +To add a schema for the new module, add a module under schemas, and update [`zgrab2_schemas/zgrab2/__init__.py`](zgrab2_schemas/zgrab2/__init__.py) to ensure that it is loaded. -See [schemas/README.md](schemas/README.md) for details. +See [zgrab2_schemas/README.md](zgrab2_schemas/README.md) for details. ### Integration tests To add integration tests for the new module, run `integration_tests/new.sh [your_new_protocol_name]`. @@ -137,20 +175,24 @@ The only hard requirement is that the `test.sh` script drops its output in `$ZGR #### How to Run Integration Tests -To run integration tests, you must have [Docker](https://www.docker.com/) installed. Then, you can follow the following steps to run integration tests: +To run integration tests, you must have [Docker](https://www.docker.com/) and **Python 2** on host installed. Then, you can follow the following steps to run integration tests: -``` -$ go get github.com/jmespath/jp && go build github.com/jmespath/jp -$ pip install --user zschema -$ make integration-test +```shell +go get github.com/jmespath/jp && go build github.com/jmespath/jp +# or, sudo wget https://github.com/jmespath/jp/releases/download/0.2.1/jp-linux-amd64 -O /usr/local/bin/jp && sudo chmod +x /usr/local/bin/jp +pip2 install --user zschema +pip2 install --user -r requirements.txt +make integration-test ``` Running the integration tests will generate quite a bit of debug output. To ensure that tests completed successfully, you can check for a successful exit code after the tests complete: -``` -$ echo $? +```shell +echo $? 0 ``` +Refer to our [Github Actions workflow](.github/workflows/integration-test.yml) for an example of how to prepare environment for integration tests. + ## License ZGrab2.0 is licensed under Apache 2.0 and ISC. For more information, see the LICENSE file. diff --git a/bin/bin.go b/bin/bin.go index dc4904612..fd2d33e52 100644 --- a/bin/bin.go +++ b/bin/bin.go @@ -61,7 +61,7 @@ func dumpHeapProfile() { // If CPU profiling is enabled (ZGRAB2_CPUPROFILE is not empty), start tracking // CPU profiling in the configured file. Caller is responsible for invoking // stopCPUProfile() when finished. -func startCPUProfile() { +func startCPUProfile() *os.File { if file := getCPUProfileFile(); file != "" { now := time.Now() fullFile := getFormattedFile(file, now) @@ -72,15 +72,21 @@ func startCPUProfile() { if err := pprof.StartCPUProfile(f); err != nil { log.Fatal("could not start CPU profile: ", err) } + return f } + + return nil } // If CPU profiling is enabled (ZGRAB2_CPUPROFILE is not empty), stop profiling // CPU usage. -func stopCPUProfile() { +func stopCPUProfile(f *os.File) { if getCPUProfileFile() != "" { pprof.StopCPUProfile() } + if f != nil { + f.Close() + } } // ZGrab2Main should be called by func main() in a binary. The caller is @@ -88,8 +94,8 @@ func stopCPUProfile() { // include custom sets of scan modules by creating new main packages with custom // sets of ZGrab modules imported with side-effects. func ZGrab2Main() { - startCPUProfile() - defer stopCPUProfile() + f := startCPUProfile() + defer stopCPUProfile(f) defer dumpHeapProfile() _, moduleType, flag, err := zgrab2.ParseCommandLine(os.Args[1:]) @@ -108,7 +114,7 @@ func ZGrab2Main() { if m, ok := flag.(*zgrab2.MultipleCommand); ok { iniParser := zgrab2.NewIniParser() var modTypes []string - var flagsReturned []interface{} + var flagsReturned []any if m.ConfigFileName == "-" { modTypes, flagsReturned, err = iniParser.Parse(os.Stdin) } else { diff --git a/config.go b/config.go index ef2334867..f59bb3f85 100644 --- a/config.go +++ b/config.go @@ -17,7 +17,6 @@ type Config struct { InputFileName string `short:"f" long:"input-file" default:"-" description:"Input filename, use - for stdin"` MetaFileName string `short:"m" long:"metadata-file" default:"-" description:"Metadata filename, use - for stderr"` LogFileName string `short:"l" long:"log-file" default:"-" description:"Log filename, use - for stderr"` - LocalAddress string `long:"source-ip" description:"Local source IP address to use for making connections"` Senders int `short:"s" long:"senders" default:"1000" description:"Number of send goroutines to use"` Debug bool `long:"debug" description:"Include debug fields in the output."` Flush bool `long:"flush" description:"Flush after each line of output."` @@ -25,6 +24,7 @@ type Config struct { ConnectionsPerHost int `long:"connections-per-host" default:"1" description:"Number of times to connect to each host (results in more output)"` ReadLimitPerHost int `long:"read-limit-per-host" default:"96" description:"Maximum total kilobytes to read for a single host (default 96kb)"` Prometheus string `long:"prometheus" description:"Address to use for Prometheus server (e.g. localhost:8080). If empty, Prometheus is disabled."` + CustomDNS string `long:"dns" description:"Address of a custom DNS server for lookups. Default port is 53."` Multiple MultipleCommand `command:"multiple" description:"Multiple module actions"` inputFile *os.File outputFile *os.File @@ -65,14 +65,6 @@ func validateFrameworkConfiguration() { } SetInputFunc(InputTargetsCSV) - if config.LocalAddress != "" { - parsed := net.ParseIP(config.LocalAddress) - if parsed == nil { - log.Fatalf("Error parsing local interface %s as IP", config.LocalAddress) - } - config.localAddr = &net.TCPAddr{parsed, 0, ""} - } - if config.InputFileName == "-" { config.inputFile = os.Stdin } else { @@ -111,7 +103,7 @@ func validateFrameworkConfiguration() { //validate/start prometheus if config.Prometheus != "" { go func() { - http.Handle("metrics", promhttp.Handler()) + http.Handle("/metrics", promhttp.Handler()) if err := http.ListenAndServe(config.Prometheus, nil); err != nil { log.Fatalf("could not run prometheus server: %s", err.Error()) } @@ -137,6 +129,14 @@ func validateFrameworkConfiguration() { if config.ReadLimitPerHost > 0 { DefaultBytesReadLimit = config.ReadLimitPerHost * 1024 } + + // Validate custom DNS + if config.CustomDNS != "" { + var err error + if config.CustomDNS, err = addDefaultPortToDNSServerName(config.CustomDNS); err != nil { + log.Fatalf("invalid DNS server address: %s", err) + } + } } // GetMetaFile returns the file to which metadata should be output diff --git a/conn.go b/conn.go index ef701c81a..e4dc43e2e 100644 --- a/conn.go +++ b/conn.go @@ -341,6 +341,16 @@ func (d *Dialer) SetDefaults() *Dialer { KeepAlive: d.Timeout, DualStack: true, } + + // Use custom DNS as default if set + if config.CustomDNS != "" { + d.Dialer.Resolver = &net.Resolver{ + PreferGo: true, + Dial: func(ctx context.Context, network, address string) (net.Conn, error) { + return net.Dial(network, config.CustomDNS) + }, + } + } } return d } diff --git a/conn_bytelimit_test.go b/conn_bytelimit_test.go index 87b54a3b9..af6cd2836 100644 --- a/conn_bytelimit_test.go +++ b/conn_bytelimit_test.go @@ -65,7 +65,7 @@ type readLimitTestConfig struct { // Call sendReceive(), and check that the input/output match, and that any expected errors / truncation occurs. func checkedSendReceive(t *testing.T, conn *TimeoutConnection, size int) (result error) { // helper to report + return an error - tErrorf := func(format string, args ...interface{}) error { + tErrorf := func(format string, args ...any) error { result = fmt.Errorf(format, args) t.Error(result) return result diff --git a/conn_timeout_test.go b/conn_timeout_test.go index c469af22c..383d2bfb5 100644 --- a/conn_timeout_test.go +++ b/conn_timeout_test.go @@ -111,7 +111,7 @@ func _write(writer io.Writer, data []byte) error { // Run the configured server. As soon as it returns, it is listening. // Returns a channel that receives a timeoutTestError on error, or is closed on successful completion. -func (cfg *connTimeoutTestConfig) runServer(t *testing.T) (chan *timeoutTestError) { +func (cfg *connTimeoutTestConfig) runServer(t *testing.T) chan *timeoutTestError { errorChan := make(chan *timeoutTestError) if cfg.endpoint != "" { // Only listen on localhost @@ -307,7 +307,7 @@ var connTestConfigs = []connTimeoutTestConfig{ serverToClientPayload: []byte("abc"), clientToServerPayload: []byte("defghi"), - failStep: testStepConnect, + failStep: testStepConnect, failError: "i/o timeout", }, // short session timeout, medium connect timeout, with connect to nonexistent endpoint. @@ -326,7 +326,7 @@ var connTestConfigs = []connTimeoutTestConfig{ serverToClientPayload: []byte("abc"), clientToServerPayload: []byte("defghi"), - failStep: testStepConnect, + failStep: testStepConnect, failError: "i/o timeout", }, // Get an IO timeout on the read. diff --git a/docker-runner/Dockerfile b/docker-runner/Dockerfile deleted file mode 100644 index 9f8453434..000000000 --- a/docker-runner/Dockerfile +++ /dev/null @@ -1,25 +0,0 @@ -FROM zgrab2_runner_base:latest - -WORKDIR /go/src/github.com/zmap - -# Grab the currently-active version of the source -ADD . zgrab2 - -# This would instead grab it from the source repo -# RUN go-wrapper download github.com/zmap/zgrab2 - -WORKDIR /go/src/github.com/zmap/zgrab2 - -RUN go get -f -u -v . -RUN go get -f -u -v -t . -RUN go get -f -u -v $(find ./modules -type d) -RUN go get -f -u -v -t $(find ./modules -type d) - -# This should already be executable, but just in case... -RUN chmod a+x ./docker-runner/entrypoint.sh - -# Build on the container -RUN make container-clean - -CMD [] -ENTRYPOINT ["/go/src/github.com/zmap/zgrab2/docker-runner/entrypoint.sh"] diff --git a/docker-runner/Makefile b/docker-runner/Makefile index d66471351..139eddbc3 100644 --- a/docker-runner/Makefile +++ b/docker-runner/Makefile @@ -4,26 +4,23 @@ else EXECUTABLE_EXTENSION := endif -all: docker-runner.id +PROJ_ROOT := $(shell git rev-parse --show-toplevel) + +all: docker-runner.id service-base-image.id .PHONY: clean clean-all base-apt-update service-base-image.id: service-base.Dockerfile docker build -t zgrab2_service_base:latest -f service-base.Dockerfile -q . > service-base-image.id || (rm -f service-base-image.id && exit 1) -runner-base-image.id: runner-base.Dockerfile - docker build -t zgrab2_runner_base:latest -f runner-base.Dockerfile -q . > runner-base-image.id || (rm -f runner-base-image.id && exit 1) - base-apt-update: IMAGE_ID=zgrab2_service_base:latest ./base-apt-update.sh - IMAGE_ID=zgrab2_runner_base:latest ./base-apt-update.sh -docker-runner.id: Dockerfile ../cmd/zgrab2/zgrab2$(EXECUTABLE_EXTENSION) runner-base-image.id service-base-image.id - docker build -t zgrab2_runner:latest -f Dockerfile -q .. > docker-runner.id || (rm -f docker-runner.id && exit 1) +docker-runner.id: $(PROJ_ROOT)/Dockerfile + docker build -t zgrab2_runner:latest -f $(PROJ_ROOT)/Dockerfile -q $(PROJ_ROOT) > docker-runner.id || (rm -f docker-runner.id && exit 1) clean: if [ -f docker-runner.id ]; then docker rmi -f $$(cat docker-runner.id) && rm -f docker-runner.id; fi clean-all: clean if [ -f service-base-image.id ]; then docker rmi -f $$(cat service-base-image.id) && rm -f service-base-image.id; fi - if [ -f runner-base-image.id ]; then docker rmi -f $$(cat runner-base-image.id) && rm -f runner-base-image.id; fi diff --git a/docker-runner/docker-run.sh b/docker-runner/docker-run.sh index 074a8107c..a13ed2842 100755 --- a/docker-runner/docker-run.sh +++ b/docker-runner/docker-run.sh @@ -7,4 +7,4 @@ : "${CONTAINER_NAME:?}" set -e -docker run --rm --link $CONTAINER_NAME:target -e ZGRAB_TARGET=target zgrab2_runner $@ +echo 'target' | docker run --rm -i --link $CONTAINER_NAME:target zgrab2_runner $@ diff --git a/docker-runner/runner-base.Dockerfile b/docker-runner/runner-base.Dockerfile deleted file mode 100644 index de71ca2e3..000000000 --- a/docker-runner/runner-base.Dockerfile +++ /dev/null @@ -1,11 +0,0 @@ -FROM golang:1.9 -# Base image that already has the pre-requisites downloaded. - -WORKDIR /go/src/github.com/zmap - -RUN go-wrapper download github.com/zmap/zgrab2 - -WORKDIR /go/src/github.com/zmap/zgrab2 - -RUN go get -v ./... -RUN go get -v -t ./... diff --git a/go.mod b/go.mod index f9bbc2951..4b5cb0421 100644 --- a/go.mod +++ b/go.mod @@ -1,21 +1,35 @@ module github.com/zmap/zgrab2 -go 1.12 +go 1.20 require ( - github.com/RumbleDiscovery/jarm-go v0.0.6 // indirect - github.com/golang/protobuf v1.5.2 // indirect - github.com/prometheus/client_golang v1.10.0 - github.com/prometheus/common v0.20.0 // indirect - github.com/sirupsen/logrus v1.8.1 - github.com/zmap/rc2 v0.0.0-20190804163417-abaa70531248 // indirect - github.com/zmap/zcrypto v0.0.0-20210331113710-23c79953ef34 + github.com/hdm/jarm-go v0.0.7 + github.com/prometheus/client_golang v1.20.5 + github.com/rabbitmq/amqp091-go v1.9.0 + github.com/sirupsen/logrus v1.9.0 + github.com/zmap/zcrypto v0.0.0-20230310154051-c8b263fd8300 github.com/zmap/zflags v1.4.0-beta.1.0.20200204220219-9d95409821b6 - golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2 - golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4 - golang.org/x/sys v0.0.0-20210403161142-5e06dd20ab57 - golang.org/x/text v0.3.6 - gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 + golang.org/x/crypto v0.31.0 + golang.org/x/net v0.26.0 + golang.org/x/sys v0.28.0 + golang.org/x/text v0.21.0 + gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c gopkg.in/mgo.v2 v2.0.0-20190816093944-a6b53ec6cb22 gopkg.in/yaml.v2 v2.4.0 ) + +require ( + github.com/beorn7/perks v1.0.1 // indirect + github.com/cespare/xxhash/v2 v2.3.0 // indirect + github.com/klauspost/compress v1.17.9 // indirect + github.com/kr/pretty v0.3.1 // indirect + github.com/kr/text v0.2.0 // indirect + github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect + github.com/prometheus/client_model v0.6.1 // indirect + github.com/prometheus/common v0.55.0 // indirect + github.com/prometheus/procfs v0.15.1 // indirect + github.com/rogpeppe/go-internal v1.10.0 // indirect + github.com/weppos/publicsuffix-go v0.30.0 // indirect + github.com/zmap/rc2 v0.0.0-20190804163417-abaa70531248 // indirect + google.golang.org/protobuf v1.34.2 // indirect +) diff --git a/go.sum b/go.sum index bd1a7e358..b8cd4db1a 100644 --- a/go.sum +++ b/go.sum @@ -1,489 +1,169 @@ -cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= -github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0= -github.com/RumbleDiscovery/jarm-go v0.0.6 h1:n3JEmOhPyfhmu1aeDEK/10Y2F+GMUYrtGFZmp4Yj0s4= -github.com/RumbleDiscovery/jarm-go v0.0.6/go.mod h1:dXV7z5vBXQI0cNaHXwzGtq2PJ2LgM3XgcFiX32FU3bg= github.com/RumbleDiscovery/rumble-tools v0.0.0-20201105153123-f2adbb3244d2/go.mod h1:jD2+mU+E2SZUuAOHZvZj4xP4frlOo+N/YrXDvASFhkE= -github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo= -github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMxUHB2q5Ap20/P/eIdh4G0pI= -github.com/VividCortex/gohistogram v1.0.0/go.mod h1:Pf5mBqqDxYaXu3hDrrU+w6nw50o/4+TcAqDqk/vUH7g= -github.com/afex/hystrix-go v0.0.0-20180502004556-fa1af6a1f4f5/go.mod h1:SkGFH1ia65gfNATL8TAiHDNxPzPdmEL5uirI2Uyuz6c= -github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= -github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= -github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= -github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= -github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho= -github.com/apache/thrift v0.12.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= -github.com/apache/thrift v0.13.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= -github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= -github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= -github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= -github.com/aryann/difflib v0.0.0-20170710044230-e206f873d14a/go.mod h1:DAHtR1m6lCRdSC2Tm3DSWRPvIPr6xNKyeHdqDQSQT+A= -github.com/aws/aws-lambda-go v1.13.3/go.mod h1:4UKl9IzQMoD+QF79YdCuzCwp8VbmG4VAQwij/eHl5CU= -github.com/aws/aws-sdk-go v1.27.0/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= -github.com/aws/aws-sdk-go-v2 v0.18.0/go.mod h1:JWVYvqSMppoMJC0x5wdwiImzgXTI9FuZwxzkQq9wy+g= -github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= -github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= -github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= -github.com/casbin/casbin/v2 v2.1.2/go.mod h1:YcPU1XXisHhLzuxH9coDNf2FbKpjGlbCg3n9yuLkIJQ= -github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= -github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= -github.com/cespare/xxhash/v2 v2.1.1 h1:6MnRN8NT7+YBpUIWxHtefFZOKTAPgGjpQSxqLNn0+qY= -github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= -github.com/clbanning/x2j v0.0.0-20191024224557-825249438eec/go.mod h1:jMjuTZXRI4dUb/I5gc9Hdhagfvm9+RyrPryS/auMzxE= -github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= -github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8= -github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI= -github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= -github.com/coreos/go-systemd v0.0.0-20180511133405-39ca1b05acc7/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= -github.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= -github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= -github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= +github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= +github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= -github.com/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= -github.com/eapache/go-resiliency v1.1.0/go.mod h1:kFI+JgMyC7bLPUVY133qvEBtVayf5mFgVsvEsIPBvNs= -github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21/go.mod h1:+020luEh2TKB4/GOp8oxxtq0Daoen/Cii55CzbTV6DU= -github.com/eapache/queue v1.1.0/go.mod h1:6eCeP0CKFpHLu8blIFXhExK/dRa7WDZfr6jVFPTqq+I= -github.com/edsrzf/mmap-go v1.0.0/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M= -github.com/envoyproxy/go-control-plane v0.6.9/go.mod h1:SBwIajubJHhxtWwsL9s8ss4safvEdbitLhGGK48rN6g= -github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= -github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= -github.com/franela/goblin v0.0.0-20200105215937-c9ffbefa60db/go.mod h1:7dvUGVsVBjqR7JHJk0brhHOZYGmfBYOrK0ZhYMEtBr4= -github.com/franela/goreq v0.0.0-20171204163338-bcd34c9993f8/go.mod h1:ZhphrRTfi2rbfLwlschooIH4+wKKDR4Pdxhh+TRoA20= -github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= -github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= -github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= -github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= -github.com/go-kit/kit v0.10.0/go.mod h1:xUsJbQ/Fp4kEt7AFgCuvyX4a71u8h9jB8tj/ORgOZ7o= -github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= -github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= -github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= -github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= -github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= github.com/gofrs/uuid v3.3.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= -github.com/gogo/googleapis v1.1.0/go.mod h1:gf4bu3Q80BeJ6H1S1vYPm8/ELATdvryBaNFGgqEef3s= -github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= -github.com/gogo/protobuf v1.2.0/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= -github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= -github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= -github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= -github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.2 h1:6nsPYzhq5kReh6QImI3k5qWzO4PEbvbIW2cwSfR/6xs= -github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= -github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= -github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= -github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= -github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= -github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= -github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= -github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= -github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw= -github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= -github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= -github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= -github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= -github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= -github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= -github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= -github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= -github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= -github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg= -github.com/gorilla/mux v1.6.2/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= -github.com/gorilla/mux v1.7.3/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= -github.com/gorilla/websocket v0.0.0-20170926233335-4201258b820c/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= -github.com/grpc-ecosystem/go-grpc-middleware v1.0.1-0.20190118093823-f849b5445de4/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= -github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= -github.com/grpc-ecosystem/grpc-gateway v1.9.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= -github.com/hashicorp/consul/api v1.3.0/go.mod h1:MmDNSzIMUjNpY/mQ398R4bk2FnqQLoPndWW5VkKPlCE= -github.com/hashicorp/consul/sdk v0.3.0/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= -github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= -github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= -github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= -github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= -github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= -github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU= -github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU= -github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4= -github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= -github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= -github.com/hashicorp/go-version v1.2.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= -github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA0oac0k90= -github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= -github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= -github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= -github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0mNTz8vQ= -github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I= -github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc= -github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= -github.com/hudl/fargo v1.3.0/go.mod h1:y3CKSmjA+wD2gak7sUSXTAoopbhU08POFhmITJgmKTg= -github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= -github.com/influxdata/influxdb1-client v0.0.0-20191209144304-8bf82d3c094d/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo= -github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= -github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= -github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4= -github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= -github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -github.com/json-iterator/go v1.1.8/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= -github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= -github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= -github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= -github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= -github.com/konsorten/go-windows-terminal-sequences v1.0.1 h1:mweAR1A6xJ3oS2pRaGiHgQ4OO8tzTaLawm8vnODuwDk= +github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= +github.com/google/go-github v17.0.0+incompatible/go.mod h1:zLgOLi98H3fifZn+44m+umXrS52loVEgC2AApnigrVQ= +github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck= +github.com/hdm/jarm-go v0.0.7 h1:Eq0geenHrBSYuKrdVhrBdMMzOmA+CAMLzN2WrF3eL6A= +github.com/hdm/jarm-go v0.0.7/go.mod h1:kinGoS0+Sdn1Rr54OtanET5E5n7AlD6T6CrJAKDjJSQ= +github.com/klauspost/compress v1.17.9 h1:6KIumPrER1LHsvBVuDa0r5xaG0Es51mhhB9BQB2qeMA= +github.com/klauspost/compress v1.17.9/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= -github.com/konsorten/go-windows-terminal-sequences v1.0.3 h1:CE8S1cTafDpPvMhIxNJKvHsGVBgn1xWYf1NbHQhywc8= github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= -github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= -github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= +github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= +github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= -github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= -github.com/lightstep/lightstep-tracer-common/golang/gogo v0.0.0-20190605223551-bc2310a04743/go.mod h1:qklhhLq1aX+mtWk9cPHPzaBjWImj5ULL6C7HFJtXQMM= -github.com/lightstep/lightstep-tracer-go v0.18.1/go.mod h1:jlF1pusYV4pidLvZ+XD0UBX0ZE6WURAspgAczcDHrL4= -github.com/lyft/protoc-gen-validate v0.0.13/go.mod h1:XbGvPuh87YZc5TdIa2/I4pLk0QoUACkjt2znoq26NVQ= -github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= -github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= -github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= -github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= -github.com/matttproud/golang_protobuf_extensions v1.0.1 h1:4hp9jkHxhMHkqkrB3Ix0jegS5sx/RkqARlsWZ6pIwiU= -github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= -github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= +github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= +github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= +github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= github.com/miekg/dns v1.1.35/go.mod h1:KNUDUusw/aVsxyTYZM1oqvCicbwhgbNgztCETuNZ7xM= -github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= -github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= -github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= -github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS42BGNg= -github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0QubkSMEySY= -github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= -github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= -github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= -github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= -github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= -github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/mreiferson/go-httpclient v0.0.0-20160630210159-31f0106b4474/go.mod h1:OQA4XLvDbMgS8P0CevmM4m9Q3Jq4phKUzcocxuGJ5m8= -github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= -github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= -github.com/nats-io/jwt v0.3.0/go.mod h1:fRYCDE99xlTsqUzISS1Bi75UBJ6ljOJQOAAu5VglpSg= -github.com/nats-io/jwt v0.3.2/go.mod h1:/euKqTS1ZD+zzjYrY7pseZrTtWQSjujC7xjPc8wL6eU= -github.com/nats-io/nats-server/v2 v2.1.2/go.mod h1:Afk+wRZqkMQs/p45uXdrVLuab3gwv3Z8C4HTBu8GD/k= -github.com/nats-io/nats.go v1.9.1/go.mod h1:ZjDU1L/7fJ09jvUSRVBR2e7+RnLiiIQyqyzEE/Zbp4w= -github.com/nats-io/nkeys v0.1.0/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= -github.com/nats-io/nkeys v0.1.3/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= -github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c= -github.com/oklog/oklog v0.3.2/go.mod h1:FCV+B7mhrz4o+ueLpx+KqkyXRGMWOYEvfiXtdGtbWGs= -github.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQA= -github.com/olekukonko/tablewriter v0.0.0-20170122224234-a0225b3f23b5/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= -github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= +github.com/mreiferson/go-httpclient v0.0.0-20201222173833-5e475fde3a4d/go.mod h1:OQA4XLvDbMgS8P0CevmM4m9Q3Jq4phKUzcocxuGJ5m8= +github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= +github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk= -github.com/opentracing-contrib/go-observer v0.0.0-20170622124052-a52f23424492/go.mod h1:Ngi6UdF0k5OKD5t5wlmGhe/EDKPoUM3BXZSSfIuJbis= -github.com/opentracing/basictracer-go v1.0.0/go.mod h1:QfBfYuafItcjQuMwinw9GhYKwFXS9KnPs5lxoYwgW74= -github.com/opentracing/opentracing-go v1.0.2/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= -github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= -github.com/openzipkin-contrib/zipkin-go-opentracing v0.4.5/go.mod h1:/wsWhb9smxSfWAKL3wpBW7V8scJMt8N8gnaMCS9E/cA= -github.com/openzipkin/zipkin-go v0.1.6/go.mod h1:QgAqvLzwWbR/WpD4A3cGpPtJrZXNIiJc5AZX7/PBEpw= -github.com/openzipkin/zipkin-go v0.2.1/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4= -github.com/openzipkin/zipkin-go v0.2.2/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4= -github.com/pact-foundation/pact-go v1.0.4/go.mod h1:uExwJY4kCzNPcHRj+hCR/HBbOOIwwtUjcrb0b5/5kLM= -github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= -github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k= -github.com/performancecopilot/speed v3.0.0+incompatible/go.mod h1:/CLtqpZ5gBg1M9iaPbIdPPGyKcA8hKdoy6hAWba7Yac= -github.com/pierrec/lz4 v1.0.2-0.20190131084431-473cd7ce01a1/go.mod h1:3/3N9NVKO0jef7pBehbT1qWhCMrIgbYNnFAZCqQ5LRc= -github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= -github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pkg/profile v1.2.1/go.mod h1:hJw3o1OdXxsrSjjVksARp5W95eeEaEfptyVZyv6JUPA= +github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= -github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= -github.com/prometheus/client_golang v0.9.3-0.20190127221311-3c4408c8b829/go.mod h1:p2iRAGwDERtqlqzRXnrOVns+ignqQo//hLXqYxZYVNs= -github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= -github.com/prometheus/client_golang v1.1.0 h1:BQ53HtBmfOitExawJ6LokA4x8ov/z0SYYb0+HxJfRI8= -github.com/prometheus/client_golang v1.1.0/go.mod h1:I1FGZT9+L76gKKOs5djB6ezCbFQP1xR9D75/vuwEF3g= -github.com/prometheus/client_golang v1.3.0/go.mod h1:hJaj2vgQTGQmVCsAACORcieXFeDPbaTKGT+JTgUa3og= -github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= -github.com/prometheus/client_golang v1.10.0 h1:/o0BDeWzLWXNZ+4q5gXltUvaMpJqckTa+jTNoB+z4cg= -github.com/prometheus/client_golang v1.10.0/go.mod h1:WJM3cc3yu7XKBKa/I8WeZm+V3eltZnBwfENSU7mdogU= -github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= -github.com/prometheus/client_model v0.0.0-20190115171406-56726106282f/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= -github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90 h1:S/YWwWx/RA8rT8tKFRuGUZhuA90OyIBpPCXkcbwU8DE= -github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/client_model v0.1.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/client_model v0.2.0 h1:uq5h0d+GuxiXLJLNABMgp2qUWDPiLvgCzz2dUR+/W/M= -github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/common v0.2.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= -github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= -github.com/prometheus/common v0.6.0 h1:kRhiuYSXR3+uv2IbVbZhUxK5zVD/2pp3Gd2PpvPkpEo= -github.com/prometheus/common v0.6.0/go.mod h1:eBmuwkDJBwy6iBfxCBob6t6dR6ENT/y+J+Zk0j9GMYc= -github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt26CguLLsqA= -github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= -github.com/prometheus/common v0.18.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s= -github.com/prometheus/common v0.20.0 h1:pfeDeUdQcIxOMutNjCejsEFp7qeP+/iltHSSmLpE+hU= -github.com/prometheus/common v0.20.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s= -github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= -github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= -github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= -github.com/prometheus/procfs v0.0.3 h1:CTwfnzjQ+8dS6MhHHu4YswVAD99sL2wjPqP+VkURmKE= -github.com/prometheus/procfs v0.0.3/go.mod h1:4A/X28fw3Fc593LaREMrKMqOKvUAntwMDaekg4FpcdQ= -github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= -github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= -github.com/prometheus/procfs v0.6.0 h1:mxy4L2jP6qMonqmq+aTtOx1ifVWUgG/TAmntgbh3xv4= -github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= -github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= -github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= -github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= -github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= -github.com/samuel/go-zookeeper v0.0.0-20190923202752-2cc03de413da/go.mod h1:gi+0XIa01GRL2eRQVjQkKGqKF3SF9vZR/HnPullcV2E= -github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= -github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= -github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= +github.com/prometheus/client_golang v1.20.5 h1:cxppBPuYhUnsO6yo/aoRol4L7q7UFfdm+bR9r+8l63Y= +github.com/prometheus/client_golang v1.20.5/go.mod h1:PIEt8X02hGcP8JWbeHyeZ53Y/jReSnHgO035n//V5WE= +github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E= +github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= +github.com/prometheus/common v0.55.0 h1:KEi6DK7lXW/m7Ig5i47x0vRzuBsHuvJdi5ee6Y3G1dc= +github.com/prometheus/common v0.55.0/go.mod h1:2SECS4xJG1kd8XF9IcM1gMX6510RAEL65zxzNImwdc8= +github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc= +github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk= +github.com/rabbitmq/amqp091-go v1.9.0 h1:qrQtyzB4H8BQgEuJwhmVQqVHB9O4+MNDJCCAcpc3Aoo= +github.com/rabbitmq/amqp091-go v1.9.0/go.mod h1:+jPrT9iY2eLjRaMSRHUhc3z14E/l85kv/f+6luSD3pc= +github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= +github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ= +github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog= github.com/sirupsen/logrus v1.3.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= -github.com/sirupsen/logrus v1.4.2 h1:SPIRibHv4MatM3XXNO2BJeFLZwZ2LvZgfQ5+UNI2im4= -github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= -github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88= github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= -github.com/sirupsen/logrus v1.8.1 h1:dJKuHgqk1NNQlqoA6BTlM1Wf9DOH3NBjQyu0h9+AZZE= -github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= -github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= -github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= -github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= -github.com/sony/gobreaker v0.4.1/go.mod h1:ZKptC7FHNvhBz7dN2LGjPVBz2sZJmc0/PkyDJOjmxWY= -github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= -github.com/spf13/pflag v1.0.1/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= -github.com/streadway/amqp v0.0.0-20190404075320-75d898a42a94/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= -github.com/streadway/amqp v0.0.0-20190827072141-edfb9018d271/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= -github.com/streadway/handy v0.0.0-20190108123426-d5acb3125c2a/go.mod h1:qNTQ5P5JnDBl6z3cMAg/SywNDC5ABu5ApDIw6lUbRmI= +github.com/sirupsen/logrus v1.9.0 h1:trlNQbNUG3OdDrDil03MCb1H2o9nJ1x4/5LYw7byDE0= +github.com/sirupsen/logrus v1.9.0/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= -github.com/stretchr/testify v1.3.0 h1:TivCn/peBQ7UY8ooIcPgZFpTNSz0Q2U6UrFlUfqbe0Q= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= -github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= -github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= -github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= -github.com/weppos/publicsuffix-go v0.4.0 h1:YSnfg3V65LcCFKtIGKGoBhkyKolEd0hlipcXaOjdnQw= -github.com/weppos/publicsuffix-go v0.4.0/go.mod h1:z3LCPQ38eedDQSwmsSRW4Y7t2L8Ln16JPQ02lHAdn5k= -github.com/weppos/publicsuffix-go v0.13.1-0.20210331065111-e81257c67567 h1:FLYs2zckqHm2ZGYVgDZlrTG8HjJuNDddIRy0jKIzU1E= -github.com/weppos/publicsuffix-go v0.13.1-0.20210331065111-e81257c67567/go.mod h1:HYux0V0Zi04bHNwOHy4cXJVz/TQjYonnF6aoYhj+3QE= -github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= -github.com/zmap/rc2 v0.0.0-20131011165748-24b9757f5521 h1:kKCF7VX/wTmdg2ZjEaqlq99Bjsoiz7vH6sFniF/vI4M= +github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= +github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= +github.com/weppos/publicsuffix-go v0.12.0/go.mod h1:z3LCPQ38eedDQSwmsSRW4Y7t2L8Ln16JPQ02lHAdn5k= +github.com/weppos/publicsuffix-go v0.13.0/go.mod h1:z3LCPQ38eedDQSwmsSRW4Y7t2L8Ln16JPQ02lHAdn5k= +github.com/weppos/publicsuffix-go v0.30.0 h1:QHPZ2GRu/YE7cvejH9iyavPOkVCB4dNxp2ZvtT+vQLY= +github.com/weppos/publicsuffix-go v0.30.0/go.mod h1:kBi8zwYnR0zrbm8RcuN1o9Fzgpnnn+btVN8uWPMyXAY= +github.com/weppos/publicsuffix-go/publicsuffix/generator v0.0.0-20220927085643-dc0d00c92642/go.mod h1:GHfoeIdZLdZmLjMlzBftbTDntahTttUMWjxZwQJhULE= +github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= github.com/zmap/rc2 v0.0.0-20131011165748-24b9757f5521/go.mod h1:3YZ9o3WnatTIZhuOtot4IcUfzoKVjUHqu6WALIyI0nE= github.com/zmap/rc2 v0.0.0-20190804163417-abaa70531248 h1:Nzukz5fNOBIHOsnP+6I79kPx3QhLv8nBy2mfFhBRq30= github.com/zmap/rc2 v0.0.0-20190804163417-abaa70531248/go.mod h1:3YZ9o3WnatTIZhuOtot4IcUfzoKVjUHqu6WALIyI0nE= github.com/zmap/zcertificate v0.0.0-20180516150559-0e3d58b1bac4/go.mod h1:5iU54tB79AMBcySS0R2XIyZBAVmeHranShAFELYx7is= -github.com/zmap/zcrypto v0.0.0-20200508204656-27de22294d44 h1:Nj6ai45vjEtu1gvYig3lm8BAWbVgp4hnJ5qSsAc1Nps= -github.com/zmap/zcrypto v0.0.0-20200508204656-27de22294d44/go.mod h1:TxpejqcVKQjQaVVmMGfzx5HnmFMdIU+vLtaCyPBfGI4= -github.com/zmap/zcrypto v0.0.0-20210331113710-23c79953ef34 h1:UPOTdCVa20EU0wZmm3uy/nVfiNinshKrOnras2qTtjo= -github.com/zmap/zcrypto v0.0.0-20210331113710-23c79953ef34/go.mod h1:J/LL3Pv9cqgWsRZ5xsZSxj5O4nVKL63ASHm4k6KTc/Y= -github.com/zmap/zflags v1.4.0-beta.1 h1:jzZ+wKTCksS/ltf9q19gYJ6zJuqRULuRdSWBPueEiZ8= -github.com/zmap/zflags v1.4.0-beta.1/go.mod h1:HXDUD+uue8yeLHr0eXx1lvY6CvMiHbTKw5nGmA9OUoo= +github.com/zmap/zcertificate v0.0.1/go.mod h1:q0dlN54Jm4NVSSuzisusQY0hqDWvu92C+TWveAxiVWk= +github.com/zmap/zcrypto v0.0.0-20201128221613-3719af1573cf/go.mod h1:aPM7r+JOkfL+9qSB4KbYjtoEzJqUK50EXkkJabeNJDQ= +github.com/zmap/zcrypto v0.0.0-20201211161100-e54a5822fb7e/go.mod h1:aPM7r+JOkfL+9qSB4KbYjtoEzJqUK50EXkkJabeNJDQ= +github.com/zmap/zcrypto v0.0.0-20230310154051-c8b263fd8300 h1:DZH5n7L3L8RxKdSyJHZt7WePgwdhHnPhQFdQSJaHF+o= +github.com/zmap/zcrypto v0.0.0-20230310154051-c8b263fd8300/go.mod h1:mOd4yUMgn2fe2nV9KXsa9AyQBFZGzygVPovsZR+Rl5w= github.com/zmap/zflags v1.4.0-beta.1.0.20200204220219-9d95409821b6 h1:XYA+NN2AS4mRmIDVu2nCtrjU17zKlRihO3MnlcmueUw= github.com/zmap/zflags v1.4.0-beta.1.0.20200204220219-9d95409821b6/go.mod h1:HXDUD+uue8yeLHr0eXx1lvY6CvMiHbTKw5nGmA9OUoo= -go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= -go.etcd.io/etcd v0.0.0-20191023171146-3cf2f69b5738/go.mod h1:dnLIgRNXwCJa5e+c6mIZCrds/GIG4ncV9HhK5PX7jPg= -go.opencensus.io v0.20.1/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= -go.opencensus.io v0.20.2/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= -go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= -go.uber.org/atomic v1.5.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= -go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= -go.uber.org/multierr v1.3.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4= -go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA= -go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= -go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= +github.com/zmap/zlint/v3 v3.0.0/go.mod h1:paGwFySdHIBEMJ61YjoqT4h7Ge+fdYG4sUQhnTb1lJ8= +go.uber.org/goleak v1.2.1 h1:NBol2c7O1ZokfZ0LEU9K6Whx/KnwvepVetCUhtKja4A= +go.uber.org/goleak v1.2.1/go.mod h1:qlT2yGI9QafXHhZZLxlSuNsMw3FFLxBr+tBRlmO1xH4= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190911031432-227b76d455e7 h1:0hQKqeLdqlt5iIwVOBErRisrHJAN57yOiPRQItI20fU= -golang.org/x/crypto v0.0.0-20190911031432-227b76d455e7/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200510223506-06a226fb4e37/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20201124201722-c8d3bf9c5392/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= -golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2 h1:It14KIkyBFYkHkwZ7k45minvA9aorojkyjGk9KJ5B/w= -golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= -golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= -golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= -golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= -golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= +golang.org/x/crypto v0.0.0-20201208171446-5f87f3452ae9/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= +golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= +golang.org/x/crypto v0.31.0 h1:ihbySMvVjLAeSH1IbfcRTkD/iNscyz8rGzjF/E5hV6U= +golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= -golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181023162649-9b4f9f5ad519/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181201002055-351d144fa1fc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190125091013-d26f9f9a57f3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= +golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= -golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190912160710-24e19bdeb0f2 h1:4dVFTC832rPn4pomLSz1vA+are2+dU19w1H8OngV7nc= -golang.org/x/net v0.0.0-20190912160710-24e19bdeb0f2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190923162816-aa69164e4478/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200528225125-3c3fba18258b/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4 h1:4nGaVu0QrbjT/AK2PRLuQfQuh6DJve+pELhqTdAj3x0= -golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= -golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= -golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= +golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= +golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= +golang.org/x/net v0.26.0 h1:soB7SVo0PWrY4vPW/+ay0jKDNScG2X9wFeYlXIvJsOQ= +golang.org/x/net v0.26.0/go.mod h1:5YKkiSynbBIh3p6iOc/vibscux0x38BZDkn8sCUPxHE= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181026203630-95b1ffbd15a5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181122145206-62eef0e2fa9b/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190801041406-cbf593c0f2f3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190913121621-c3b328c6e5a7 h1:wYqz/tQaWUgGKyx+B/rssSE6wkIKdY5Ee6ryOmzarIg= -golang.org/x/sys v0.0.0-20190913121621-c3b328c6e5a7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190924154521-2837fb4f24fe/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191220142924-d4481acd189f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210309074719-68d13333faf2/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210403161142-5e06dd20ab57 h1:F5Gozwx4I1xtr/sr/8CFbb57iKi3297KFs0QDbGN60A= -golang.org/x/sys v0.0.0-20210403161142-5e06dd20ab57/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201126233918-771906719818/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA= +golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= +golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs= -golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.6 h1:aRYxNxv6iGQlyVaZmk6ZgYEDa+Jg18DxebPSrd6bg1M= -golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= +golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= +golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= +golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= -golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191216052735-49a3e744a425/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200103221440-774c71fcf114/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= +golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/api v0.3.1/go.mod h1:6wY9I6uQWHQ8EM57III9mq/AjF+i8G65rmVagqKMtkk= -google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= -google.golang.org/appengine v1.2.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= -google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= -google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= -google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190530194941-fb225487d101/go.mod h1:z3L6/3dTEVtUr6QSP8miRzeRqwQOioJ9I66odjN4I7s= -google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= -google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= -google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= -google.golang.org/grpc v1.20.0/go.mod h1:chYK+tFQF0nDUGJgXMSgLCQk3phJEuONr2DCgLDdAQM= -google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= -google.golang.org/grpc v1.21.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= -google.golang.org/grpc v1.22.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= -google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= -google.golang.org/grpc v1.23.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= -google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= -google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= -google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= -google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= -google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= -google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= -google.golang.org/protobuf v1.26.0 h1:bxAC2xTBsZGibn2RTntX0oH50xLsqy1OxA9tTL3p/lk= -google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= +google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg= +google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo= -gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/cheggaaa/pb.v1 v1.0.25/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= -gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= -gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= -gopkg.in/gcfg.v1 v1.2.3/go.mod h1:yesOnuUOFQAhST5vPY4nbZsb/huCgGGXlipJsBn0b3o= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= gopkg.in/mgo.v2 v2.0.0-20190816093944-a6b53ec6cb22 h1:VpOs+IwYnYBaFnrNAeB8UUWtL3vEUnzSCL1nVjPhqrw= gopkg.in/mgo.v2 v2.0.0-20190816093944-a6b53ec6cb22/go.mod h1:yeKp02qBN3iKW1OzL3MGk2IdtZzaj7SFntXj72NppTA= -gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= -gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= -gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI= -gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= -gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= -honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= -sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= -sourcegraph.com/sourcegraph/appdash v0.0.0-20190731080439-ebfcffb1b5c0/go.mod h1:hI742Nqp5OhwiqlzhgfbWU4mW4yO10fP+LoT9WOswdU= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/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/input.go b/input.go index 883056024..d3640004d 100644 --- a/input.go +++ b/input.go @@ -5,29 +5,31 @@ import ( "fmt" "io" "net" + "strconv" "strings" log "github.com/sirupsen/logrus" ) // ParseCSVTarget takes a record from a CSV-format input file and -// returns the specified ipnet, domain, and tag, or an error. +// returns the specified ipnet, domain, tag and port or an error. // -// ZGrab2 input files have three fields: -// IP, DOMAIN, TAG +// ZGrab2 input files have four fields: +// +// IP, DOMAIN, TAG, PORT // // Each line specifies a target to scan by its IP address, domain -// name, or both, as well as an optional tag used to determine which +// name or both, as well as an optional tag used to determine which // scanners will be invoked. // +// Port number has been added to the end of the line for compatibility reasons. // A CIDR block may be provided in the IP field, in which case the // framework expands the record into targets for every address in the // block. // // Trailing empty fields may be omitted. // Comment lines begin with #, and empty lines are ignored. -// -func ParseCSVTarget(fields []string) (ipnet *net.IPNet, domain string, tag string, err error) { +func ParseCSVTarget(fields []string) (ipnet *net.IPNet, domain string, tag string, port string, err error) { for i := range fields { fields[i] = strings.TrimSpace(fields[i]) } @@ -47,7 +49,11 @@ func ParseCSVTarget(fields []string) (ipnet *net.IPNet, domain string, tag strin if len(fields) > 2 { tag = fields[2] } + // Use string for port to allow empty port if len(fields) > 3 { + port = fields[3] + } + if len(fields) > 4 { err = fmt.Errorf("too many fields: %q", fields) return } @@ -102,24 +108,41 @@ func GetTargetsCSV(source io.Reader, ch chan<- ScanTarget) error { if len(fields) == 0 { continue } - ipnet, domain, tag, err := ParseCSVTarget(fields) + ipnet, domain, tag, port, err := ParseCSVTarget(fields) if err != nil { log.Errorf("parse error, skipping: %v", err) continue } var ip net.IP + var port_uint uint + if port != "" { + port_int, err := strconv.Atoi(port) + port_uint = uint(port_int) + if err != nil { + log.Errorf("parse error, skipping: %v", err) + continue + } + } if ipnet != nil { if ipnet.Mask != nil { // expand CIDR block into one target for each IP for ip = ipnet.IP.Mask(ipnet.Mask); ipnet.Contains(ip); incrementIP(ip) { - ch <- ScanTarget{IP: duplicateIP(ip), Domain: domain, Tag: tag} + if port == "" { + ch <- ScanTarget{IP: duplicateIP(ip), Domain: domain, Tag: tag} + } else { + ch <- ScanTarget{IP: duplicateIP(ip), Domain: domain, Tag: tag, Port: &port_uint} + } } continue } else { ip = ipnet.IP } } - ch <- ScanTarget{IP: ip, Domain: domain, Tag: tag} + if port == "" { + ch <- ScanTarget{IP: ip, Domain: domain, Tag: tag} + } else { + ch <- ScanTarget{IP: ip, Domain: domain, Tag: tag, Port: &port_uint} + } } return nil } diff --git a/input_test.go b/input_test.go index 892cef169..d9c8e3199 100644 --- a/input_test.go +++ b/input_test.go @@ -39,8 +39,27 @@ func TestParseCSVTarget(t *testing.T) { ipnet *net.IPNet domain string tag string + port string success bool }{ + // IP DOMAIN TAG PORT + { + fields: []string{"10.0.0.1", "example.com", "tag", "443"}, + ipnet: parseIP("10.0.0.1"), + domain: "example.com", + tag: "tag", + port: "443", + success: true, + }, + // IP DOMAIN TAG PORT + { + fields: []string{"10.0.0.1", "example.com", "tag"}, + ipnet: parseIP("10.0.0.1"), + domain: "example.com", + tag: "tag", + port: "", + success: true, + }, // IP DOMAIN TAG { fields: []string{"10.0.0.1", "example.com", "tag"}, @@ -129,14 +148,14 @@ func TestParseCSVTarget(t *testing.T) { } for _, test := range tests { - ipnet, domain, tag, err := ParseCSVTarget(test.fields) + ipnet, domain, tag, port, err := ParseCSVTarget(test.fields) if (err == nil) != test.success { t.Errorf("wrong error status (got err=%v, success should be %v): %q", err, test.success, test.fields) return } if err == nil { - if ipnetString(ipnet) != ipnetString(test.ipnet) || domain != test.domain || tag != test.tag { - t.Errorf("wrong result (got %v,%v,%v; expected %v,%v,%v): %q", ipnetString(ipnet), domain, tag, ipnetString(test.ipnet), test.domain, test.tag, test.fields) + if ipnetString(ipnet) != ipnetString(test.ipnet) || domain != test.domain || tag != test.tag || port != test.port { + t.Errorf("wrong result (got %v,%v,%v,%v ; expected %v,%v,%v,%v): %q", ipnetString(ipnet), domain, tag, port, ipnetString(test.ipnet), test.domain, test.tag, test.port, test.fields) return } } @@ -150,18 +169,23 @@ func TestGetTargetsCSV(t *testing.T) { 10.0.0.1 ,example.com example.com -2.2.2.2/30,, tag` - +2.2.2.2/30,, tag +10.0.0.1,example.com,tag,443 +10.0.0.1,,,443 +` + port := uint(443) expected := []ScanTarget{ - ScanTarget{IP: net.ParseIP("10.0.0.1"), Domain: "example.com", Tag: "tag"}, - ScanTarget{IP: net.ParseIP("10.0.0.1"), Domain: "example.com"}, - ScanTarget{IP: net.ParseIP("10.0.0.1")}, - ScanTarget{Domain: "example.com"}, - ScanTarget{Domain: "example.com"}, - ScanTarget{IP: net.ParseIP("2.2.2.0"), Tag: "tag"}, - ScanTarget{IP: net.ParseIP("2.2.2.1"), Tag: "tag"}, - ScanTarget{IP: net.ParseIP("2.2.2.2"), Tag: "tag"}, - ScanTarget{IP: net.ParseIP("2.2.2.3"), Tag: "tag"}, + {IP: net.ParseIP("10.0.0.1"), Domain: "example.com", Tag: "tag"}, + {IP: net.ParseIP("10.0.0.1"), Domain: "example.com"}, + {IP: net.ParseIP("10.0.0.1")}, + {Domain: "example.com"}, + {Domain: "example.com"}, + {IP: net.ParseIP("2.2.2.0"), Tag: "tag"}, + {IP: net.ParseIP("2.2.2.1"), Tag: "tag"}, + {IP: net.ParseIP("2.2.2.2"), Tag: "tag"}, + {IP: net.ParseIP("2.2.2.3"), Tag: "tag"}, + {IP: net.ParseIP("10.0.0.1"), Domain: "example.com", Tag: "tag", Port: &port}, + {IP: net.ParseIP("10.0.0.1"), Port: &port}, } ch := make(chan ScanTarget, 0) diff --git a/integration_tests/.template/module/scanner.go b/integration_tests/.template/module/scanner.go index f86e60f75..0b582d85c 100644 --- a/integration_tests/.template/module/scanner.go +++ b/integration_tests/.template/module/scanner.go @@ -47,7 +47,7 @@ func RegisterModule() { } // NewFlags returns a default Flags object. -func (module *Module) NewFlags() interface{} { +func (module *Module) NewFlags() any { return new(Flags) } @@ -96,7 +96,7 @@ func (scanner *Scanner) Protocol() string { } // Scan TODO: describe what is scanned -func (scanner *Scanner) Scan(target zgrab2.ScanTarget) (zgrab2.ScanStatus, interface{}, error) { +func (scanner *Scanner) Scan(target zgrab2.ScanTarget) (zgrab2.ScanStatus, any, error) { conn, err := target.Open(&scanner.config.BaseFlags) if err != nil { return zgrab2.TryGetScanStatus(err), nil, err diff --git a/integration_tests/.template/schema.py b/integration_tests/.template/schema.py index 80d8bbd9b..402effd86 100644 --- a/integration_tests/.template/schema.py +++ b/integration_tests/.template/schema.py @@ -7,12 +7,12 @@ import zcrypto_schemas.zcrypto as zcrypto import zgrab2 -#{MODULE_NAME}_scan_response = SubRecord({ - "result": SubRecord({ - # TODO FIXME IMPLEMENT SCHEMA - }) -}, extends=zgrab2.base_scan_response) +# {MODULE_NAME}_scan_response = SubRecord({ +# "result": SubRecord({ +# # TODO FIXME IMPLEMENT SCHEMA +# }) +# }, extends=zgrab2.base_scan_response) -zschema.registry.register_schema("zgrab2-#{MODULE_NAME}", #{MODULE_NAME}_scan_response) +# zschema.registry.register_schema("zgrab2-#{MODULE_NAME}", #{MODULE_NAME}_scan_response) -zgrab2.register_scan_response_type("#{MODULE_NAME}", #{MODULE_NAME}_scan_response) +# zgrab2.register_scan_response_type("#{MODULE_NAME}", #{MODULE_NAME}_scan_response) diff --git a/integration_tests/.template/test.sh b/integration_tests/.template/test.sh index 650cea144..749de495a 100755 --- a/integration_tests/.template/test.sh +++ b/integration_tests/.template/test.sh @@ -2,7 +2,7 @@ set -e MODULE_DIR=$(dirname $0) -ZGRAB_ROOT=$MODULE_DIR/../.. +ZGRAB_ROOT=$(git rev-parse --show-toplevel) ZGRAB_OUTPUT=$ZGRAB_ROOT/zgrab-output mkdir -p $ZGRAB_OUTPUT/#{MODULE_NAME} diff --git a/integration_tests/amqp091/cleanup.sh b/integration_tests/amqp091/cleanup.sh new file mode 100755 index 000000000..4b1ae12b6 --- /dev/null +++ b/integration_tests/amqp091/cleanup.sh @@ -0,0 +1,15 @@ +#!/usr/bin/env bash + +# Keep cleaning up even if something fails +set +e + +# Stop all AMQP containers. + +VERSIONS="3.12.14 3.13.2" + +for version in $VERSIONS; do + CONTAINER_NAME="zgrab_amqp091-$version" + echo "amqp091/cleanup: Stopping $CONTAINER_NAME..." + docker stop $CONTAINER_NAME + echo "amqp091/cleanup: ...stopped." +done diff --git a/integration_tests/amqp091/setup.sh b/integration_tests/amqp091/setup.sh new file mode 100755 index 000000000..ddf52e9c7 --- /dev/null +++ b/integration_tests/amqp091/setup.sh @@ -0,0 +1,37 @@ +#!/bin/bash -e + +VERSIONS="3.12.14 3.13.2" + +function launch() { + VERSION=$1 + CONTAINER_NAME="zgrab_amqp091-$VERSION" + if docker ps --filter "name=$CONTAINER_NAME" | grep -q $CONTAINER_NAME; then + echo "amqp091/setup: Container $CONTAINER_NAME already running -- skipping launch..." + return + fi + docker run -td --rm --name $CONTAINER_NAME rabbitmq:$VERSION +} + +function waitFor() { + VERSION=$1 + CONTAINER_NAME=zgrab_amqp091-$VERSION + echo "amqp091/setup: Waiting for $CONTAINER_NAME to become ready..." + while ! (docker logs --tail all $CONTAINER_NAME | grep -q "started TCP listener on"); do + echo -n "." + sleep 1 + done + for i in $(seq 1 5); do + echo -n "*" + sleep 1 + done + echo "...ok." +} + +echo "amqp091/setup: Launching docker containers..." +for version in $VERSIONS; do + launch $version +done + +for version in $VERSIONS; do + waitFor $version +done diff --git a/integration_tests/amqp091/test.sh b/integration_tests/amqp091/test.sh new file mode 100755 index 000000000..65cdfa2a4 --- /dev/null +++ b/integration_tests/amqp091/test.sh @@ -0,0 +1,60 @@ +#!/usr/bin/env bash +set -e + +VERSIONS="3.12.14 3.13.2" + +# Run the AMQP-specific integration tests: +# 1. Run zgrab2 on the container +# 2. Check that data.amqp091.result.server_properties.version matches $MQ_VERSION + +ZGRAB_ROOT=$(git rev-parse --show-toplevel) +ZGRAB_OUTPUT=$ZGRAB_ROOT/zgrab-output + +status=0 + +function doTest() { + MQ_VERSION=$1 + + SUFFIX="" + AUTH_ARGS="" + if [[ -n "$2" ]]; then + AUTH_ARGS=$2 + SUFFIX="-auth" + fi + CONTAINER_NAME="zgrab_amqp091-${MQ_VERSION}" + OUTPUT_FILE="$ZGRAB_OUTPUT/amqp091/${MQ_VERSION}${SUFFIX}.json" + echo "amqp091/test: Testing RabbitMQ Version ${MQ_VERSION}${SUFFIX}..." + CONTAINER_NAME=$CONTAINER_NAME $ZGRAB_ROOT/docker-runner/docker-run.sh amqp091 $AUTH_ARGS --timeout 10s >$OUTPUT_FILE + SERVER_VERSION=$(jp -u data.amqp091.result.server_properties.version <$OUTPUT_FILE) + if [[ "$SERVER_VERSION" == "$MQ_VERSION" ]]; then + echo "amqp091/test: Server version matches expected version: $SERVER_VERSION == $MQ_VERSION" + else + echo "amqp091/test: Server version mismatch: Got $SERVER_VERSION, expected $MQ_VERSION. Full output: [[" + cat $OUTPUT_FILE + echo "]]" + status=1 + fi + + if [[ -n "$AUTH_ARGS" ]]; then + AUTH_SUCCESS=$(jp -u data.amqp091.result.auth_success <$OUTPUT_FILE) + if [[ "$AUTH_SUCCESS" == "true" ]]; then + echo "amqp091/test: Auth test successful" + else + echo "amqp091/test: Auth test failed" + status=1 + fi + fi + + echo "amqp091/test: BEGIN docker+amqp091 logs from $CONTAINER_NAME [{(" + docker logs --tail all $CONTAINER_NAME + echo ")}] END docker+amqp091 logs from $CONTAINER_NAME" +} + +mkdir -p $ZGRAB_OUTPUT/amqp091 + +for version in $VERSIONS; do + doTest $version + doTest $version "--auth-user guest --auth-pass guest" +done + +exit $status diff --git a/integration_tests/ftp/test.sh b/integration_tests/ftp/test.sh index 2810bef3b..8eb4268bc 100755 --- a/integration_tests/ftp/test.sh +++ b/integration_tests/ftp/test.sh @@ -3,7 +3,7 @@ set -e MODULE_DIR=$(dirname $0) TEST_ROOT=$MODULE_DIR/.. -ZGRAB_ROOT=$MODULE_DIR/../.. +ZGRAB_ROOT=$(git rev-parse --show-toplevel) ZGRAB_OUTPUT=$ZGRAB_ROOT/zgrab-output CONTAINER_NAME="zgrab_ftp" @@ -22,7 +22,7 @@ echo "ftp/test: Testing FTP on $CONTAINER_NAME..." CONTAINER_NAME=$CONTAINER_NAME $ZGRAB_ROOT/docker-runner/docker-run.sh ftp > $OUTPUT_DIR/default.json echo "ftp/test: BEGIN vsftpd logs from $CONTAINER_NAME [{(" -docker exec -t $CONTAINER_NAME cat //var/log/vsftpd.log +docker exec $CONTAINER_NAME cat //var/log/vsftpd.log echo ")}] END vsftpd logs from $CONTAINER_NAME" echo "ftp/test: BEGIN docker logs from $CONTAINER_NAME [{(" diff --git a/integration_tests/http/setup.sh b/integration_tests/http/setup.sh index a69c90cb6..9408b4d8c 100755 --- a/integration_tests/http/setup.sh +++ b/integration_tests/http/setup.sh @@ -20,7 +20,7 @@ fi echo -n "http/setup: Waiting on $CONTAINER_NAME to start..." -while ! docker exec -t $CONTAINER_NAME cat //var/log/lighttpd/error.log | grep -q "server started"; do +while ! docker exec $CONTAINER_NAME cat //var/log/lighttpd/error.log | grep -q "server started"; do echo -n "." done diff --git a/integration_tests/http/test.sh b/integration_tests/http/test.sh index 4604b01ba..9225a1514 100755 --- a/integration_tests/http/test.sh +++ b/integration_tests/http/test.sh @@ -3,7 +3,7 @@ set -e MODULE_DIR=$(dirname $0) TEST_ROOT=$MODULE_DIR/.. -ZGRAB_ROOT=$MODULE_DIR/../.. +ZGRAB_ROOT=$(git rev-parse --show-toplevel) ZGRAB_OUTPUT=$ZGRAB_ROOT/zgrab-output OUTPUT_ROOT=$ZGRAB_OUTPUT/http @@ -29,5 +29,5 @@ docker logs --tail all $CONTAINER_NAME echo ")}] END docker logs from $CONTAINER_NAME" echo "http/test: BEGIN https logs from $CONTAINER_NAME [{(" -docker exec -it $CONTAINER_NAME cat //var/log/lighttpd/error.log +docker exec $CONTAINER_NAME cat //var/log/lighttpd/error.log echo ")}] END docker logs from $CONTAINER_NAME" diff --git a/integration_tests/ipp/test.sh b/integration_tests/ipp/test.sh index 5eca45aa6..823381e34 100755 --- a/integration_tests/ipp/test.sh +++ b/integration_tests/ipp/test.sh @@ -2,7 +2,7 @@ set -e MODULE_DIR=$(dirname $0) -ZGRAB_ROOT=$MODULE_DIR/../.. +ZGRAB_ROOT=$(git rev-parse --show-toplevel) ZGRAB_OUTPUT=$ZGRAB_ROOT/zgrab-output OUTPUT_ROOT=$ZGRAB_OUTPUT/ipp @@ -82,14 +82,14 @@ for version in $versions; do # TODO: If there are any other relevant log files, dump those to stdout here. # FIXME: Only dump these 3 logs if they exist #echo "ipp/test: BEGIN cups logs from $CONTAINER_NAME [{(" - #docker exec -t $CONTAINER_NAME cat //var/log/cups/access_log + #docker exec $CONTAINER_NAME cat //var/log/cups/access_log #echo ")}] END cups logs from $CONTAINER_NAME" #echo "ipp/test: BEGIN cups logs from $CONTAINER_NAME [{(" - #docker exec -t $CONTAINER_NAME cat //var/log/cups/error_log + #docker exec $CONTAINER_NAME cat //var/log/cups/error_log #echo ")}] END cups logs from $CONTAINER_NAME" #echo "ipp/test: BEGIN cups logs from $CONTAINER_NAME [{(" - #docker exec -t $CONTAINER_NAME cat //var/log/cups/page_log + #docker exec $CONTAINER_NAME cat //var/log/cups/page_log #echo ")}] END cups logs from $CONTAINER_NAME" done diff --git a/integration_tests/mongodb/test.sh b/integration_tests/mongodb/test.sh index 4552ef55f..e784357e1 100755 --- a/integration_tests/mongodb/test.sh +++ b/integration_tests/mongodb/test.sh @@ -5,7 +5,7 @@ set -e versions="3.2.20 3.6.6 4.0.1 4.1.2" MODULE_DIR=$(dirname $0) -ZGRAB_ROOT=$MODULE_DIR/../.. +ZGRAB_ROOT=$(git rev-parse --show-toplevel) ZGRAB_OUTPUT=$ZGRAB_ROOT/zgrab-output mkdir -p $ZGRAB_OUTPUT/mongodb diff --git a/integration_tests/mssql/setup.sh b/integration_tests/mssql/setup.sh index 584f4e0d0..a4b7a0c82 100755 --- a/integration_tests/mssql/setup.sh +++ b/integration_tests/mssql/setup.sh @@ -2,8 +2,8 @@ echo "mssql/setup: Tests setup for mssql" -CONTAINER_IMAGE="microsoft/mssql-server-linux" -CONTAINER_VERSION="2017-CU3" +CONTAINER_IMAGE="mcr.microsoft.com/mssql/server" +CONTAINER_VERSION="2017-latest" CONTAINER_NAME="zgrab_mssql-2017-linux" # Supported MSSQL_PRODUCT_ID values are Developer, Express, Standard, Enterprise, EnterpriseCore diff --git a/integration_tests/mssql/test.sh b/integration_tests/mssql/test.sh index 521910fa2..8571dfaf4 100755 --- a/integration_tests/mssql/test.sh +++ b/integration_tests/mssql/test.sh @@ -3,7 +3,7 @@ set -e MODULE_DIR=$(dirname $0) TEST_ROOT=$MODULE_DIR/.. -ZGRAB_ROOT=$MODULE_DIR/../.. +ZGRAB_ROOT=$(git rev-parse --show-toplevel) ZGRAB_OUTPUT=$ZGRAB_ROOT/zgrab-output CONTAINER_NAME="zgrab_mssql-2017-linux" diff --git a/integration_tests/mysql/test.sh b/integration_tests/mysql/test.sh index fe62f468c..ecc0ff585 100755 --- a/integration_tests/mysql/test.sh +++ b/integration_tests/mysql/test.sh @@ -9,7 +9,7 @@ versions="5.5 5.6 5.7 8.0" MODULE_DIR=$(dirname $0) TEST_ROOT=$MODULE_DIR/.. -ZGRAB_ROOT=$MODULE_DIR/../.. +ZGRAB_ROOT=$(git rev-parse --show-toplevel) ZGRAB_OUTPUT=$ZGRAB_ROOT/zgrab-output status=0 diff --git a/integration_tests/ntp/test.sh b/integration_tests/ntp/test.sh index bfc1343e4..a0c8c6357 100755 --- a/integration_tests/ntp/test.sh +++ b/integration_tests/ntp/test.sh @@ -3,7 +3,7 @@ set -e MODULE_DIR=$(dirname $0) TEST_ROOT=$MODULE_DIR/.. -ZGRAB_ROOT=$MODULE_DIR/../.. +ZGRAB_ROOT=$(git rev-parse --show-toplevel) ZGRAB_OUTPUT=$ZGRAB_ROOT/zgrab-output OUTPUT_ROOT=$ZGRAB_OUTPUT/ntp diff --git a/integration_tests/pop3/test.sh b/integration_tests/pop3/test.sh index b28129d0a..56ba5f32d 100755 --- a/integration_tests/pop3/test.sh +++ b/integration_tests/pop3/test.sh @@ -2,7 +2,7 @@ set -e MODULE_DIR=$(dirname $0) -ZGRAB_ROOT=$MODULE_DIR/../.. +ZGRAB_ROOT=$(git rev-parse --show-toplevel) ZGRAB_OUTPUT=$ZGRAB_ROOT/zgrab-output mkdir -p $ZGRAB_OUTPUT/pop3 diff --git a/integration_tests/postgres/setup.sh b/integration_tests/postgres/setup.sh index 454414b58..7d21f44b6 100755 --- a/integration_tests/postgres/setup.sh +++ b/integration_tests/postgres/setup.sh @@ -46,7 +46,7 @@ function waitFor() { fi sleep 1 done - while ! (docker exec -t $CONTAINER_NAME cat //var/lib/postgresql/data/pg_log/postgres.log | grep -q "STARTED; state"); do + while ! (docker exec $CONTAINER_NAME cat //var/lib/postgresql/data/pg_log/postgres.log | grep -q "STARTED; state"); do echo -n "." sleep 1 done diff --git a/integration_tests/postgres/test.sh b/integration_tests/postgres/test.sh index dedb4031b..102a5667c 100755 --- a/integration_tests/postgres/test.sh +++ b/integration_tests/postgres/test.sh @@ -5,7 +5,7 @@ set -e versions="9.3 9.4 9.5 9.6 10.1" types="ssl nossl" -ZGRAB_ROOT=$(dirname $0)/../.. +ZGRAB_ROOT=$(git rev-parse --show-toplevel) ZGRAB_OUTPUT=$ZGRAB_ROOT/zgrab-output mkdir -p $ZGRAB_OUTPUT/postgres @@ -20,7 +20,7 @@ function doTest() { echo ")}] END DOCKER LOGS FROM $CONTAINER_NAME" echo "BEGIN POSTGRES LOGS FROM $CONTAINER_NAME [{(" # TODO: The "//var/lib" is a work-around for MinGW - docker exec -t $CONTAINER_NAME cat //var/lib/postgresql/data/pg_log/postgres.log + docker exec $CONTAINER_NAME cat //var/lib/postgresql/data/pg_log/postgres.log echo ")}] END POSTGRES LOGS FROM $CONTAINER_NAME" } diff --git a/integration_tests/redis/test.sh b/integration_tests/redis/test.sh index 555575a35..18d41b529 100755 --- a/integration_tests/redis/test.sh +++ b/integration_tests/redis/test.sh @@ -2,7 +2,7 @@ set -e MODULE_DIR=$(dirname $0) -ZGRAB_ROOT=$MODULE_DIR/../.. +ZGRAB_ROOT=$(git rev-parse --show-toplevel) ZGRAB_OUTPUT=$ZGRAB_ROOT/zgrab-output # FIXME: Find a way to mount host to container and have it pass CircleCI tests. diff --git a/integration_tests/setup.sh b/integration_tests/setup.sh index e4be6954b..8c1402275 100755 --- a/integration_tests/setup.sh +++ b/integration_tests/setup.sh @@ -12,7 +12,7 @@ set -e # Run from root of project TEST_DIR=$(dirname "$0") -ZGRAB_ROOT="$TEST_DIR/.." +ZGRAB_ROOT=$(git rev-parse --show-toplevel) cd "$ZGRAB_ROOT" echo "Setting up integration tests..." diff --git a/integration_tests/smtp/test.sh b/integration_tests/smtp/test.sh index ad08cad84..37dde58e0 100755 --- a/integration_tests/smtp/test.sh +++ b/integration_tests/smtp/test.sh @@ -2,7 +2,7 @@ set -e MODULE_DIR=$(dirname $0) -ZGRAB_ROOT=$MODULE_DIR/../.. +ZGRAB_ROOT=$(git rev-parse --show-toplevel) ZGRAB_OUTPUT=$ZGRAB_ROOT/zgrab-output mkdir -p $ZGRAB_OUTPUT/smtp diff --git a/integration_tests/ssh/test.sh b/integration_tests/ssh/test.sh index a974df0ee..97abf3e63 100755 --- a/integration_tests/ssh/test.sh +++ b/integration_tests/ssh/test.sh @@ -3,7 +3,7 @@ set -e MODULE_DIR=$(dirname $0) TEST_ROOT=$MODULE_DIR/.. -ZGRAB_ROOT=$MODULE_DIR/../.. +ZGRAB_ROOT=$(git rev-parse --show-toplevel) ZGRAB_OUTPUT=$ZGRAB_ROOT/zgrab-output CONTAINER_NAME="zgrab_ssh" diff --git a/integration_tests/telnet/test.sh b/integration_tests/telnet/test.sh index 153807d2e..75c032674 100755 --- a/integration_tests/telnet/test.sh +++ b/integration_tests/telnet/test.sh @@ -2,7 +2,7 @@ set -e MODULE_DIR=$(dirname $0) -ZGRAB_ROOT=$MODULE_DIR/../.. +ZGRAB_ROOT=$(git rev-parse --show-toplevel) ZGRAB_OUTPUT=$ZGRAB_ROOT/zgrab-output mkdir -p $ZGRAB_OUTPUT/telnet diff --git a/integration_tests/test.sh b/integration_tests/test.sh index 2fdea2a9f..855910233 100755 --- a/integration_tests/test.sh +++ b/integration_tests/test.sh @@ -28,9 +28,7 @@ set -o pipefail # # Run from root of project -TEST_DIR=$(dirname "$0") -ZGRAB_ROOT="$TEST_DIR/.." -INTEGRATION_TEST_VENV=".integration_tests.venv" +ZGRAB_ROOT=$(git rev-parse --show-toplevel) cd "$ZGRAB_ROOT" @@ -39,8 +37,8 @@ ZGRAB_OUTPUT="zgrab-output" mkdir -p $ZGRAB_OUTPUT if ! which jp; then - go get github.com/jmespath/jp && go build github.com/jmespath/jp - export PATH=$PATH:$GOPATH/bin + echo "Please install jp" + exit 1 fi pushd integration_tests @@ -74,21 +72,13 @@ status=0 failures="" echo "Doing schema validation..." -if ! [ -f "${INTEGRATION_TEST_VENV}/bin/python" ]; then - virtualenv "${INTEGRATION_TEST_VENV}" - "${INTEGRATION_TEST_VENV}/bin/pip" install zschema - "${INTEGRATION_TEST_VENV}/bin/pip" install -r requirements.txt -fi - -. "${INTEGRATION_TEST_VENV}/bin/activate" - for protocol in $(ls $ZGRAB_OUTPUT); do for outfile in $(ls $ZGRAB_OUTPUT/$protocol); do target="$ZGRAB_OUTPUT/$protocol/$outfile" echo "Validating $target [{(" cat $target echo ")}]:" - if ! python -m zschema validate zgrab2 $target --path . --module zgrab2_schemas.zgrab2 ; then + if ! python2 -m zschema validate zgrab2 $target --path . --module zgrab2_schemas.zgrab2 ; then echo "Schema validation failed for $protocol/$outfile" err="schema failure@$protocol/$outfile" if [[ $status -eq 0 ]]; then diff --git a/lib/http/chunked.go b/lib/http/chunked.go index 2519f33a8..a3b7ec1b4 100644 --- a/lib/http/chunked.go +++ b/lib/http/chunked.go @@ -152,10 +152,11 @@ func isASCIISpace(b byte) bool { // removeChunkExtension removes any chunk-extension from p. // For example, -// "0" => "0" -// "0;token" => "0" -// "0;token=val" => "0" -// `0;token="quoted string"` => "0" +// +// "0" => "0" +// "0;token" => "0" +// "0;token=val" => "0" +// `0;token="quoted string"` => "0" func removeChunkExtension(p []byte) ([]byte, error) { semi := bytes.IndexByte(p, ';') if semi == -1 { diff --git a/lib/http/client.go b/lib/http/client.go index 029b797f0..f7b05c51c 100644 --- a/lib/http/client.go +++ b/lib/http/client.go @@ -37,21 +37,20 @@ import ( // When following redirects, the Client will forward all headers set on the // initial Request except: // -// * when forwarding sensitive headers like "Authorization", -// "WWW-Authenticate", and "Cookie" to untrusted targets. -// These headers will be ignored when following a redirect to a domain -// that is not a subdomain match or exact match of the initial domain. -// For example, a redirect from "foo.com" to either "foo.com" or "sub.foo.com" -// will forward the sensitive headers, but a redirect to "bar.com" will not. -// -// * when forwarding the "Cookie" header with a non-nil cookie Jar. -// Since each redirect may mutate the state of the cookie jar, -// a redirect may possibly alter a cookie set in the initial request. -// When forwarding the "Cookie" header, any mutated cookies will be omitted, -// with the expectation that the Jar will insert those mutated cookies -// with the updated values (assuming the origin matches). -// If Jar is nil, the initial cookies are forwarded without change. -// +// - when forwarding sensitive headers like "Authorization", +// "WWW-Authenticate", and "Cookie" to untrusted targets. +// These headers will be ignored when following a redirect to a domain +// that is not a subdomain match or exact match of the initial domain. +// For example, a redirect from "foo.com" to either "foo.com" or "sub.foo.com" +// will forward the sensitive headers, but a redirect to "bar.com" will not. +// +// - when forwarding the "Cookie" header with a non-nil cookie Jar. +// Since each redirect may mutate the state of the cookie jar, +// a redirect may possibly alter a cookie set in the initial request. +// When forwarding the "Cookie" header, any mutated cookies will be omitted, +// with the expectation that the Jar will insert those mutated cookies +// with the updated values (assuming the origin matches). +// If Jar is nil, the initial cookies are forwarded without change. type Client struct { // Transport specifies the mechanism by which individual // HTTP requests are made. @@ -344,11 +343,11 @@ func basicAuth(username, password string) string { // the following redirect codes, Get follows the redirect, up to a // maximum of 10 redirects: // -// 301 (Moved Permanently) -// 302 (Found) -// 303 (See Other) -// 307 (Temporary Redirect) -// 308 (Permanent Redirect) +// 301 (Moved Permanently) +// 302 (Found) +// 303 (See Other) +// 307 (Temporary Redirect) +// 308 (Permanent Redirect) // // An error is returned if there were too many redirects or if there // was an HTTP protocol error. A non-2xx response doesn't cause an @@ -373,11 +372,11 @@ func (c *Client) Get(url string) (r *Response, err error) { // following redirect codes, Get follows the redirect after calling the // Client's CheckRedirect function: // -// 301 (Moved Permanently) -// 302 (Found) -// 303 (See Other) -// 307 (Temporary Redirect) -// 308 (Permanent Redirect) +// 301 (Moved Permanently) +// 302 (Found) +// 303 (See Other) +// 307 (Temporary Redirect) +// 308 (Permanent Redirect) // // An error is returned if the Client's CheckRedirect function fails // or if there was an HTTP protocol error. A non-2xx response doesn't @@ -770,11 +769,11 @@ func (c *Client) PostForm(url string, data url.Values) (resp *Response, err erro // the following redirect codes, Head follows the redirect, up to a // maximum of 10 redirects: // -// 301 (Moved Permanently) -// 302 (Found) -// 303 (See Other) -// 307 (Temporary Redirect) -// 308 (Permanent Redirect) +// 301 (Moved Permanently) +// 302 (Found) +// 303 (See Other) +// 307 (Temporary Redirect) +// 308 (Permanent Redirect) // // Head is a wrapper around DefaultClient.Head func Head(url string) (resp *Response, err error) { @@ -785,11 +784,11 @@ func Head(url string) (resp *Response, err error) { // following redirect codes, Head follows the redirect after calling the // Client's CheckRedirect function: // -// 301 (Moved Permanently) -// 302 (Found) -// 303 (See Other) -// 307 (Temporary Redirect) -// 308 (Permanent Redirect) +// 301 (Moved Permanently) +// 302 (Found) +// 303 (See Other) +// 307 (Temporary Redirect) +// 308 (Permanent Redirect) func (c *Client) HeadWithHost(url, host string) (resp *Response, err error) { req, err := NewRequestWithHost("HEAD", url, host, nil) if err != nil { @@ -803,9 +802,9 @@ func (c *Client) Head(url string) (resp *Response, err error) { } // cancelTimerBody is an io.ReadCloser that wraps rc with two features: -// 1) on Read error or close, the stop func is called. -// 2) On Read failure, if reqDidTimeout is true, the error is wrapped and -// marked as net.Error that hit its timeout. +// 1. on Read error or close, the stop func is called. +// 2. On Read failure, if reqDidTimeout is true, the error is wrapped and +// marked as net.Error that hit its timeout. type cancelTimerBody struct { stop func() // stops the time.Timer waiting to cancel the request rc io.ReadCloser @@ -831,9 +830,11 @@ func (b *cancelTimerBody) Read(p []byte) (n int, err error) { } func (b *cancelTimerBody) Close() error { - err := b.rc.Close() - b.stop() - return err + defer b.stop() + if b.rc != nil { + return b.rc.Close() + } + return nil } func shouldCopyHeaderOnRedirect(headerKey string, initial, dest *url.URL) bool { diff --git a/lib/http/client_test.go b/lib/http/client_test.go index de5d2fe1c..8aa287db4 100644 --- a/lib/http/client_test.go +++ b/lib/http/client_test.go @@ -769,7 +769,7 @@ func (j *RecordingJar) Cookies(u *url.URL) []*Cookie { return nil } -func (j *RecordingJar) logf(format string, args ...interface{}) { +func (j *RecordingJar) logf(format string, args ...any) { j.mu.Lock() defer j.mu.Unlock() fmt.Fprintf(&j.log, format, args...) @@ -1067,9 +1067,9 @@ func TestClientHeadContentLength_h1(t *testing.T) { } /* -func TestClientHeadContentLength_h2(t *testing.T) { - testClientHeadContentLength(t, h2Mode) -} + func TestClientHeadContentLength_h2(t *testing.T) { + testClientHeadContentLength(t, h2Mode) + } */ func testClientHeadContentLength(t *testing.T, h2 bool) { defer afterTest(t) @@ -1379,7 +1379,7 @@ func TestClientTimeoutCancel(t *testing.T) { func TestClientRedirectEatsBody_h1(t *testing.T) { testClientRedirectEatsBody(t, h1Mode) } -//func TestClientRedirectEatsBody_h2(t *testing.T) { testClientRedirectEatsBody(t, h2Mode) } +// func TestClientRedirectEatsBody_h2(t *testing.T) { testClientRedirectEatsBody(t, h2Mode) } func testClientRedirectEatsBody(t *testing.T, h2 bool) { setParallel(t) defer afterTest(t) diff --git a/lib/http/clientserver_test.go b/lib/http/clientserver_test.go index a32d08662..2171710ef 100644 --- a/lib/http/clientserver_test.go +++ b/lib/http/clientserver_test.go @@ -74,7 +74,7 @@ var optQuietLog = func(ts *httptest.Server) { ts.Config.ErrorLog = quietLog } -func newClientServerTest(t *testing.T, h2 bool, h Handler, opts ...interface{}) *clientServerTest { +func newClientServerTest(t *testing.T, h2 bool, h Handler, opts ...any) *clientServerTest { cst := &clientServerTest{ t: t, h2: h2, @@ -179,63 +179,64 @@ type reqFunc func(c *Client, url string) (*Response, error) /* // h12Compare is a test that compares HTTP/1 and HTTP/2 behavior // against each other. -type h12Compare struct { - http.Handler func(ResponseWriter, *Request) // required - ReqFunc reqFunc // optional - CheckResponse func(proto string, res *Response) // optional - EarlyCheckResponse func(proto string, res *Response) // optional; pre-normalize - Opts []interface{} -} -func (tt h12Compare) reqFunc() reqFunc { - if tt.ReqFunc == nil { - return (*Client).Get + type h12Compare struct { + http.Handler func(ResponseWriter, *Request) // required + ReqFunc reqFunc // optional + CheckResponse func(proto string, res *Response) // optional + EarlyCheckResponse func(proto string, res *Response) // optional; pre-normalize + Opts []any } - return tt.ReqFunc -} - -func (tt h12Compare) run(t *testing.T) { - setParallel(t) - cst1 := newClientServerTest(t, false, HandlerFunc(tt.Handler), tt.Opts...) - defer cst1.close() - cst2 := newClientServerTest(t, true, HandlerFunc(tt.Handler), tt.Opts...) - defer cst2.close() - res1, err := tt.reqFunc()(cst1.c, cst1.ts.URL) - if err != nil { - t.Errorf("HTTP/1 request: %v", err) - return - } - res2, err := tt.reqFunc()(cst2.c, cst2.ts.URL) - if err != nil { - t.Errorf("HTTP/2 request: %v", err) - return + func (tt h12Compare) reqFunc() reqFunc { + if tt.ReqFunc == nil { + return (*Client).Get + } + return tt.ReqFunc } - if fn := tt.EarlyCheckResponse; fn != nil { - fn("HTTP/1.1", res1) - fn("HTTP/2.0", res2) - } + func (tt h12Compare) run(t *testing.T) { + setParallel(t) + cst1 := newClientServerTest(t, false, HandlerFunc(tt.Handler), tt.Opts...) + defer cst1.close() + cst2 := newClientServerTest(t, true, HandlerFunc(tt.Handler), tt.Opts...) + defer cst2.close() + + res1, err := tt.reqFunc()(cst1.c, cst1.ts.URL) + if err != nil { + t.Errorf("HTTP/1 request: %v", err) + return + } + res2, err := tt.reqFunc()(cst2.c, cst2.ts.URL) + if err != nil { + t.Errorf("HTTP/2 request: %v", err) + return + } - tt.normalizeRes(t, res1, "HTTP/1.1") - tt.normalizeRes(t, res2, "HTTP/2.0") - res1body, res2body := res1.Body, res2.Body + if fn := tt.EarlyCheckResponse; fn != nil { + fn("HTTP/1.1", res1) + fn("HTTP/2.0", res2) + } - eres1 := mostlyCopy(res1) - eres2 := mostlyCopy(res2) - if !reflect.DeepEqual(eres1, eres2) { - t.Errorf("Response headers to handler differed:\nhttp/1 (%v):\n\t%#v\nhttp/2 (%v):\n\t%#v", - cst1.ts.URL, eres1, cst2.ts.URL, eres2) - } - if !reflect.DeepEqual(res1body, res2body) { - t.Errorf("Response bodies to handler differed.\nhttp1: %v\nhttp2: %v\n", res1body, res2body) - } - if fn := tt.CheckResponse; fn != nil { - res1.Body, res2.Body = res1body, res2body - fn("HTTP/1.1", res1) - fn("HTTP/2.0", res2) + tt.normalizeRes(t, res1, "HTTP/1.1") + tt.normalizeRes(t, res2, "HTTP/2.0") + res1body, res2body := res1.Body, res2.Body + + eres1 := mostlyCopy(res1) + eres2 := mostlyCopy(res2) + if !reflect.DeepEqual(eres1, eres2) { + t.Errorf("Response headers to handler differed:\nhttp/1 (%v):\n\t%#v\nhttp/2 (%v):\n\t%#v", + cst1.ts.URL, eres1, cst2.ts.URL, eres2) + } + if !reflect.DeepEqual(res1body, res2body) { + t.Errorf("Response bodies to handler differed.\nhttp1: %v\nhttp2: %v\n", res1body, res2body) + } + if fn := tt.CheckResponse; fn != nil { + res1.Body, res2.Body = res1body, res2body + fn("HTTP/1.1", res1) + fn("HTTP/2.0", res2) + } } -} */ func mostlyCopy(r *Response) *Response { c := *r @@ -437,7 +438,7 @@ func TestH12_AutoGzip(t *testing.T) { func TestH12_AutoGzip_Disabled(t *testing.T) { h12Compare{ - Opts: []interface{}{ + Opts: []any{ func(tr *Transport) { tr.DisableCompression = true }, }, Handler: func(w ResponseWriter, r *Request) { @@ -525,7 +526,7 @@ func h12requestContentLength(t *testing.T, bodyfn func() io.Reader, wantLen int6 // reading the response body. Issue 13159. func TestCancelRequestMidBody_h1(t *testing.T) { testCancelRequestMidBody(t, h1Mode) } -//func TestCancelRequestMidBody_h2(t *testing.T) { testCancelRequestMidBody(t, h2Mode) } +// func TestCancelRequestMidBody_h2(t *testing.T) { testCancelRequestMidBody(t, h2Mode) } func testCancelRequestMidBody(t *testing.T, h2 bool) { defer afterTest(t) unblock := make(chan bool) @@ -631,7 +632,7 @@ func testTrailersClientToServer(t *testing.T, h2 bool) { // Tests that servers send trailers to a client and that the client can read them. func TestTrailersServerToClient_h1(t *testing.T) { testTrailersServerToClient(t, h1Mode, false) } -//func TestTrailersServerToClient_h2(t *testing.T) { testTrailersServerToClient(t, h2Mode, false) } +// func TestTrailersServerToClient_h2(t *testing.T) { testTrailersServerToClient(t, h2Mode, false) } func TestTrailersServerToClient_Flush_h1(t *testing.T) { testTrailersServerToClient(t, h1Mode, true) } //func TestTrailersServerToClient_Flush_h2(t *testing.T) { testTrailersServerToClient(t, h2Mode, true) } @@ -731,7 +732,7 @@ func testResponseBodyReadAfterClose(t *testing.T, h2 bool) { func TestConcurrentReadWriteReqBody_h1(t *testing.T) { testConcurrentReadWriteReqBody(t, h1Mode) } -//func TestConcurrentReadWriteReqBody_h2(t *testing.T) { testConcurrentReadWriteReqBody(t, h2Mode) } +// func TestConcurrentReadWriteReqBody_h2(t *testing.T) { testConcurrentReadWriteReqBody(t, h2Mode) } func testConcurrentReadWriteReqBody(t *testing.T, h2 bool) { defer afterTest(t) const reqBody = "some request body" @@ -785,7 +786,7 @@ func testConcurrentReadWriteReqBody(t *testing.T, h2 bool) { func TestConnectRequest_h1(t *testing.T) { testConnectRequest(t, h1Mode) } -//func TestConnectRequest_h2(t *testing.T) { testConnectRequest(t, h2Mode) } +// func TestConnectRequest_h2(t *testing.T) { testConnectRequest(t, h2Mode) } func testConnectRequest(t *testing.T, h2 bool) { defer afterTest(t) gotc := make(chan *Request, 1) @@ -844,7 +845,7 @@ func testConnectRequest(t *testing.T, h2 bool) { func TestTransportUserAgent_h1(t *testing.T) { testTransportUserAgent(t, h1Mode) } -//func TestTransportUserAgent_h2(t *testing.T) { testTransportUserAgent(t, h2Mode) } +// func TestTransportUserAgent_h2(t *testing.T) { testTransportUserAgent(t, h2Mode) } func testTransportUserAgent(t *testing.T, h2 bool) { defer afterTest(t) cst := newClientServerTest(t, h2, HandlerFunc(func(w ResponseWriter, r *Request) { @@ -906,10 +907,10 @@ func testTransportUserAgent(t *testing.T, h2 bool) { func TestStarRequestFoo_h1(t *testing.T) { testStarRequest(t, "FOO", h1Mode) } -//func TestStarRequestFoo_h2(t *testing.T) { testStarRequest(t, "FOO", h2Mode) } +// func TestStarRequestFoo_h2(t *testing.T) { testStarRequest(t, "FOO", h2Mode) } func TestStarRequestOptions_h1(t *testing.T) { testStarRequest(t, "OPTIONS", h1Mode) } -//func TestStarRequestOptions_h2(t *testing.T) { testStarRequest(t, "OPTIONS", h2Mode) } +// func TestStarRequestOptions_h2(t *testing.T) { testStarRequest(t, "OPTIONS", h2Mode) } func testStarRequest(t *testing.T, method string, h2 bool) { defer afterTest(t) gotc := make(chan *Request, 1) @@ -1061,10 +1062,10 @@ func TestTransportDiscardsUnneededConns(t *testing.T) { // tests that Transport doesn't retain a pointer to the provided request. func TestTransportGCRequest_Body_h1(t *testing.T) { testTransportGCRequest(t, h1Mode, true) } -//func TestTransportGCRequest_Body_h2(t *testing.T) { testTransportGCRequest(t, h2Mode, true) } +// func TestTransportGCRequest_Body_h2(t *testing.T) { testTransportGCRequest(t, h2Mode, true) } func TestTransportGCRequest_NoBody_h1(t *testing.T) { testTransportGCRequest(t, h1Mode, false) } -//func TestTransportGCRequest_NoBody_h2(t *testing.T) { testTransportGCRequest(t, h2Mode, false) } +// func TestTransportGCRequest_NoBody_h2(t *testing.T) { testTransportGCRequest(t, h2Mode, false) } func testTransportGCRequest(t *testing.T, h2, body bool) { setParallel(t) defer afterTest(t) @@ -1168,7 +1169,7 @@ func testTransportRejectsInvalidHeaders(t *testing.T, h2 bool) { // have. This might change at some point, but not yet in Go 1.6. func TestBogusStatusWorks_h1(t *testing.T) { testBogusStatusWorks(t, h1Mode) } -//func TestBogusStatusWorks_h2(t *testing.T) { testBogusStatusWorks(t, h2Mode) } +// func TestBogusStatusWorks_h2(t *testing.T) { testBogusStatusWorks(t, h2Mode) } func testBogusStatusWorks(t *testing.T, h2 bool) { defer afterTest(t) const code = 7 @@ -1188,17 +1189,17 @@ func testBogusStatusWorks(t *testing.T, h2 bool) { func TestInterruptWithPanic_h1(t *testing.T) { testInterruptWithPanic(t, h1Mode, "boom") } -//func TestInterruptWithPanic_h2(t *testing.T) { testInterruptWithPanic(t, h2Mode, "boom") } +// func TestInterruptWithPanic_h2(t *testing.T) { testInterruptWithPanic(t, h2Mode, "boom") } func TestInterruptWithPanic_nil_h1(t *testing.T) { testInterruptWithPanic(t, h1Mode, nil) } -//func TestInterruptWithPanic_nil_h2(t *testing.T) { testInterruptWithPanic(t, h2Mode, nil) } +// func TestInterruptWithPanic_nil_h2(t *testing.T) { testInterruptWithPanic(t, h2Mode, nil) } func TestInterruptWithPanic_ErrAbortHandler_h1(t *testing.T) { testInterruptWithPanic(t, h1Mode, ErrAbortHandler) } /* func TestInterruptWithPanic_ErrAbortHandler_h2(t *testing.T) { testInterruptWithPanic(t, h2Mode, ErrAbortHandler) }*/ -func testInterruptWithPanic(t *testing.T, h2 bool, panicValue interface{}) { +func testInterruptWithPanic(t *testing.T, h2 bool, panicValue any) { setParallel(t) const msg = "hello" defer afterTest(t) @@ -1305,7 +1306,7 @@ func TestH12_AutoGzipWithDumpResponse(t *testing.T) { // Issue 14607 func TestCloseIdleConnections_h1(t *testing.T) { testCloseIdleConnections(t, h1Mode) } -//func TestCloseIdleConnections_h2(t *testing.T) { testCloseIdleConnections(t, h2Mode) } +// func TestCloseIdleConnections_h2(t *testing.T) { testCloseIdleConnections(t, h2Mode) } func testCloseIdleConnections(t *testing.T, h2 bool) { setParallel(t) defer afterTest(t) @@ -1382,7 +1383,7 @@ func testNoSniffExpectRequestBody(t *testing.T, h2 bool) { func TestServerUndeclaredTrailers_h1(t *testing.T) { testServerUndeclaredTrailers(t, h1Mode) } -//func TestServerUndeclaredTrailers_h2(t *testing.T) { testServerUndeclaredTrailers(t, h2Mode) } +// func TestServerUndeclaredTrailers_h2(t *testing.T) { testServerUndeclaredTrailers(t, h2Mode) } func testServerUndeclaredTrailers(t *testing.T, h2 bool) { defer afterTest(t) cst := newClientServerTest(t, h2, HandlerFunc(func(w ResponseWriter, r *Request) { diff --git a/lib/http/cookie.go b/lib/http/cookie.go index 5a67476cd..458c7c39e 100644 --- a/lib/http/cookie.go +++ b/lib/http/cookie.go @@ -316,9 +316,11 @@ func sanitizeCookieName(n string) string { // http://tools.ietf.org/html/rfc6265#section-4.1.1 // cookie-value = *cookie-octet / ( DQUOTE *cookie-octet DQUOTE ) // cookie-octet = %x21 / %x23-2B / %x2D-3A / %x3C-5B / %x5D-7E -// ; US-ASCII characters excluding CTLs, -// ; whitespace DQUOTE, comma, semicolon, -// ; and backslash +// +// ; US-ASCII characters excluding CTLs, +// ; whitespace DQUOTE, comma, semicolon, +// ; and backslash +// // We loosen this as spaces and commas are common in cookie values // but we produce a quoted cookie-value in when value starts or ends // with a comma or space. diff --git a/lib/http/cookie_test.go b/lib/http/cookie_test.go index b3e54f8db..3dc19a25d 100644 --- a/lib/http/cookie_test.go +++ b/lib/http/cookie_test.go @@ -283,7 +283,7 @@ var readSetCookiesTests = []struct { // Header{"Set-Cookie": {"ASP.NET_SessionId=foo; path=/; HttpOnly, .ASPXAUTH=7E3AA; expires=Wed, 07-Mar-2012 14:25:06 GMT; path=/; HttpOnly"}}, } -func toJSON(v interface{}) string { +func toJSON(v any) string { b, err := json.Marshal(v) if err != nil { return fmt.Sprintf("%#v", v) diff --git a/lib/http/cookiejar/jar.go b/lib/http/cookiejar/jar.go index a445e3527..403432240 100644 --- a/lib/http/cookiejar/jar.go +++ b/lib/http/cookiejar/jar.go @@ -19,9 +19,9 @@ import ( ) // PublicSuffixList provides the public suffix of a domain. For example: -// - the public suffix of "example.com" is "com", -// - the public suffix of "foo1.foo2.foo3.co.uk" is "co.uk", and -// - the public suffix of "bar.pvt.k12.ma.us" is "pvt.k12.ma.us". +// - the public suffix of "example.com" is "com", +// - the public suffix of "foo1.foo2.foo3.co.uk" is "co.uk", and +// - the public suffix of "bar.pvt.k12.ma.us" is "pvt.k12.ma.us". // // Implementations of PublicSuffixList must be safe for concurrent use by // multiple goroutines. diff --git a/lib/http/cookiejar/jar_test.go b/lib/http/cookiejar/jar_test.go index f78dc76e1..3ac70ae6d 100644 --- a/lib/http/cookiejar/jar_test.go +++ b/lib/http/cookiejar/jar_test.go @@ -319,13 +319,13 @@ func mustParseURL(s string) *url.URL { } // jarTest encapsulates the following actions on a jar: -// 1. Perform SetCookies with fromURL and the cookies from setCookies. -// (Done at time tNow + 0 ms.) -// 2. Check that the entries in the jar matches content. -// (Done at time tNow + 1001 ms.) -// 3. For each query in tests: Check that Cookies with toURL yields the -// cookies in want. -// (Query n done at tNow + (n+2)*1001 ms.) +// 1. Perform SetCookies with fromURL and the cookies from setCookies. +// (Done at time tNow + 0 ms.) +// 2. Check that the entries in the jar matches content. +// (Done at time tNow + 1001 ms.) +// 3. For each query in tests: Check that Cookies with toURL yields the +// cookies in want. +// (Query n done at tNow + (n+2)*1001 ms.) type jarTest struct { description string // The description of what this test is supposed to test fromURL string // The full URL of the request from which Set-Cookie headers where received diff --git a/lib/http/doc.go b/lib/http/doc.go index 7855feaaa..d93f4b57e 100644 --- a/lib/http/doc.go +++ b/lib/http/doc.go @@ -102,6 +102,5 @@ directly and use its ConfigureTransport and/or ConfigureServer functions. Manually configuring HTTP/2 via the golang.org/x/net/http2 package takes precedence over the net/http package's built-in HTTP/2 support. - */ package http diff --git a/lib/http/filetransport.go b/lib/http/filetransport.go index 3725619dd..f7b1d8b4e 100644 --- a/lib/http/filetransport.go +++ b/lib/http/filetransport.go @@ -22,11 +22,11 @@ type fileTransport struct { // The typical use case for NewFileTransport is to register the "file" // protocol with a Transport, as in: // -// t := &http.Transport{} -// t.RegisterProtocol("file", http.NewFileTransport(http.Dir("/"))) -// c := &http.Client{Transport: t} -// res, err := c.Get("file:///etc/passwd") -// ... +// t := &http.Transport{} +// t.RegisterProtocol("file", http.NewFileTransport(http.Dir("/"))) +// c := &http.Client{Transport: t} +// res, err := c.Get("file:///etc/passwd") +// ... func NewFileTransport(fs FileSystem) RoundTripper { return fileTransport{fileHandler{fs}} } diff --git a/lib/http/fs.go b/lib/http/fs.go index b6d4ce704..a18e91323 100644 --- a/lib/http/fs.go +++ b/lib/http/fs.go @@ -670,7 +670,7 @@ type fileHandler struct { // To use the operating system's file system implementation, // use http.Dir: // -// http.Handle("/", http.FileServer(http.Dir("/tmp"))) +// http.Handle("/", http.FileServer(http.Dir("/tmp"))) // // As a special case, the returned file server redirects any request // ending in "/index.html" to the same path, without the final diff --git a/lib/http/fs_test.go b/lib/http/fs_test.go index 547b05a60..9b9a3652c 100644 --- a/lib/http/fs_test.go +++ b/lib/http/fs_test.go @@ -530,7 +530,7 @@ func TestServeDirWithoutTrailingSlash(t *testing.T) { // specified. func TestServeFileWithContentEncoding_h1(t *testing.T) { testServeFileWithContentEncoding(t, h1Mode) } -//func TestServeFileWithContentEncoding_h2(t *testing.T) { testServeFileWithContentEncoding(t, h2Mode) } +// func TestServeFileWithContentEncoding_h2(t *testing.T) { testServeFileWithContentEncoding(t, h2Mode) } func testServeFileWithContentEncoding(t *testing.T, h2 bool) { defer afterTest(t) cst := newClientServerTest(t, h2, HandlerFunc(func(w ResponseWriter, r *Request) { @@ -607,7 +607,7 @@ type fakeFileInfo struct { } func (f *fakeFileInfo) Name() string { return f.basename } -func (f *fakeFileInfo) Sys() interface{} { return nil } +func (f *fakeFileInfo) Sys() any { return nil } func (f *fakeFileInfo) ModTime() time.Time { return f.modtime } func (f *fakeFileInfo) IsDir() bool { return f.dir } func (f *fakeFileInfo) Size() int64 { return int64(len(f.contents)) } diff --git a/lib/http/h2_bundle.go b/lib/http/h2_bundle.go index 0c652e374..00bd7a9be 100644 --- a/lib/http/h2_bundle.go +++ b/lib/http/h2_bundle.go @@ -43,9 +43,9 @@ import ( "time" "github.com/zmap/zcrypto/tls" + "golang.org/x/net/http/httpguts" "golang.org/x/net/http2/hpack" "golang.org/x/net/idna" - "golang.org/x/net/http/httpguts" ) // ClientConnPool manages a pool of HTTP/2 client connections. @@ -763,7 +763,7 @@ func (h *http2FrameHeader) invalidate() { h.valid = false } // frame header bytes. // Used only by ReadFrameHeader. var http2fhBytes = sync.Pool{ - New: func() interface{} { + New: func() any { buf := make([]byte, http2frameHeaderLen) return &buf }, @@ -859,8 +859,8 @@ type http2Framer struct { debugFramer *http2Framer // only use for logging written writes debugFramerBuf *bytes.Buffer - debugReadLoggerf func(string, ...interface{}) - debugWriteLoggerf func(string, ...interface{}) + debugReadLoggerf func(string, ...any) + debugWriteLoggerf func(string, ...any) } func (fr *http2Framer) maxHeaderListSize() uint32 { @@ -2189,7 +2189,7 @@ func http2configureServer18(h1 *Server, h2 *http2Server) error { return nil } -func http2shouldLogPanic(panicValue interface{}) bool { +func http2shouldLogPanic(panicValue any) bool { return panicValue != nil && panicValue != ErrAbortHandler } @@ -2252,7 +2252,7 @@ func http2curGoroutineID() uint64 { } var http2littleBuf = sync.Pool{ - New: func() interface{} { + New: func() any { buf := make([]byte, 64) return &buf }, @@ -2570,10 +2570,11 @@ var ( // name (key). See httpguts.ValidHeaderName for the base rules. // // Further, http2 says: -// "Just as in HTTP/1.x, header field names are strings of ASCII -// characters that are compared in a case-insensitive -// fashion. However, header field names MUST be converted to -// lowercase prior to their encoding in HTTP/2. " +// +// "Just as in HTTP/1.x, header field names are strings of ASCII +// characters that are compared in a case-insensitive +// fashion. However, header field names MUST be converted to +// lowercase prior to their encoding in HTTP/2. " func http2validWireHeaderFieldName(v string) bool { if len(v) == 0 { return false @@ -2660,7 +2661,7 @@ func http2newBufferedWriter(w io.Writer) *http2bufferedWriter { const http2bufWriterPoolBufferSize = 4 << 10 var http2bufWriterPool = sync.Pool{ - New: func() interface{} { + New: func() any { return bufio.NewWriterSize(nil, http2bufWriterPoolBufferSize) }, } @@ -2731,7 +2732,7 @@ type http2connectionStater interface { ConnectionState() tls.ConnectionState } -var http2sorterPool = sync.Pool{New: func() interface{} { return new(http2sorter) }} +var http2sorterPool = sync.Pool{New: func() any { return new(http2sorter) }} type http2sorter struct { v []string // owned by sorter @@ -2768,8 +2769,8 @@ func (s *http2sorter) SortStrings(ss []string) { // validPseudoPath reports whether v is a valid :path pseudo-header // value. It must be either: // -// *) a non-empty string starting with '/', but not with with "//", -// *) the string '*', for OPTIONS requests. +// *) a non-empty string starting with '/', but not with with "//", +// *) the string '*', for OPTIONS requests. // // For now this is only used a quick check for deciding when to clean // up Opaque URLs before sending requests from the Transport. @@ -2934,7 +2935,7 @@ var ( ) var http2responseWriterStatePool = sync.Pool{ - New: func() interface{} { + New: func() any { rws := &http2responseWriterState{} rws.bw = bufio.NewWriterSize(http2chunkWriter{rws}, http2handlerChunkWriteSize) return rws @@ -2946,7 +2947,7 @@ var ( http2testHookOnConn func() http2testHookGetServerConn func(*http2serverConn) http2testHookOnPanicMu *sync.Mutex // nil except in tests - http2testHookOnPanic func(sc *http2serverConn, panicVal interface{}) (rePanic bool) + http2testHookOnPanic func(sc *http2serverConn, panicVal any) (rePanic bool) ) // Server is an HTTP/2 server. @@ -3341,13 +3342,13 @@ func (sc *http2serverConn) setConnState(state ConnState) { } } -func (sc *http2serverConn) vlogf(format string, args ...interface{}) { +func (sc *http2serverConn) vlogf(format string, args ...any) { if http2VerboseLogs { sc.logf(format, args...) } } -func (sc *http2serverConn) logf(format string, args ...interface{}) { +func (sc *http2serverConn) logf(format string, args ...any) { if lg := sc.hs.ErrorLog; lg != nil { lg.Printf(format, args...) } else { @@ -3392,7 +3393,7 @@ func http2isClosedConnError(err error) bool { return false } -func (sc *http2serverConn) condlogf(err error, format string, args ...interface{}) { +func (sc *http2serverConn) condlogf(err error, format string, args ...any) { if err == nil { return } @@ -3618,11 +3619,11 @@ func (sc *http2serverConn) readPreface() error { } var http2errChanPool = sync.Pool{ - New: func() interface{} { return make(chan error, 1) }, + New: func() any { return make(chan error, 1) }, } var http2writeDataPool = sync.Pool{ - New: func() interface{} { return new(http2writeData) }, + New: func() any { return new(http2writeData) }, } // writeDataFromHandler writes DATA response frames from a handler on @@ -4930,8 +4931,9 @@ func (rws *http2responseWriterState) writeChunk(p []byte) (n int, err error) { // prior to the headers being written. If the set of trailers is fixed // or known before the header is written, the normal Go trailers mechanism // is preferred: -// https://golang.org/pkg/net/http/#ResponseWriter -// https://golang.org/pkg/net/http/#example_ResponseWriter_trailers +// +// https://golang.org/pkg/net/http/#ResponseWriter +// https://golang.org/pkg/net/http/#example_ResponseWriter_trailers const http2TrailerPrefix = "Trailer:" // promoteUndeclaredTrailers permits http.Handlers to set trailers @@ -5358,7 +5360,7 @@ func http2h1ServerShutdownChan(hs *Server) <-chan struct{} { if fn := http2testh1ServerShutdownChan; fn != nil { return fn(hs) } - var x interface{} = hs + var x any = hs type I interface { getDoneChan() <-chan struct{} } @@ -5375,7 +5377,7 @@ var http2testh1ServerShutdownChan func(hs *Server) <-chan struct{} // disabled. See comments on h1ServerShutdownChan above for why // the code is written this way. func http2h1ServerKeepAlivesDisabled(hs *Server) bool { - var x interface{} = hs + var x any = hs type I interface { doKeepAlives() bool } @@ -7231,21 +7233,21 @@ var ( http2errPseudoTrailers = errors.New("http2: invalid pseudo header in trailers") ) -func (cc *http2ClientConn) logf(format string, args ...interface{}) { +func (cc *http2ClientConn) logf(format string, args ...any) { cc.t.logf(format, args...) } -func (cc *http2ClientConn) vlogf(format string, args ...interface{}) { +func (cc *http2ClientConn) vlogf(format string, args ...any) { cc.t.vlogf(format, args...) } -func (t *http2Transport) vlogf(format string, args ...interface{}) { +func (t *http2Transport) vlogf(format string, args ...any) { if http2VerboseLogs { t.logf(format, args...) } } -func (t *http2Transport) logf(format string, args ...interface{}) { +func (t *http2Transport) logf(format string, args ...any) { log.Printf(format, args...) } diff --git a/lib/http/header.go b/lib/http/header.go index 46385fe20..ae6fb09cb 100644 --- a/lib/http/header.go +++ b/lib/http/header.go @@ -24,69 +24,69 @@ var knownHeaders = map[string]bool{ "accept_patch": true, "accept_ranges": true, "access_control_allow_origin": true, - "age": true, - "allow": true, - "alt_svc": true, - "alternate_protocol": true, - "authorization": true, - "cache_control": true, - "connection": true, - "content_disposition": true, - "content_encoding": true, - "content_language": true, - "content_length": true, - "content_location": true, - "content_md5": true, - "content_range": true, - "content_security_policy": true, - "content_type": true, - "cookie": true, - "date": true, - "etag": true, - "expect": true, - "expires": true, - "from": true, - "host": true, - "if_match": true, - "if_modified_since": true, - "if_none_match": true, - "if_unmodified_since": true, - "last_modified": true, - "link": true, - "location": true, - "max_forwards": true, - "p3p": true, - "pragma": true, - "proxy_agent": true, - "proxy_authenticate": true, - "proxy_authorization": true, - "public_key_pins": true, - "range": true, - "referer": true, - "refresh": true, - "retry_after": true, - "server": true, - "set_cookie": true, - "status": true, - "strict_transport_security": true, - "trailer": true, - "transfer_encoding": true, - "upgrade": true, - "user_agent": true, - "vary": true, - "via": true, - "warning": true, - "www_authenticate": true, - "x_content_duration": true, - "x_content_security_policy": true, - "x_content_type_options": true, - "x_forwarded_for": true, - "x_frame_options": true, - "x_powered_by": true, - "x_real_ip": true, - "x_ua_compatible": true, - "x_webkit_csp": true, - "x_xss_protection": true, + "age": true, + "allow": true, + "alt_svc": true, + "alternate_protocol": true, + "authorization": true, + "cache_control": true, + "connection": true, + "content_disposition": true, + "content_encoding": true, + "content_language": true, + "content_length": true, + "content_location": true, + "content_md5": true, + "content_range": true, + "content_security_policy": true, + "content_type": true, + "cookie": true, + "date": true, + "etag": true, + "expect": true, + "expires": true, + "from": true, + "host": true, + "if_match": true, + "if_modified_since": true, + "if_none_match": true, + "if_unmodified_since": true, + "last_modified": true, + "link": true, + "location": true, + "max_forwards": true, + "p3p": true, + "pragma": true, + "proxy_agent": true, + "proxy_authenticate": true, + "proxy_authorization": true, + "public_key_pins": true, + "range": true, + "referer": true, + "refresh": true, + "retry_after": true, + "server": true, + "set_cookie": true, + "status": true, + "strict_transport_security": true, + "trailer": true, + "transfer_encoding": true, + "upgrade": true, + "user_agent": true, + "vary": true, + "via": true, + "warning": true, + "www_authenticate": true, + "x_content_duration": true, + "x_content_security_policy": true, + "x_content_type_options": true, + "x_forwarded_for": true, + "x_frame_options": true, + "x_powered_by": true, + "x_real_ip": true, + "x_ua_compatible": true, + "x_webkit_csp": true, + "x_xss_protection": true, } // A Header represents the key-value pairs in an HTTP header. @@ -194,7 +194,7 @@ func (s *headerSorter) Swap(i, j int) { s.kvs[i], s.kvs[j] = s.kvs[j], s.kv func (s *headerSorter) Less(i, j int) bool { return s.kvs[i].key < s.kvs[j].key } var headerSorterPool = sync.Pool{ - New: func() interface{} { return new(headerSorter) }, + New: func() any { return new(headerSorter) }, } // sortedKeyValues returns h's keys sorted in the returned kvs @@ -338,7 +338,7 @@ func filterHeaders(h Header) { func (h Header) MarshalJSON() ([]byte, error) { filterHeaders(h) - headerMap := make(map[string]interface{}) + headerMap := make(map[string]any) for k, v := range h { // Need to special-case unknown header object, since it's not a true header (aka map[string][]string) if k == "Unknown" && len(v) > 0 { diff --git a/lib/http/http.go b/lib/http/http.go index f97c55f31..ec70ca4bf 100644 --- a/lib/http/http.go +++ b/lib/http/http.go @@ -24,7 +24,7 @@ var aLongTimeAgo = time.Unix(1, 0) // generic http stuff in random places. // contextKey is a value for use with context.WithValue. It's used as -// a pointer so it fits in an interface{} without allocation. +// a pointer so it fits in an any without allocation. type contextKey struct { name string } diff --git a/lib/http/httptest/server.go b/lib/http/httptest/server.go index 8eedb7f3a..630afb860 100644 --- a/lib/http/httptest/server.go +++ b/lib/http/httptest/server.go @@ -63,7 +63,9 @@ func newLocalListener() net.Listener { // When debugging a particular http server-based test, // this flag lets you run +// // go test -run=BrokenTest -httptest.serve=127.0.0.1:8000 +// // to start the broken server so you can interact with it manually. var serve = flag.String("httptest.serve", "", "if non-empty, httptest.NewServer serves on this address and blocks") diff --git a/lib/http/httptrace/trace.go b/lib/http/httptrace/trace.go index 09e95cf7c..1f7552e0d 100644 --- a/lib/http/httptrace/trace.go +++ b/lib/http/httptrace/trace.go @@ -50,7 +50,7 @@ func WithClientTrace(ctx context.Context, trace *ClientTrace) context.Context { } } if trace.DNSDone != nil { - nt.DNSDone = func(netIPs []interface{}, coalesced bool, err error) { + nt.DNSDone = func(netIPs []any, coalesced bool, err error) { addrs := make([]net.IPAddr, len(netIPs)) for i, ip := range netIPs { addrs[i] = ip.(net.IPAddr) diff --git a/lib/http/httputil/dump_test.go b/lib/http/httputil/dump_test.go index bf3d55d6b..82f6eee9f 100644 --- a/lib/http/httputil/dump_test.go +++ b/lib/http/httputil/dump_test.go @@ -20,7 +20,7 @@ import ( type dumpTest struct { Req http.Request - Body interface{} // optional []byte or func() io.ReadCloser to populate Req.Body + Body any // optional []byte or func() io.ReadCloser to populate Req.Body WantDump string WantDumpOut string diff --git a/lib/http/httputil/non.go b/lib/http/httputil/non.go index d9322e728..90fbf7c4b 100644 --- a/lib/http/httputil/non.go +++ b/lib/http/httputil/non.go @@ -310,7 +310,7 @@ func (p *ReverseProxy) copyBuffer(dst io.Writer, src io.Reader, buf []byte) (int } } -func (p *ReverseProxy) logf(format string, args ...interface{}) { +func (p *ReverseProxy) logf(format string, args ...any) { if p.ErrorLog != nil { p.ErrorLog.Printf(format, args...) } else { diff --git a/lib/http/lex.go b/lib/http/lex.go index 52b6481c1..42e5db2dc 100644 --- a/lib/http/lex.go +++ b/lib/http/lex.go @@ -170,13 +170,15 @@ func tokenEqual(t1, t2 string) bool { // isLWS reports whether b is linear white space, according // to http://www.w3.org/Protocols/rfc2616/rfc2616-sec2.html#sec2.2 -// LWS = [CRLF] 1*( SP | HT ) +// +// LWS = [CRLF] 1*( SP | HT ) func isLWS(b byte) bool { return b == ' ' || b == '\t' } // isCTL reports whether b is a control byte, according // to http://www.w3.org/Protocols/rfc2616/rfc2616-sec2.html#sec2.2 -// CTL = +// +// CTL = func isCTL(b byte) bool { const del = 0x7f // a CTL return b < ' ' || b == del diff --git a/lib/http/main_test.go b/lib/http/main_test.go index 3559bdccb..f6d028258 100644 --- a/lib/http/main_test.go +++ b/lib/http/main_test.go @@ -101,12 +101,12 @@ func afterTest(t testing.TB) { } var bad string badSubstring := map[string]string{ - ").readLoop(": "a Transport", - ").writeLoop(": "a Transport", + ").readLoop(": "a Transport", + ").writeLoop(": "a Transport", "created by net/http/httptest.(*Server).Start": "an httptest.Server", - "timeoutHandler": "a TimeoutHandler", - "net.(*netFD).connect(": "a timing out dial", - ").noteClientGone(": "a closenotifier sender", + "timeoutHandler": "a TimeoutHandler", + "net.(*netFD).connect(": "a timing out dial", + ").noteClientGone(": "a closenotifier sender", } var stacks string for i := 0; i < 4; i++ { diff --git a/lib/http/nettrace/nettrace.go b/lib/http/nettrace/nettrace.go index 917079798..808a5baa9 100644 --- a/lib/http/nettrace/nettrace.go +++ b/lib/http/nettrace/nettrace.go @@ -8,7 +8,8 @@ type TraceKey struct{} // specify an alternate resolver func. // It is not exposed to outsider users. (But see issue 12503) // The value should be the same type as lookupIP: -// func lookupIP(ctx context.Context, host string) ([]IPAddr, error) +// +// func lookupIP(ctx context.Context, host string) ([]IPAddr, error) type LookupIPAltResolverKey struct{} // Trace contains a set of hooks for tracing events within @@ -22,7 +23,7 @@ type Trace struct { // The coalesced parameter is whether singleflight de-dupped // the call. The addrs are of type net.IPAddr but can't // actually be for circular dependency reasons. - DNSDone func(netIPs []interface{}, coalesced bool, err error) + DNSDone func(netIPs []any, coalesced bool, err error) // ConnectStart is called before a Dial, excluding Dials made // during DNS lookups. In the case of DualStack (Happy Eyeballs) diff --git a/lib/http/race.go b/lib/http/race.go index 766503967..613d1fa4e 100644 --- a/lib/http/race.go +++ b/lib/http/race.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build race // +build race package http diff --git a/lib/http/request.go b/lib/http/request.go index 18348b3ed..92a66a33d 100644 --- a/lib/http/request.go +++ b/lib/http/request.go @@ -292,7 +292,7 @@ type Request struct { // This field is ignored by the HTTP client. TLS *tls.ConnectionState `json:"tls,omitempty"` - // Everywhere else, this is "tls". Conains the logs from the configured zgrab2 TLS scan (TLS handshake, heartbleed check, etc) + // Everywhere else, this is "tls". Conains the logs from the configured zgrab2 TLS scan (TLS handshake, heartbleed check, etc) TLSLog *zgrab2.TLSLog `json:"tls_log,omitempty"` // Cancel is an optional channel whose closure indicates that the client @@ -496,6 +496,7 @@ const defaultUserAgent = "Mozilla/5.0 zgrab/0.x" // Write writes an HTTP/1.1 request, which is the header and body, in wire format. // This method consults the following fields of the request: +// // Host // URL // Method (defaults to "GET") @@ -682,9 +683,11 @@ func idnaASCII(v string) (string, error) { // into Punycode form, if necessary. // // Ideally we'd clean the Host header according to the spec: -// https://tools.ietf.org/html/rfc7230#section-5.4 (Host = uri-host [ ":" port ]") -// https://tools.ietf.org/html/rfc7230#section-2.7 (uri-host -> rfc3986's host) -// https://tools.ietf.org/html/rfc3986#section-3.2.2 (definition of host) +// +// https://tools.ietf.org/html/rfc7230#section-5.4 (Host = uri-host [ ":" port ]") +// https://tools.ietf.org/html/rfc7230#section-2.7 (uri-host -> rfc3986's host) +// https://tools.ietf.org/html/rfc3986#section-3.2.2 (definition of host) +// // But practically, what we are trying to avoid is the situation in // issue 11206, where a malformed Host header used in the proxy context // would create a bad request. So it is enough to just truncate at the diff --git a/lib/http/request_test.go b/lib/http/request_test.go index 817ff487e..ef50714b3 100644 --- a/lib/http/request_test.go +++ b/lib/http/request_test.go @@ -232,7 +232,7 @@ func TestParseMultipartForm(t *testing.T) { func TestRedirect_h1(t *testing.T) { testRedirect(t, h1Mode) } -//func TestRedirect_h2(t *testing.T) { testRedirect(t, h2Mode) } +// func TestRedirect_h2(t *testing.T) { testRedirect(t, h2Mode) } func testRedirect(t *testing.T, h2 bool) { defer afterTest(t) cst := newClientServerTest(t, h2, HandlerFunc(func(w ResponseWriter, r *Request) { diff --git a/lib/http/requestwrite_test.go b/lib/http/requestwrite_test.go index bc8fea07c..f01af6e09 100644 --- a/lib/http/requestwrite_test.go +++ b/lib/http/requestwrite_test.go @@ -20,7 +20,7 @@ import ( type reqWriteTest struct { Req Request - Body interface{} // optional []byte or func() io.ReadCloser to populate Req.Body + Body any // optional []byte or func() io.ReadCloser to populate Req.Body // Any of these three may be empty to skip that test. WantWrite string // Request.Write diff --git a/lib/http/response.go b/lib/http/response.go index a90a57512..6fd17e2bc 100644 --- a/lib/http/response.go +++ b/lib/http/response.go @@ -29,7 +29,6 @@ var respExcludeHeader = map[string]bool{ type PageFingerprint []byte // Response represents the response from an HTTP request. -// type Response struct { Status string `json:"status_line,omitempty"` // e.g. "200 OK" StatusCode int `json:"status_code,omitempty"` // e.g. 200 @@ -45,6 +44,12 @@ type Response struct { // Keys in the map are canonicalized (see CanonicalHeaderKey). Header Header `json:"headers,omitempty"` + // The raw bytes of the MIME headers, as read from the underlying + // reader. This allows for post-processing to be done on an exact + // copy of the headers. The headers will not be canonicalized nor + // re-ordered or converted to a map. + HeadersRaw []byte `json:"headers_raw,omitempty"` + // Body represents the response body. // // The http Client and Transport guarantee that Body is always @@ -158,11 +163,23 @@ func (r *Response) Location() (*url.URL, error) { // After that call, clients can inspect resp.Trailer to find key/value // pairs included in the response trailer. func ReadResponse(r *bufio.Reader, req *Request) (*Response, error) { + return readResponse(&TeeConn{br: r}, req) +} +func ReadResponseTee(tc *TeeConn, req *Request) (*Response, error) { + return readResponse(tc, req) +} +func readResponse(tc *TeeConn, req *Request) (*Response, error) { + r := tc.BufioReader() tp := textproto.NewReader(r) resp := &Response{ Request: req, } + // To extract the raw response through headers, we want to find the offsets + // for where we are at in the io.TeeReader compared to the bufio.Reader + // both at the start of the response parsing, and at the end. + hdrStart := tc.ReadPos() + // Parse the first line of the response. line, err := tp.ReadLine() if err != nil { @@ -202,6 +219,11 @@ func ReadResponse(r *bufio.Reader, req *Request) (*Response, error) { } return resp, err } + // No need to continue tee reads into the tee buffer, go ahead and + // disable it + tc.Disable() + hdrEnd := tc.ReadPos() + resp.HeadersRaw = tc.Bytes(hdrStart, hdrEnd) resp.Header = Header(mimeHeader) fixPragmaCacheControl(resp.Header) @@ -215,8 +237,11 @@ func ReadResponse(r *bufio.Reader, req *Request) (*Response, error) { } // RFC 2616: Should treat +// // Pragma: no-cache +// // like +// // Cache-Control: no-cache func fixPragmaCacheControl(header Header) { if hp, ok := header["Pragma"]; ok && len(hp) > 0 && hp[0] == "no-cache" { @@ -238,15 +263,15 @@ func (r *Response) ProtoAtLeast(major, minor int) bool { // // This method consults the following fields of the response r: // -// StatusCode -// ProtoMajor -// ProtoMinor -// Request.Method -// TransferEncoding -// Trailer -// Body -// ContentLength -// Header, values for non-canonical keys will have unpredictable behavior +// StatusCode +// ProtoMajor +// ProtoMinor +// Request.Method +// TransferEncoding +// Trailer +// Body +// ContentLength +// Header, values for non-canonical keys will have unpredictable behavior // // The Response Body is closed after it is sent. func (r *Response) Write(w io.Writer) error { diff --git a/lib/http/response_test.go b/lib/http/response_test.go index d5ba83474..b20f784cc 100644 --- a/lib/http/response_test.go +++ b/lib/http/response_test.go @@ -636,8 +636,8 @@ var readResponseCloseInMiddleTests = []struct { func TestReadResponseCloseInMiddle(t *testing.T) { t.Parallel() for _, test := range readResponseCloseInMiddleTests { - fatalf := func(format string, args ...interface{}) { - args = append([]interface{}{test.chunked, test.compressed}, args...) + fatalf := func(format string, args ...any) { + args = append([]any{test.chunked, test.compressed}, args...) t.Fatalf("on test chunked=%v, compressed=%v: "+format, args...) } checkErr := func(err error, msg string) { @@ -722,7 +722,7 @@ func TestReadResponseCloseInMiddle(t *testing.T) { } } -func diff(t *testing.T, prefix string, have, want interface{}) { +func diff(t *testing.T, prefix string, have, want any) { hv := reflect.ValueOf(have).Elem() wv := reflect.ValueOf(want).Elem() if hv.Type() != wv.Type() { @@ -842,10 +842,10 @@ func TestReadResponseErrors(t *testing.T) { name string // optional, defaults to in in string header Header - wantErr interface{} // nil, err value, or string substring + wantErr any // nil, err value, or string substring } - status := func(s string, wantErr interface{}) testCase { + status := func(s string, wantErr any) testCase { if wantErr == true { wantErr = "malformed HTTP status code" } @@ -856,7 +856,7 @@ func TestReadResponseErrors(t *testing.T) { } } - version := func(s string, wantErr interface{}) testCase { + version := func(s string, wantErr any) testCase { if wantErr == true { wantErr = "malformed HTTP version" } @@ -867,7 +867,7 @@ func TestReadResponseErrors(t *testing.T) { } } - contentLength := func(status, body string, wantErr interface{}, header Header) testCase { + contentLength := func(status, body string, wantErr any, header Header) testCase { return testCase{ name: fmt.Sprintf("status %q %q", status, body), in: fmt.Sprintf("HTTP/1.1 %s\r\n%s", status, body), @@ -937,7 +937,7 @@ func TestReadResponseErrors(t *testing.T) { // wantErr can be nil, an error value to match exactly, or type string to // match a substring. -func matchErr(err error, wantErr interface{}) error { +func matchErr(err error, wantErr any) error { if err == nil { if wantErr == nil { return nil diff --git a/lib/http/serve_test.go b/lib/http/serve_test.go index 2d18cc832..98f109b4f 100644 --- a/lib/http/serve_test.go +++ b/lib/http/serve_test.go @@ -1776,7 +1776,7 @@ func TestInvalidTrailerClosesConnection(t *testing.T) { // Read and Write. type slowTestConn struct { // over multiple calls to Read, time.Durations are slept, strings are read. - script []interface{} + script []any closec chan bool mu sync.Mutex // guards rd/wd @@ -1868,7 +1868,7 @@ func TestRequestBodyTimeoutClosesConnection(t *testing.T) { defer afterTest(t) for _, handler := range testHandlerBodyConsumers { conn := &slowTestConn{ - script: []interface{}{ + script: []any{ "POST /public HTTP/1.1\r\n" + "Host: test\r\n" + "Content-Length: 10000\r\n" + @@ -1905,7 +1905,7 @@ func TestRequestBodyTimeoutClosesConnection(t *testing.T) { func TestTimeoutHandler_h1(t *testing.T) { testTimeoutHandler(t, h1Mode) } -//func TestTimeoutHandler_h2(t *testing.T) { testTimeoutHandler(t, h2Mode) } +// func TestTimeoutHandler_h2(t *testing.T) { testTimeoutHandler(t, h2Mode) } func testTimeoutHandler(t *testing.T, h2 bool) { setParallel(t) defer afterTest(t) @@ -2283,7 +2283,7 @@ func TestHandlerPanicWithHijack(t *testing.T) { testHandlerPanic(t, true, h1Mode, "intentional death for testing") } -func testHandlerPanic(t *testing.T, withHijack, h2 bool, panicValue interface{}) { +func testHandlerPanic(t *testing.T, withHijack, h2 bool, panicValue any) { defer afterTest(t) // Unlike the other tests that set the log output to ioutil.Discard // to quiet the output, this test uses a pipe. The pipe serves three @@ -2397,7 +2397,7 @@ func TestServerWriteHijackZeroBytes(t *testing.T) { func TestServerNoDate_h1(t *testing.T) { testServerNoHeader(t, h1Mode, "Date") } -//func TestServerNoDate_h2(t *testing.T) { testServerNoHeader(t, h2Mode, "Date") } +// func TestServerNoDate_h2(t *testing.T) { testServerNoHeader(t, h2Mode, "Date") } func TestServerNoContentType_h1(t *testing.T) { testServerNoHeader(t, h1Mode, "Content-Type") } //func TestServerNoContentType_h2(t *testing.T) { testServerNoHeader(t, h2Mode, "Content-Type") } @@ -2454,7 +2454,7 @@ func TestStripPrefix(t *testing.T) { func TestRequestLimit_h1(t *testing.T) { testRequestLimit(t, h1Mode) } -//func TestRequestLimit_h2(t *testing.T) { testRequestLimit(t, h2Mode) } +// func TestRequestLimit_h2(t *testing.T) { testRequestLimit(t, h2Mode) } func testRequestLimit(t *testing.T, h2 bool) { setParallel(t) defer afterTest(t) @@ -2502,7 +2502,7 @@ func (cr countReader) Read(p []byte) (n int, err error) { func TestRequestBodyLimit_h1(t *testing.T) { testRequestBodyLimit(t, h1Mode) } -//func TestRequestBodyLimit_h2(t *testing.T) { testRequestBodyLimit(t, h2Mode) } +// func TestRequestBodyLimit_h2(t *testing.T) { testRequestBodyLimit(t, h2Mode) } func testRequestBodyLimit(t *testing.T, h2 bool) { setParallel(t) defer afterTest(t) @@ -2645,7 +2645,7 @@ func TestServerGracefulClose(t *testing.T) { func TestCaseSensitiveMethod_h1(t *testing.T) { testCaseSensitiveMethod(t, h1Mode) } -//func TestCaseSensitiveMethod_h2(t *testing.T) { testCaseSensitiveMethod(t, h2Mode) } +// func TestCaseSensitiveMethod_h2(t *testing.T) { testCaseSensitiveMethod(t, h2Mode) } func testCaseSensitiveMethod(t *testing.T, h2 bool) { defer afterTest(t) cst := newClientServerTest(t, h2, HandlerFunc(func(w ResponseWriter, r *Request) { @@ -3323,7 +3323,7 @@ func TestHTTP10ConnectionHeader(t *testing.T) { // See golang.org/issue/5660 func TestServerReaderFromOrder_h1(t *testing.T) { testServerReaderFromOrder(t, h1Mode) } -//func TestServerReaderFromOrder_h2(t *testing.T) { testServerReaderFromOrder(t, h2Mode) } +// func TestServerReaderFromOrder_h2(t *testing.T) { testServerReaderFromOrder(t, h2Mode) } func testServerReaderFromOrder(t *testing.T, h2 bool) { setParallel(t) defer afterTest(t) @@ -3439,7 +3439,7 @@ func testTransportAndServerSharedBodyRace(t *testing.T, h2 bool) { // this test fails, it hangs. This helps debugging and I've // added this enough times "temporarily". It now gets added // full time. - errorf := func(format string, args ...interface{}) { + errorf := func(format string, args ...any) { v := fmt.Sprintf(format, args...) println(v) t.Error(v) @@ -3448,10 +3448,10 @@ func testTransportAndServerSharedBodyRace(t *testing.T, h2 bool) { unblockBackend := make(chan bool) backend := newClientServerTest(t, h2, HandlerFunc(func(rw ResponseWriter, req *Request) { gone := rw.(CloseNotifier).CloseNotify() - didCopy := make(chan interface{}) + didCopy := make(chan any) go func() { n, err := io.CopyN(rw, req.Body, bodySize) - didCopy <- []interface{}{n, err} + didCopy <- []any{n, err} }() isGone := false Loop: @@ -3803,7 +3803,7 @@ func TestServerKeepAlivesEnabled(t *testing.T) { // golang.org/issue/7856 func TestServerEmptyBodyRace_h1(t *testing.T) { testServerEmptyBodyRace(t, h1Mode) } -//func TestServerEmptyBodyRace_h2(t *testing.T) { testServerEmptyBodyRace(t, h2Mode) } +// func TestServerEmptyBodyRace_h2(t *testing.T) { testServerEmptyBodyRace(t, h2Mode) } func testServerEmptyBodyRace(t *testing.T, h2 bool) { setParallel(t) defer afterTest(t) @@ -4134,7 +4134,7 @@ func TestHandlerFinishSkipBigContentLengthRead(t *testing.T) { func TestHandlerSetsBodyNil_h1(t *testing.T) { testHandlerSetsBodyNil(t, h1Mode) } -//func TestHandlerSetsBodyNil_h2(t *testing.T) { testHandlerSetsBodyNil(t, h2Mode) } +// func TestHandlerSetsBodyNil_h2(t *testing.T) { testHandlerSetsBodyNil(t, h2Mode) } func testHandlerSetsBodyNil(t *testing.T, h2 bool) { defer afterTest(t) cst := newClientServerTest(t, h2, HandlerFunc(func(w ResponseWriter, r *Request) { @@ -4538,10 +4538,11 @@ func benchmarkClientServerParallel(b *testing.B, parallelism int, useTLS bool) { // The client code runs in a subprocess. // // For use like: -// $ go test -c -// $ ./http.test -test.run=XX -test.bench=BenchmarkServer -test.benchtime=15s -test.cpuprofile=http.prof -// $ go tool pprof http.test http.prof -// (pprof) web +// +// $ go test -c +// $ ./http.test -test.run=XX -test.bench=BenchmarkServer -test.benchtime=15s -test.cpuprofile=http.prof +// $ go tool pprof http.test http.prof +// (pprof) web func BenchmarkServer(b *testing.B) { b.ReportAllocs() // Child process mode; @@ -5096,7 +5097,7 @@ func TestServerCloseDeadlock(t *testing.T) { // both HTTP/1 and HTTP/2. func TestServerKeepAlivesEnabled_h1(t *testing.T) { testServerKeepAlivesEnabled(t, h1Mode) } -//func TestServerKeepAlivesEnabled_h2(t *testing.T) { testServerKeepAlivesEnabled(t, h2Mode) } +// func TestServerKeepAlivesEnabled_h2(t *testing.T) { testServerKeepAlivesEnabled(t, h2Mode) } func testServerKeepAlivesEnabled(t *testing.T, h2 bool) { setParallel(t) defer afterTest(t) diff --git a/lib/http/server.go b/lib/http/server.go index 5a2e0e3ab..01d88e02f 100644 --- a/lib/http/server.go +++ b/lib/http/server.go @@ -460,8 +460,9 @@ type response struct { // prior to the headers being written. If the set of trailers is fixed // or known before the header is written, the normal Go trailers mechanism // is preferred: -// https://golang.org/pkg/net/http/#ResponseWriter -// https://golang.org/pkg/net/http/#example_ResponseWriter_trailers +// +// https://golang.org/pkg/net/http/#ResponseWriter +// https://golang.org/pkg/net/http/#example_ResponseWriter_trailers const TrailerPrefix = "Trailer:" // finalTrailers is called after the Handler exits and returns a non-nil @@ -772,7 +773,7 @@ var ( ) var copyBufPool = sync.Pool{ - New: func() interface{} { + New: func() any { b := make([]byte, 32*1024) return &b }, @@ -1473,14 +1474,14 @@ func (w *response) bodyAllowed() bool { // // The Writers are wired together like: // -// 1. *response (the ResponseWriter) -> -// 2. (*response).w, a *bufio.Writer of bufferBeforeChunkingSize bytes -// 3. chunkWriter.Writer (whose writeHeader finalizes Content-Length/Type) -// and which writes the chunk headers, if needed. -// 4. conn.buf, a bufio.Writer of default (4kB) bytes, writing to -> -// 5. checkConnErrorWriter{c}, which notes any non-nil error on Write -// and populates c.werr with it if so. but otherwise writes to: -// 6. the rwc, the net.Conn. +// 1. *response (the ResponseWriter) -> +// 2. (*response).w, a *bufio.Writer of bufferBeforeChunkingSize bytes +// 3. chunkWriter.Writer (whose writeHeader finalizes Content-Length/Type) +// and which writes the chunk headers, if needed. +// 4. conn.buf, a bufio.Writer of default (4kB) bytes, writing to -> +// 5. checkConnErrorWriter{c}, which notes any non-nil error on Write +// and populates c.werr with it if so. but otherwise writes to: +// 6. the rwc, the net.Conn. // // TODO(bradfitz): short-circuit some of the buffering when the // initial header contains both a Content-Type and Content-Length. @@ -1670,10 +1671,10 @@ func (c *conn) setState(nc net.Conn, state ConnState) { } } -// connStateInterface is an array of the interface{} versions of +// connStateInterface is an array of the any versions of // ConnState values, so we can use them in atomic.Values later without -// paying the cost of shoving their integers in an interface{}. -var connStateInterface = [...]interface{}{ +// paying the cost of shoving their integers in an any. +var connStateInterface = [...]any{ StateNew: StateNew, StateActive: StateActive, StateIdle: StateIdle, @@ -1959,7 +1960,7 @@ func Error(w ResponseWriter, error string, code int) { func NotFound(w ResponseWriter, r *Request) { Error(w, "404 page not found", StatusNotFound) } // NotFoundHandler returns a simple request handler -// that replies to each request with a ``404 page not found'' reply. +// that replies to each request with a “404 page not found” reply. func NotFoundHandler() Handler { return HandlerFunc(NotFound) } // StripPrefix returns a handler that serves HTTP requests @@ -2191,7 +2192,7 @@ func (mux *ServeMux) match(path string) (h Handler, pattern string) { // the pattern that will match after following the redirect. // // If there is no registered handler that applies to the request, -// Handler returns a ``page not found'' handler and an empty pattern. +// Handler returns a “page not found” handler and an empty pattern. func (mux *ServeMux) Handler(r *Request) (h Handler, pattern string) { if r.Method != "CONNECT" { if p := cleanPath(r.URL.Path); p != r.URL.Path { @@ -2746,7 +2747,7 @@ func (srv *Server) SetKeepAlivesEnabled(v bool) { srv.doneChan = nil } -func (s *Server) logf(format string, args ...interface{}) { +func (s *Server) logf(format string, args ...any) { if s.ErrorLog != nil { s.ErrorLog.Printf(format, args...) } else { diff --git a/lib/http/sniff_test.go b/lib/http/sniff_test.go index 16a8e5e79..707c5008b 100644 --- a/lib/http/sniff_test.go +++ b/lib/http/sniff_test.go @@ -103,7 +103,7 @@ func testServerContentType(t *testing.T, h2 bool) { // even if it's the empty string. func TestServerIssue5953_h1(t *testing.T) { testServerIssue5953(t, h1Mode) } -//func TestServerIssue5953_h2(t *testing.T) { testServerIssue5953(t, h2Mode) } +// func TestServerIssue5953_h2(t *testing.T) { testServerIssue5953(t, h2Mode) } func testServerIssue5953(t *testing.T, h2 bool) { defer afterTest(t) cst := newClientServerTest(t, h2, HandlerFunc(func(w ResponseWriter, r *Request) { @@ -127,7 +127,7 @@ func testServerIssue5953(t *testing.T, h2 bool) { func TestContentTypeWithCopy_h1(t *testing.T) { testContentTypeWithCopy(t, h1Mode) } -//func TestContentTypeWithCopy_h2(t *testing.T) { testContentTypeWithCopy(t, h2Mode) } +// func TestContentTypeWithCopy_h2(t *testing.T) { testContentTypeWithCopy(t, h2Mode) } func testContentTypeWithCopy(t *testing.T, h2 bool) { defer afterTest(t) @@ -164,7 +164,7 @@ func testContentTypeWithCopy(t *testing.T, h2 bool) { func TestSniffWriteSize_h1(t *testing.T) { testSniffWriteSize(t, h1Mode) } -//func TestSniffWriteSize_h2(t *testing.T) { testSniffWriteSize(t, h2Mode) } +// func TestSniffWriteSize_h2(t *testing.T) { testSniffWriteSize(t, h2Mode) } func testSniffWriteSize(t *testing.T, h2 bool) { setParallel(t) defer afterTest(t) diff --git a/lib/http/transfer.go b/lib/http/transfer.go index 0b452c774..45bc65611 100644 --- a/lib/http/transfer.go +++ b/lib/http/transfer.go @@ -68,7 +68,7 @@ type transferWriter struct { ByteReadCh chan readResult // non-nil if probeRequestBody called } -func newTransferWriter(r interface{}) (t *transferWriter, err error) { +func newTransferWriter(r any) (t *transferWriter, err error) { t = &transferWriter{} // Extract relevant fields @@ -175,10 +175,11 @@ func (t *transferWriter) shouldSendChunkedRequestBody() bool { // headers before the pipe is fed data), we need to be careful and bound how // long we wait for it. This delay will only affect users if all the following // are true: -// * the request body blocks -// * the content length is not set (or set to -1) -// * the method doesn't usually have a body (GET, HEAD, DELETE, ...) -// * there is no transfer-encoding=chunked already set. +// - the request body blocks +// - the content length is not set (or set to -1) +// - the method doesn't usually have a body (GET, HEAD, DELETE, ...) +// - there is no transfer-encoding=chunked already set. +// // In other words, this delay will not normally affect anybody, and there // are workarounds if it does. func (t *transferWriter) probeRequestBody() { @@ -401,7 +402,7 @@ func suppressedHeaders(status int) []string { } // msg is *Request or *Response. -func readTransfer(msg interface{}, r *bufio.Reader) (err error) { +func readTransfer(msg any, r *bufio.Reader) (err error) { t := &transferReader{RequestMethod: "GET"} // Unify input @@ -725,7 +726,7 @@ func fixTrailer(header Header, te []string) (Header, error) { // and then reads the trailer if necessary. type body struct { src io.Reader - hdr interface{} // non-nil (Response or Request) value means read trailer + hdr any // non-nil (Response or Request) value means read trailer r *bufio.Reader // underlying wire-format reader for the trailer closing bool // is the connection to be closed after reading body? doEarlyClose bool // whether Close should stop early diff --git a/lib/http/transport.go b/lib/http/transport.go index 019f86dd5..e2e7747bf 100644 --- a/lib/http/transport.go +++ b/lib/http/transport.go @@ -11,6 +11,7 @@ package http import ( "bufio" + "bytes" "compress/gzip" "container/list" "context" @@ -198,6 +199,10 @@ type Transport struct { h2transport *http2Transport // non-nil if http2 wired up // TODO: tunable on max per-host TCP dials in flight (Issue 13957) + + // Enable raw read buffering and raw header extraction + // zgrab2-specific + RawHeaderBuffer bool } // onceSetNextProtoDefaults initializes TLSNextProto. @@ -1027,6 +1032,8 @@ func (t *Transport) dialConn(ctx context.Context, cm connectMethod) (*persistCon pconn.conn = conn } + pconn.tee = &TeeConn{} + // Proxy setup. switch { case cm.proxyURL == nil: @@ -1058,8 +1065,10 @@ func (t *Transport) dialConn(ctx context.Context, cm connectMethod) (*persistCon // Read response. // Okay to use and discard buffered reader here, because // TLS server will not speak until spoken to. - br := bufio.NewReader(conn) - resp, err := ReadResponse(br, connectReq) + tee := TeeConn{ + br: bufio.NewReader(conn), + } + resp, err := ReadResponseTee(&tee, connectReq) if err != nil { conn.Close() return nil, err @@ -1123,13 +1132,49 @@ func (t *Transport) dialConn(ctx context.Context, cm connectMethod) (*persistCon } } - pconn.br = bufio.NewReader(pconn) + pconn.tee.br = bufio.NewReader(pconn) + pconn.tee.enabled = t.RawHeaderBuffer pconn.bw = bufio.NewWriter(persistConnWriter{pconn}) go pconn.readLoop() go pconn.writeLoop() return pconn, nil } +// The underlying br Reader is bufio, so it will perform read-ahead. +// The underlying tb is a bytes buffer, that acts as a tee, receiving +// the raw bytes for reads against the io.Reader backing br. +type TeeConn struct { + enabled bool // tee writes to tb are enabled + tb bytes.Buffer // buffer that tr tees into + br *bufio.Reader // from conn +} + +// To get the current position in tb as seen by the buffered io reader, +// we need to subtract out the buffered portion of the bufio reader. +func (t *TeeConn) ReadPos() int { + l := t.tb.Len() + if l == 0 { + return 0 + } + return l - t.br.Buffered() +} + +func (t *TeeConn) Bytes(s, e int) []byte { + if s >= t.tb.Len() { + return nil + } + return t.tb.Bytes()[s:e] +} + +func (t *TeeConn) BufioReader() *bufio.Reader { + return t.br +} + +// Stops the tee writes to t.tb +func (t *TeeConn) Disable() { + t.enabled = false +} + // persistConnWriter is the io.Writer written to by pc.bw. // It accumulates the number of bytes written to the underlying conn, // so the retry logic can determine whether any bytes made it across @@ -1212,7 +1257,6 @@ func useProxy(addr string) bool { // http://proxy.com|http http to proxy, http to anywhere after that // // Note: no support to https to the proxy yet. -// type connectMethod struct { proxyURL *url.URL // nil for no proxy, else full proxy URL targetScheme string // "http" or "https" @@ -1277,7 +1321,7 @@ type persistConn struct { cacheKey connectMethodKey conn net.Conn tlsState *tls.ConnectionState - br *bufio.Reader // from conn + tee *TeeConn // from conn, includes a raw buffer and tee bw *bufio.Writer // to conn nwrite int64 // bytes written reqch chan requestAndChan // written by roundTrip; read by readLoop @@ -1329,6 +1373,11 @@ func (pc *persistConn) Read(p []byte) (n int, err error) { pc.sawEOF = true } pc.readLimit -= int64(n) + if pc.tee.enabled && n > 0 { + if n, err := pc.tee.tb.Write(p[:n]); err != nil { + return n, err + } + } return } @@ -1482,7 +1531,7 @@ func (pc *persistConn) readLoop() { alive := true for alive { pc.readLimit = pc.maxHeaderResponseSize() - _, err := pc.br.Peek(1) + _, err := pc.tee.br.Peek(1) pc.mu.Lock() if pc.numExpectedResponses == 0 { @@ -1503,7 +1552,7 @@ func (pc *persistConn) readLoop() { closeErr = err } - if err != nil { + if err != nil && (!pc.sawEOF || resp == nil || resp.Status == "") { if pc.readLimit <= 0 { err = fmt.Errorf("net/http: server response headers exceeded %d bytes; aborted", pc.maxHeaderResponseSize()) } @@ -1636,7 +1685,7 @@ func (pc *persistConn) readLoopPeekFailLocked(peekErr error) { if pc.closed != nil { return } - if n := pc.br.Buffered(); n > 0 { + if n := pc.tee.br.Buffered(); n > 0 { } if peekErr == io.EOF { // common case. @@ -1651,12 +1700,15 @@ func (pc *persistConn) readLoopPeekFailLocked(peekErr error) { // trace is optional. func (pc *persistConn) readResponse(rc requestAndChan, trace *httptrace.ClientTrace) (resp *Response, err error) { if trace != nil && trace.GotFirstResponseByte != nil { - if peek, err := pc.br.Peek(1); err == nil && len(peek) == 1 { + if peek, err := pc.tee.br.Peek(1); err == nil && len(peek) == 1 { trace.GotFirstResponseByte() } } - resp, err = ReadResponse(pc.br, rc.req) + resp, err = ReadResponseTee(pc.tee, rc.req) if err != nil { + if err == io.ErrUnexpectedEOF { + pc.sawEOF = true + } return } if rc.continueCh != nil { @@ -1671,7 +1723,7 @@ func (pc *persistConn) readResponse(rc requestAndChan, trace *httptrace.ClientTr } if resp.StatusCode == 100 { pc.readLimit = pc.maxHeaderResponseSize() // reset the limit - resp, err = ReadResponse(pc.br, rc.req) + resp, err = ReadResponseTee(pc.tee, rc.req) if err != nil { return } diff --git a/lib/http/transport_test.go b/lib/http/transport_test.go index 841e7b079..e6316f07d 100644 --- a/lib/http/transport_test.go +++ b/lib/http/transport_test.go @@ -502,7 +502,7 @@ func TestTransportServerClosingUnexpectedly(t *testing.T) { c.Transport = tr fetch := func(n, retries int) string { - condFatalf := func(format string, arg ...interface{}) { + condFatalf := func(format string, arg ...any) { if retries <= 0 { t.Fatalf(format, arg...) } @@ -2594,7 +2594,7 @@ func TestRetryIdempotentRequestsOnError(t *testing.T) { mu sync.Mutex logbuf bytes.Buffer ) - logf := func(format string, args ...interface{}) { + logf := func(format string, args ...any) { mu.Lock() defer mu.Unlock() fmt.Fprintf(&logbuf, format, args...) @@ -3341,7 +3341,7 @@ func testTransportEventTrace(t *testing.T, h2 bool, noHooks bool) { var mu sync.Mutex // guards buf var buf bytes.Buffer - logf := func(format string, args ...interface{}) { + logf := func(format string, args ...any) { mu.Lock() defer mu.Unlock() fmt.Fprintf(&buf, format, args...) @@ -3476,7 +3476,7 @@ func TestTransportEventTraceRealDNS(t *testing.T) { c.Transport = tr var mu sync.Mutex // guards buf var buf bytes.Buffer - logf := func(format string, args ...interface{}) { + logf := func(format string, args ...any) { mu.Lock() defer mu.Unlock() fmt.Fprintf(&buf, format, args...) @@ -3645,7 +3645,7 @@ func TestTransportMaxIdleConns(t *testing.T) { func TestTransportIdleConnTimeout_h1(t *testing.T) { testTransportIdleConnTimeout(t, h1Mode) } -//func TestTransportIdleConnTimeout_h2(t *testing.T) { testTransportIdleConnTimeout(t, h2Mode) } +// func TestTransportIdleConnTimeout_h2(t *testing.T) { testTransportIdleConnTimeout(t, h2Mode) } func testTransportIdleConnTimeout(t *testing.T, h2 bool) { if testing.Short() { t.Skip("skipping in short mode") diff --git a/lib/http/triv.go b/lib/http/triv.go index 08ad40543..9fbdf0d7c 100644 --- a/lib/http/triv.go +++ b/lib/http/triv.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build ignore // +build ignore package main diff --git a/lib/mysql/errors.go b/lib/mysql/errors.go index 28964245d..cc3efab80 100644 --- a/lib/mysql/errors.go +++ b/lib/mysql/errors.go @@ -7,4538 +7,4538 @@ package mysql // https://dev.mysql.com/doc/refman/8.0/en/error-messages-server.html // ErrorCodes maps the 16-bit error codes to the "ErrorID"s defined in the docs. -var ErrorCodes = map[uint16]string { - 0x03e8: "ER_HASHCHK", - 0x03e9: "ER_NISAMCHK", - 0x03ea: "ER_NO", - 0x03eb: "ER_YES", - 0x03ec: "ER_CANT_CREATE_FILE", - 0x03ed: "ER_CANT_CREATE_TABLE", - 0x03ee: "ER_CANT_CREATE_DB", - 0x03ef: "ER_DB_CREATE_EXISTS", - 0x03f0: "ER_DB_DROP_EXISTS", - 0x03f1: "ER_DB_DROP_DELETE", - 0x03f2: "ER_DB_DROP_RMDIR", - 0x03f3: "ER_CANT_DELETE_FILE", - 0x03f4: "ER_CANT_FIND_SYSTEM_REC", - 0x03f5: "ER_CANT_GET_STAT", - 0x03f6: "ER_CANT_GET_WD", - 0x03f7: "ER_CANT_LOCK", - 0x03f8: "ER_CANT_OPEN_FILE", - 0x03f9: "ER_FILE_NOT_FOUND", - 0x03fa: "ER_CANT_READ_DIR", - 0x03fb: "ER_CANT_SET_WD", - 0x03fc: "ER_CHECKREAD", - 0x03fd: "ER_DISK_FULL", - 0x03fe: "ER_DUP_KEY", - 0x03ff: "ER_ERROR_ON_CLOSE", - 0x0400: "ER_ERROR_ON_READ", - 0x0401: "ER_ERROR_ON_RENAME", - 0x0402: "ER_ERROR_ON_WRITE", - 0x0403: "ER_FILE_USED", - 0x0404: "ER_FILSORT_ABORT", - 0x0405: "ER_FORM_NOT_FOUND", - 0x0406: "ER_GET_ERRNO", - 0x0407: "ER_ILLEGAL_HA", - 0x0408: "ER_KEY_NOT_FOUND", - 0x0409: "ER_NOT_FORM_FILE", - 0x040a: "ER_NOT_KEYFILE", - 0x040b: "ER_OLD_KEYFILE", - 0x040c: "ER_OPEN_AS_READONLY", - 0x040d: "ER_OUTOFMEMORY", - 0x040e: "ER_OUT_OF_SORTMEMORY", - 0x040f: "ER_UNEXPECTED_EOF", - 0x0410: "ER_CON_COUNT_ERROR", - 0x0411: "ER_OUT_OF_RESOURCES", - 0x0412: "ER_BAD_HOST_ERROR", - 0x0413: "ER_HANDSHAKE_ERROR", - 0x0414: "ER_DBACCESS_DENIED_ERROR", - 0x0415: "ER_ACCESS_DENIED_ERROR", - 0x0416: "ER_NO_DB_ERROR", - 0x0417: "ER_UNKNOWN_COM_ERROR", - 0x0418: "ER_BAD_NULL_ERROR", - 0x0419: "ER_BAD_DB_ERROR", - 0x041a: "ER_TABLE_EXISTS_ERROR", - 0x041b: "ER_BAD_TABLE_ERROR", - 0x041c: "ER_NON_UNIQ_ERROR", - 0x041d: "ER_SERVER_SHUTDOWN", - 0x041e: "ER_BAD_FIELD_ERROR", - 0x041f: "ER_WRONG_FIELD_WITH_GROUP", - 0x0420: "ER_WRONG_GROUP_FIELD", - 0x0421: "ER_WRONG_SUM_SELECT", - 0x0422: "ER_WRONG_VALUE_COUNT", - 0x0423: "ER_TOO_LONG_IDENT", - 0x0424: "ER_DUP_FIELDNAME", - 0x0425: "ER_DUP_KEYNAME", - 0x0426: "ER_DUP_ENTRY", - 0x0427: "ER_WRONG_FIELD_SPEC", - 0x0428: "ER_PARSE_ERROR", - 0x0429: "ER_EMPTY_QUERY", - 0x042a: "ER_NONUNIQ_TABLE", - 0x042b: "ER_INVALID_DEFAULT", - 0x042c: "ER_MULTIPLE_PRI_KEY", - 0x042d: "ER_TOO_MANY_KEYS", - 0x042e: "ER_TOO_MANY_KEY_PARTS", - 0x042f: "ER_TOO_LONG_KEY", - 0x0430: "ER_KEY_COLUMN_DOES_NOT_EXITS", - 0x0431: "ER_BLOB_USED_AS_KEY", - 0x0432: "ER_TOO_BIG_FIELDLENGTH", - 0x0433: "ER_WRONG_AUTO_KEY", - 0x0434: "ER_READY", - 0x0435: "ER_NORMAL_SHUTDOWN", - 0x0436: "ER_GOT_SIGNAL", - 0x0437: "ER_SHUTDOWN_COMPLETE", - 0x0438: "ER_FORCING_CLOSE", - 0x0439: "ER_IPSOCK_ERROR", - 0x043a: "ER_NO_SUCH_INDEX", - 0x043b: "ER_WRONG_FIELD_TERMINATORS", - 0x043c: "ER_BLOBS_AND_NO_TERMINATED", - 0x043d: "ER_TEXTFILE_NOT_READABLE", - 0x043e: "ER_FILE_EXISTS_ERROR", - 0x043f: "ER_LOAD_INFO", - 0x0440: "ER_ALTER_INFO", - 0x0441: "ER_WRONG_SUB_KEY", - 0x0442: "ER_CANT_REMOVE_ALL_FIELDS", - 0x0443: "ER_CANT_DROP_FIELD_OR_KEY", - 0x0444: "ER_INSERT_INFO", - 0x0445: "ER_UPDATE_TABLE_USED", - 0x0446: "ER_NO_SUCH_THREAD", - 0x0447: "ER_KILL_DENIED_ERROR", - 0x0448: "ER_NO_TABLES_USED", - 0x0449: "ER_TOO_BIG_SET", - 0x044a: "ER_NO_UNIQUE_LOGFILE", - 0x044b: "ER_TABLE_NOT_LOCKED_FOR_WRITE", - 0x044c: "ER_TABLE_NOT_LOCKED", - 0x044d: "ER_BLOB_CANT_HAVE_DEFAULT", - 0x044e: "ER_WRONG_DB_NAME", - 0x044f: "ER_WRONG_TABLE_NAME", - 0x0450: "ER_TOO_BIG_SELECT", - 0x0451: "ER_UNKNOWN_ERROR", - 0x0452: "ER_UNKNOWN_PROCEDURE", - 0x0453: "ER_WRONG_PARAMCOUNT_TO_PROCEDURE", - 0x0454: "ER_WRONG_PARAMETERS_TO_PROCEDURE", - 0x0455: "ER_UNKNOWN_TABLE", - 0x0456: "ER_FIELD_SPECIFIED_TWICE", - 0x0457: "ER_INVALID_GROUP_FUNC_USE", - 0x0458: "ER_UNSUPPORTED_EXTENSION", - 0x0459: "ER_TABLE_MUST_HAVE_COLUMNS", - 0x045a: "ER_RECORD_FILE_FULL", - 0x045b: "ER_UNKNOWN_CHARACTER_SET", - 0x045c: "ER_TOO_MANY_TABLES", - 0x045d: "ER_TOO_MANY_FIELDS", - 0x045e: "ER_TOO_BIG_ROWSIZE", - 0x045f: "ER_STACK_OVERRUN", - 0x0460: "ER_WRONG_OUTER_JOIN_UNUSED", - 0x0461: "ER_NULL_COLUMN_IN_INDEX", - 0x0462: "ER_CANT_FIND_UDF", - 0x0463: "ER_CANT_INITIALIZE_UDF", - 0x0464: "ER_UDF_NO_PATHS", - 0x0465: "ER_UDF_EXISTS", - 0x0466: "ER_CANT_OPEN_LIBRARY", - 0x0467: "ER_CANT_FIND_DL_ENTRY", - 0x0468: "ER_FUNCTION_NOT_DEFINED", - 0x0469: "ER_HOST_IS_BLOCKED", - 0x046a: "ER_HOST_NOT_PRIVILEGED", - 0x046b: "ER_PASSWORD_ANONYMOUS_USER", - 0x046c: "ER_PASSWORD_NOT_ALLOWED", - 0x046d: "ER_PASSWORD_NO_MATCH", - 0x046e: "ER_UPDATE_INFO", - 0x046f: "ER_CANT_CREATE_THREAD", - 0x0470: "ER_WRONG_VALUE_COUNT_ON_ROW", - 0x0471: "ER_CANT_REOPEN_TABLE", - 0x0472: "ER_INVALID_USE_OF_NULL", - 0x0473: "ER_REGEXP_ERROR", - 0x0474: "ER_MIX_OF_GROUP_FUNC_AND_FIELDS", - 0x0475: "ER_NONEXISTING_GRANT", - 0x0476: "ER_TABLEACCESS_DENIED_ERROR", - 0x0477: "ER_COLUMNACCESS_DENIED_ERROR", - 0x0478: "ER_ILLEGAL_GRANT_FOR_TABLE", - 0x0479: "ER_GRANT_WRONG_HOST_OR_USER", - 0x047a: "ER_NO_SUCH_TABLE", - 0x047b: "ER_NONEXISTING_TABLE_GRANT", - 0x047c: "ER_NOT_ALLOWED_COMMAND", - 0x047d: "ER_SYNTAX_ERROR", - 0x047e: "ER_UNUSED1", - 0x047f: "ER_UNUSED2", - 0x0480: "ER_ABORTING_CONNECTION", - 0x0481: "ER_NET_PACKET_TOO_LARGE", - 0x0482: "ER_NET_READ_ERROR_FROM_PIPE", - 0x0483: "ER_NET_FCNTL_ERROR", - 0x0484: "ER_NET_PACKETS_OUT_OF_ORDER", - 0x0485: "ER_NET_UNCOMPRESS_ERROR", - 0x0486: "ER_NET_READ_ERROR", - 0x0487: "ER_NET_READ_INTERRUPTED", - 0x0488: "ER_NET_ERROR_ON_WRITE", - 0x0489: "ER_NET_WRITE_INTERRUPTED", - 0x048a: "ER_TOO_LONG_STRING", - 0x048b: "ER_TABLE_CANT_HANDLE_BLOB", - 0x048c: "ER_TABLE_CANT_HANDLE_AUTO_INCREMENT", - 0x048d: "ER_UNUSED3", - 0x048e: "ER_WRONG_COLUMN_NAME", - 0x048f: "ER_WRONG_KEY_COLUMN", - 0x0490: "ER_WRONG_MRG_TABLE", - 0x0491: "ER_DUP_UNIQUE", - 0x0492: "ER_BLOB_KEY_WITHOUT_LENGTH", - 0x0493: "ER_PRIMARY_CANT_HAVE_NULL", - 0x0494: "ER_TOO_MANY_ROWS", - 0x0495: "ER_REQUIRES_PRIMARY_KEY", - 0x0496: "ER_NO_RAID_COMPILED", - 0x0497: "ER_UPDATE_WITHOUT_KEY_IN_SAFE_MODE", - 0x0498: "ER_KEY_DOES_NOT_EXITS", - 0x0499: "ER_CHECK_NO_SUCH_TABLE", - 0x049a: "ER_CHECK_NOT_IMPLEMENTED", - 0x049b: "ER_CANT_DO_THIS_DURING_AN_TRANSACTION", - 0x049c: "ER_ERROR_DURING_COMMIT", - 0x049d: "ER_ERROR_DURING_ROLLBACK", - 0x049e: "ER_ERROR_DURING_FLUSH_LOGS", - 0x049f: "ER_ERROR_DURING_CHECKPOINT", - 0x04a0: "ER_NEW_ABORTING_CONNECTION", - 0x04a1: "ER_DUMP_NOT_IMPLEMENTED", - 0x04a2: "ER_FLUSH_MASTER_BINLOG_CLOSED", - 0x04a3: "ER_INDEX_REBUILD", - 0x04a4: "ER_MASTER", - 0x04a5: "ER_MASTER_NET_READ", - 0x04a6: "ER_MASTER_NET_WRITE", - 0x04a7: "ER_FT_MATCHING_KEY_NOT_FOUND", - 0x04a8: "ER_LOCK_OR_ACTIVE_TRANSACTION", - 0x04a9: "ER_UNKNOWN_SYSTEM_VARIABLE", - 0x04aa: "ER_CRASHED_ON_USAGE", - 0x04ab: "ER_CRASHED_ON_REPAIR", - 0x04ac: "ER_WARNING_NOT_COMPLETE_ROLLBACK", - 0x04ad: "ER_TRANS_CACHE_FULL", - 0x04ae: "ER_SLAVE_MUST_STOP", - 0x04af: "ER_SLAVE_NOT_RUNNING", - 0x04b0: "ER_BAD_SLAVE", - 0x04b1: "ER_MASTER_INFO", - 0x04b2: "ER_SLAVE_THREAD", - 0x04b3: "ER_TOO_MANY_USER_CONNECTIONS", - 0x04b4: "ER_SET_CONSTANTS_ONLY", - 0x04b5: "ER_LOCK_WAIT_TIMEOUT", - 0x04b6: "ER_LOCK_TABLE_FULL", - 0x04b7: "ER_READ_ONLY_TRANSACTION", - 0x04b8: "ER_DROP_DB_WITH_READ_LOCK", - 0x04b9: "ER_CREATE_DB_WITH_READ_LOCK", - 0x04ba: "ER_WRONG_ARGUMENTS", - 0x04bb: "ER_NO_PERMISSION_TO_CREATE_USER", - 0x04bc: "ER_UNION_TABLES_IN_DIFFERENT_DIR", - 0x04bd: "ER_LOCK_DEADLOCK", - 0x04be: "ER_TABLE_CANT_HANDLE_FT", - 0x04bf: "ER_CANNOT_ADD_FOREIGN", - 0x04c0: "ER_NO_REFERENCED_ROW", - 0x04c1: "ER_ROW_IS_REFERENCED", - 0x04c2: "ER_CONNECT_TO_MASTER", - 0x04c3: "ER_QUERY_ON_MASTER", - 0x04c4: "ER_ERROR_WHEN_EXECUTING_COMMAND", - 0x04c5: "ER_WRONG_USAGE", - 0x04c6: "ER_WRONG_NUMBER_OF_COLUMNS_IN_SELECT", - 0x04c7: "ER_CANT_UPDATE_WITH_READLOCK", - 0x04c8: "ER_MIXING_NOT_ALLOWED", - 0x04c9: "ER_DUP_ARGUMENT", - 0x04ca: "ER_USER_LIMIT_REACHED", - 0x04cb: "ER_SPECIFIC_ACCESS_DENIED_ERROR", - 0x04cc: "ER_LOCAL_VARIABLE", - 0x04cd: "ER_GLOBAL_VARIABLE", - 0x04ce: "ER_NO_DEFAULT", - 0x04cf: "ER_WRONG_VALUE_FOR_VAR", - 0x04d0: "ER_WRONG_TYPE_FOR_VAR", - 0x04d1: "ER_VAR_CANT_BE_READ", - 0x04d2: "ER_CANT_USE_OPTION_HERE", - 0x04d3: "ER_NOT_SUPPORTED_YET", - 0x04d4: "ER_MASTER_FATAL_ERROR_READING_BINLOG", - 0x04d5: "ER_SLAVE_IGNORED_TABLE", - 0x04d6: "ER_INCORRECT_GLOBAL_LOCAL_VAR", - 0x04d7: "ER_WRONG_FK_DEF", - 0x04d8: "ER_KEY_REF_DO_NOT_MATCH_TABLE_REF", - 0x04d9: "ER_OPERAND_COLUMNS", - 0x04da: "ER_SUBQUERY_NO_1_ROW", - 0x04db: "ER_UNKNOWN_STMT_HANDLER", - 0x04dc: "ER_CORRUPT_HELP_DB", - 0x04dd: "ER_CYCLIC_REFERENCE", - 0x04de: "ER_AUTO_CONVERT", - 0x04df: "ER_ILLEGAL_REFERENCE", - 0x04e0: "ER_DERIVED_MUST_HAVE_ALIAS", - 0x04e1: "ER_SELECT_REDUCED", - 0x04e2: "ER_TABLENAME_NOT_ALLOWED_HERE", - 0x04e3: "ER_NOT_SUPPORTED_AUTH_MODE", - 0x04e4: "ER_SPATIAL_CANT_HAVE_NULL", - 0x04e5: "ER_COLLATION_CHARSET_MISMATCH", - 0x04e6: "ER_SLAVE_WAS_RUNNING", - 0x04e7: "ER_SLAVE_WAS_NOT_RUNNING", - 0x04e8: "ER_TOO_BIG_FOR_UNCOMPRESS", - 0x04e9: "ER_ZLIB_Z_MEM_ERROR", - 0x04ea: "ER_ZLIB_Z_BUF_ERROR", - 0x04eb: "ER_ZLIB_Z_DATA_ERROR", - 0x04ec: "ER_CUT_VALUE_GROUP_CONCAT", - 0x04ed: "ER_WARN_TOO_FEW_RECORDS", - 0x04ee: "ER_WARN_TOO_MANY_RECORDS", - 0x04ef: "ER_WARN_NULL_TO_NOTNULL", - 0x04f0: "ER_WARN_DATA_OUT_OF_RANGE", - 0x04f1: "WARN_DATA_TRUNCATED", - 0x04f2: "ER_WARN_USING_OTHER_HANDLER", - 0x04f3: "ER_CANT_AGGREGATE_2COLLATIONS", - 0x04f4: "ER_DROP_USER", - 0x04f5: "ER_REVOKE_GRANTS", - 0x04f6: "ER_CANT_AGGREGATE_3COLLATIONS", - 0x04f7: "ER_CANT_AGGREGATE_NCOLLATIONS", - 0x04f8: "ER_VARIABLE_IS_NOT_STRUCT", - 0x04f9: "ER_UNKNOWN_COLLATION", - 0x04fa: "ER_SLAVE_IGNORED_SSL_PARAMS", - 0x04fb: "ER_SERVER_IS_IN_SECURE_AUTH_MODE", - 0x04fc: "ER_WARN_FIELD_RESOLVED", - 0x04fd: "ER_BAD_SLAVE_UNTIL_COND", - 0x04fe: "ER_MISSING_SKIP_SLAVE", - 0x04ff: "ER_UNTIL_COND_IGNORED", - 0x0500: "ER_WRONG_NAME_FOR_INDEX", - 0x0501: "ER_WRONG_NAME_FOR_CATALOG", - 0x0502: "ER_WARN_QC_RESIZE", - 0x0503: "ER_BAD_FT_COLUMN", - 0x0504: "ER_UNKNOWN_KEY_CACHE", - 0x0505: "ER_WARN_HOSTNAME_WONT_WORK", - 0x0506: "ER_UNKNOWN_STORAGE_ENGINE", - 0x0507: "ER_WARN_DEPRECATED_SYNTAX", - 0x0508: "ER_NON_UPDATABLE_TABLE", - 0x0509: "ER_FEATURE_DISABLED", - 0x050a: "ER_OPTION_PREVENTS_STATEMENT", - 0x050b: "ER_DUPLICATED_VALUE_IN_TYPE", - 0x050c: "ER_TRUNCATED_WRONG_VALUE", - 0x050d: "ER_TOO_MUCH_AUTO_TIMESTAMP_COLS", - 0x050e: "ER_INVALID_ON_UPDATE", - 0x050f: "ER_UNSUPPORTED_PS", - 0x0510: "ER_GET_ERRMSG", - 0x0511: "ER_GET_TEMPORARY_ERRMSG", - 0x0512: "ER_UNKNOWN_TIME_ZONE", - 0x0513: "ER_WARN_INVALID_TIMESTAMP", - 0x0514: "ER_INVALID_CHARACTER_STRING", - 0x0515: "ER_WARN_ALLOWED_PACKET_OVERFLOWED", - 0x0516: "ER_CONFLICTING_DECLARATIONS", - 0x0517: "ER_SP_NO_RECURSIVE_CREATE", - 0x0518: "ER_SP_ALREADY_EXISTS", - 0x0519: "ER_SP_DOES_NOT_EXIST", - 0x051a: "ER_SP_DROP_FAILED", - 0x051b: "ER_SP_STORE_FAILED", - 0x051c: "ER_SP_LILABEL_MISMATCH", - 0x051d: "ER_SP_LABEL_REDEFINE", - 0x051e: "ER_SP_LABEL_MISMATCH", - 0x051f: "ER_SP_UNINIT_VAR", - 0x0520: "ER_SP_BADSELECT", - 0x0521: "ER_SP_BADRETURN", - 0x0522: "ER_SP_BADSTATEMENT", - 0x0523: "ER_UPDATE_LOG_DEPRECATED_IGNORED", - 0x0524: "ER_UPDATE_LOG_DEPRECATED_TRANSLATED", - 0x0525: "ER_QUERY_INTERRUPTED", - 0x0526: "ER_SP_WRONG_NO_OF_ARGS", - 0x0527: "ER_SP_COND_MISMATCH", - 0x0528: "ER_SP_NORETURN", - 0x0529: "ER_SP_NORETURNEND", - 0x052a: "ER_SP_BAD_CURSOR_QUERY", - 0x052b: "ER_SP_BAD_CURSOR_SELECT", - 0x052c: "ER_SP_CURSOR_MISMATCH", - 0x052d: "ER_SP_CURSOR_ALREADY_OPEN", - 0x052e: "ER_SP_CURSOR_NOT_OPEN", - 0x052f: "ER_SP_UNDECLARED_VAR", - 0x0530: "ER_SP_WRONG_NO_OF_FETCH_ARGS", - 0x0531: "ER_SP_FETCH_NO_DATA", - 0x0532: "ER_SP_DUP_PARAM", - 0x0533: "ER_SP_DUP_VAR", - 0x0534: "ER_SP_DUP_COND", - 0x0535: "ER_SP_DUP_CURS", - 0x0536: "ER_SP_CANT_ALTER", - 0x0537: "ER_SP_SUBSELECT_NYI", - 0x0538: "ER_STMT_NOT_ALLOWED_IN_SF_OR_TRG", - 0x0539: "ER_SP_VARCOND_AFTER_CURSHNDLR", - 0x053a: "ER_SP_CURSOR_AFTER_HANDLER", - 0x053b: "ER_SP_CASE_NOT_FOUND", - 0x053c: "ER_FPARSER_TOO_BIG_FILE", - 0x053d: "ER_FPARSER_BAD_HEADER", - 0x053e: "ER_FPARSER_EOF_IN_COMMENT", - 0x053f: "ER_FPARSER_ERROR_IN_PARAMETER", - 0x0540: "ER_FPARSER_EOF_IN_UNKNOWN_PARAMETER", - 0x0541: "ER_VIEW_NO_EXPLAIN", - 0x0542: "ER_FRM_UNKNOWN_TYPE", - 0x0543: "ER_WRONG_OBJECT", - 0x0544: "ER_NONUPDATEABLE_COLUMN", - 0x0545: "ER_VIEW_SELECT_DERIVED_UNUSED", - 0x0546: "ER_VIEW_SELECT_CLAUSE", - 0x0547: "ER_VIEW_SELECT_VARIABLE", - 0x0548: "ER_VIEW_SELECT_TMPTABLE", - 0x0549: "ER_VIEW_WRONG_LIST", - 0x054a: "ER_WARN_VIEW_MERGE", - 0x054b: "ER_WARN_VIEW_WITHOUT_KEY", - 0x054c: "ER_VIEW_INVALID", - 0x054d: "ER_SP_NO_DROP_SP", - 0x054e: "ER_SP_GOTO_IN_HNDLR", - 0x054f: "ER_TRG_ALREADY_EXISTS", - 0x0550: "ER_TRG_DOES_NOT_EXIST", - 0x0551: "ER_TRG_ON_VIEW_OR_TEMP_TABLE", - 0x0552: "ER_TRG_CANT_CHANGE_ROW", - 0x0553: "ER_TRG_NO_SUCH_ROW_IN_TRG", - 0x0554: "ER_NO_DEFAULT_FOR_FIELD", - 0x0555: "ER_DIVISION_BY_ZERO", - 0x0556: "ER_TRUNCATED_WRONG_VALUE_FOR_FIELD", - 0x0557: "ER_ILLEGAL_VALUE_FOR_TYPE", - 0x0558: "ER_VIEW_NONUPD_CHECK", - 0x0559: "ER_VIEW_CHECK_FAILED", - 0x055a: "ER_PROCACCESS_DENIED_ERROR", - 0x055b: "ER_RELAY_LOG_FAIL", - 0x055c: "ER_PASSWD_LENGTH", - 0x055d: "ER_UNKNOWN_TARGET_BINLOG", - 0x055e: "ER_IO_ERR_LOG_INDEX_READ", - 0x055f: "ER_BINLOG_PURGE_PROHIBITED", - 0x0560: "ER_FSEEK_FAIL", - 0x0561: "ER_BINLOG_PURGE_FATAL_ERR", - 0x0562: "ER_LOG_IN_USE", - 0x0563: "ER_LOG_PURGE_UNKNOWN_ERR", - 0x0564: "ER_RELAY_LOG_INIT", - 0x0565: "ER_NO_BINARY_LOGGING", - 0x0566: "ER_RESERVED_SYNTAX", - 0x0567: "ER_WSAS_FAILED", - 0x0568: "ER_DIFF_GROUPS_PROC", - 0x0569: "ER_NO_GROUP_FOR_PROC", - 0x056a: "ER_ORDER_WITH_PROC", - 0x056b: "ER_LOGGING_PROHIBIT_CHANGING_OF", - 0x056c: "ER_NO_FILE_MAPPING", - 0x056d: "ER_WRONG_MAGIC", - 0x056e: "ER_PS_MANY_PARAM", - 0x056f: "ER_KEY_PART_0", - 0x0570: "ER_VIEW_CHECKSUM", - 0x0571: "ER_VIEW_MULTIUPDATE", - 0x0572: "ER_VIEW_NO_INSERT_FIELD_LIST", - 0x0573: "ER_VIEW_DELETE_MERGE_VIEW", - 0x0574: "ER_CANNOT_USER", - 0x0575: "ER_XAER_NOTA", - 0x0576: "ER_XAER_INVAL", - 0x0577: "ER_XAER_RMFAIL", - 0x0578: "ER_XAER_OUTSIDE", - 0x0579: "ER_XAER_RMERR", - 0x057a: "ER_XA_RBROLLBACK", - 0x057b: "ER_NONEXISTING_PROC_GRANT", - 0x057c: "ER_PROC_AUTO_GRANT_FAIL", - 0x057d: "ER_PROC_AUTO_REVOKE_FAIL", - 0x057e: "ER_DATA_TOO_LONG", - 0x057f: "ER_SP_BAD_SQLSTATE", - 0x0580: "ER_STARTUP", - 0x0581: "ER_LOAD_FROM_FIXED_SIZE_ROWS_TO_VAR", - 0x0582: "ER_CANT_CREATE_USER_WITH_GRANT", - 0x0583: "ER_WRONG_VALUE_FOR_TYPE", - 0x0584: "ER_TABLE_DEF_CHANGED", - 0x0585: "ER_SP_DUP_HANDLER", - 0x0586: "ER_SP_NOT_VAR_ARG", - 0x0587: "ER_SP_NO_RETSET", - 0x0588: "ER_CANT_CREATE_GEOMETRY_OBJECT", - 0x0589: "ER_FAILED_ROUTINE_BREAK_BINLOG", - 0x058a: "ER_BINLOG_UNSAFE_ROUTINE", - 0x058b: "ER_BINLOG_CREATE_ROUTINE_NEED_SUPER", - 0x058c: "ER_EXEC_STMT_WITH_OPEN_CURSOR", - 0x058d: "ER_STMT_HAS_NO_OPEN_CURSOR", - 0x058e: "ER_COMMIT_NOT_ALLOWED_IN_SF_OR_TRG", - 0x058f: "ER_NO_DEFAULT_FOR_VIEW_FIELD", - 0x0590: "ER_SP_NO_RECURSION", - 0x0591: "ER_TOO_BIG_SCALE", - 0x0592: "ER_TOO_BIG_PRECISION", - 0x0593: "ER_M_BIGGER_THAN_D", - 0x0594: "ER_WRONG_LOCK_OF_SYSTEM_TABLE", - 0x0595: "ER_CONNECT_TO_FOREIGN_DATA_SOURCE", - 0x0596: "ER_QUERY_ON_FOREIGN_DATA_SOURCE", - 0x0597: "ER_FOREIGN_DATA_SOURCE_DOESNT_EXIST", - 0x0598: "ER_FOREIGN_DATA_STRING_INVALID_CANT_CREATE", - 0x0599: "ER_FOREIGN_DATA_STRING_INVALID", - 0x059a: "ER_CANT_CREATE_FEDERATED_TABLE", - 0x059b: "ER_TRG_IN_WRONG_SCHEMA", - 0x059c: "ER_STACK_OVERRUN_NEED_MORE", - 0x059d: "ER_TOO_LONG_BODY", - 0x059e: "ER_WARN_CANT_DROP_DEFAULT_KEYCACHE", - 0x059f: "ER_TOO_BIG_DISPLAYWIDTH", - 0x05a0: "ER_XAER_DUPID", - 0x05a1: "ER_DATETIME_FUNCTION_OVERFLOW", - 0x05a2: "ER_CANT_UPDATE_USED_TABLE_IN_SF_OR_TRG", - 0x05a3: "ER_VIEW_PREVENT_UPDATE", - 0x05a4: "ER_PS_NO_RECURSION", - 0x05a5: "ER_SP_CANT_SET_AUTOCOMMIT", - 0x05a6: "ER_MALFORMED_DEFINER", - 0x05a7: "ER_VIEW_FRM_NO_USER", - 0x05a8: "ER_VIEW_OTHER_USER", - 0x05a9: "ER_NO_SUCH_USER", - 0x05aa: "ER_FORBID_SCHEMA_CHANGE", - 0x05ab: "ER_ROW_IS_REFERENCED_2", - 0x05ac: "ER_NO_REFERENCED_ROW_2", - 0x05ad: "ER_SP_BAD_VAR_SHADOW", - 0x05ae: "ER_TRG_NO_DEFINER", - 0x05af: "ER_OLD_FILE_FORMAT", - 0x05b0: "ER_SP_RECURSION_LIMIT", - 0x05b1: "ER_SP_PROC_TABLE_CORRUPT", - 0x05b2: "ER_SP_WRONG_NAME", - 0x05b3: "ER_TABLE_NEEDS_UPGRADE", - 0x05b4: "ER_SP_NO_AGGREGATE", - 0x05b5: "ER_MAX_PREPARED_STMT_COUNT_REACHED", - 0x05b6: "ER_VIEW_RECURSIVE", - 0x05b7: "ER_NON_GROUPING_FIELD_USED", - 0x05b8: "ER_TABLE_CANT_HANDLE_SPKEYS", - 0x05b9: "ER_NO_TRIGGERS_ON_SYSTEM_SCHEMA", - 0x05ba: "ER_REMOVED_SPACES", - 0x05bb: "ER_AUTOINC_READ_FAILED", - 0x05bc: "ER_USERNAME", - 0x05bd: "ER_HOSTNAME", - 0x05be: "ER_WRONG_STRING_LENGTH", - 0x05bf: "ER_NON_INSERTABLE_TABLE", - 0x05c0: "ER_ADMIN_WRONG_MRG_TABLE", - 0x05c1: "ER_TOO_HIGH_LEVEL_OF_NESTING_FOR_SELECT", - 0x05c2: "ER_NAME_BECOMES_EMPTY", - 0x05c3: "ER_AMBIGUOUS_FIELD_TERM", - 0x05c4: "ER_FOREIGN_SERVER_EXISTS", - 0x05c5: "ER_FOREIGN_SERVER_DOESNT_EXIST", - 0x05c6: "ER_ILLEGAL_HA_CREATE_OPTION", - 0x05c7: "ER_PARTITION_REQUIRES_VALUES_ERROR", - 0x05c8: "ER_PARTITION_WRONG_VALUES_ERROR", - 0x05c9: "ER_PARTITION_MAXVALUE_ERROR", - 0x05ca: "ER_PARTITION_SUBPARTITION_ERROR", - 0x05cb: "ER_PARTITION_SUBPART_MIX_ERROR", - 0x05cc: "ER_PARTITION_WRONG_NO_PART_ERROR", - 0x05cd: "ER_PARTITION_WRONG_NO_SUBPART_ERROR", - 0x05ce: "ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR", - 0x05cf: "ER_NO_CONST_EXPR_IN_RANGE_OR_LIST_ERROR", - 0x05d0: "ER_FIELD_NOT_FOUND_PART_ERROR", - 0x05d1: "ER_LIST_OF_FIELDS_ONLY_IN_HASH_ERROR", - 0x05d2: "ER_INCONSISTENT_PARTITION_INFO_ERROR", - 0x05d3: "ER_PARTITION_FUNC_NOT_ALLOWED_ERROR", - 0x05d4: "ER_PARTITIONS_MUST_BE_DEFINED_ERROR", - 0x05d5: "ER_RANGE_NOT_INCREASING_ERROR", - 0x05d6: "ER_INCONSISTENT_TYPE_OF_FUNCTIONS_ERROR", - 0x05d7: "ER_MULTIPLE_DEF_CONST_IN_LIST_PART_ERROR", - 0x05d8: "ER_PARTITION_ENTRY_ERROR", - 0x05d9: "ER_MIX_HANDLER_ERROR", - 0x05da: "ER_PARTITION_NOT_DEFINED_ERROR", - 0x05db: "ER_TOO_MANY_PARTITIONS_ERROR", - 0x05dc: "ER_SUBPARTITION_ERROR", - 0x05dd: "ER_CANT_CREATE_HANDLER_FILE", - 0x05de: "ER_BLOB_FIELD_IN_PART_FUNC_ERROR", - 0x05df: "ER_UNIQUE_KEY_NEED_ALL_FIELDS_IN_PF", - 0x05e0: "ER_NO_PARTS_ERROR", - 0x05e1: "ER_PARTITION_MGMT_ON_NONPARTITIONED", - 0x05e2: "ER_FOREIGN_KEY_ON_PARTITIONED", - 0x05e3: "ER_DROP_PARTITION_NON_EXISTENT", - 0x05e4: "ER_DROP_LAST_PARTITION", - 0x05e5: "ER_COALESCE_ONLY_ON_HASH_PARTITION", - 0x05e6: "ER_REORG_HASH_ONLY_ON_SAME_NO", - 0x05e7: "ER_REORG_NO_PARAM_ERROR", - 0x05e8: "ER_ONLY_ON_RANGE_LIST_PARTITION", - 0x05e9: "ER_ADD_PARTITION_SUBPART_ERROR", - 0x05ea: "ER_ADD_PARTITION_NO_NEW_PARTITION", - 0x05eb: "ER_COALESCE_PARTITION_NO_PARTITION", - 0x05ec: "ER_REORG_PARTITION_NOT_EXIST", - 0x05ed: "ER_SAME_NAME_PARTITION", - 0x05ee: "ER_NO_BINLOG_ERROR", - 0x05ef: "ER_CONSECUTIVE_REORG_PARTITIONS", - 0x05f0: "ER_REORG_OUTSIDE_RANGE", - 0x05f1: "ER_PARTITION_FUNCTION_FAILURE", - 0x05f2: "ER_PART_STATE_ERROR", - 0x05f3: "ER_LIMITED_PART_RANGE", - 0x05f4: "ER_PLUGIN_IS_NOT_LOADED", - 0x05f5: "ER_WRONG_VALUE", - 0x05f6: "ER_NO_PARTITION_FOR_GIVEN_VALUE", - 0x05f7: "ER_FILEGROUP_OPTION_ONLY_ONCE", - 0x05f8: "ER_CREATE_FILEGROUP_FAILED", - 0x05f9: "ER_DROP_FILEGROUP_FAILED", - 0x05fa: "ER_TABLESPACE_AUTO_EXTEND_ERROR", - 0x05fb: "ER_WRONG_SIZE_NUMBER", - 0x05fc: "ER_SIZE_OVERFLOW_ERROR", - 0x05fd: "ER_ALTER_FILEGROUP_FAILED", - 0x05fe: "ER_BINLOG_ROW_LOGGING_FAILED", - 0x05ff: "ER_BINLOG_ROW_WRONG_TABLE_DEF", - 0x0600: "ER_BINLOG_ROW_RBR_TO_SBR", - 0x0601: "ER_EVENT_ALREADY_EXISTS", - 0x0602: "ER_EVENT_STORE_FAILED", - 0x0603: "ER_EVENT_DOES_NOT_EXIST", - 0x0604: "ER_EVENT_CANT_ALTER", - 0x0605: "ER_EVENT_DROP_FAILED", - 0x0606: "ER_EVENT_INTERVAL_NOT_POSITIVE_OR_TOO_BIG", - 0x0607: "ER_EVENT_ENDS_BEFORE_STARTS", - 0x0608: "ER_EVENT_EXEC_TIME_IN_THE_PAST", - 0x0609: "ER_EVENT_OPEN_TABLE_FAILED", - 0x060a: "ER_EVENT_NEITHER_M_EXPR_NOR_M_AT", - 0x060b: "ER_OBSOLETE_COL_COUNT_DOESNT_MATCH_CORRUPTED", - 0x060c: "ER_OBSOLETE_CANNOT_LOAD_FROM_TABLE", - 0x060d: "ER_EVENT_CANNOT_DELETE", - 0x060e: "ER_EVENT_COMPILE_ERROR", - 0x060f: "ER_EVENT_SAME_NAME", - 0x0610: "ER_EVENT_DATA_TOO_LONG", - 0x0611: "ER_DROP_INDEX_FK", - 0x0612: "ER_WARN_DEPRECATED_SYNTAX_WITH_VER", - 0x0613: "ER_CANT_WRITE_LOCK_LOG_TABLE", - 0x0614: "ER_CANT_LOCK_LOG_TABLE", - 0x0615: "ER_FOREIGN_DUPLICATE_KEY_OLD_UNUSED", - 0x0616: "ER_COL_COUNT_DOESNT_MATCH_PLEASE_UPDATE", - 0x0617: "ER_TEMP_TABLE_PREVENTS_SWITCH_OUT_OF_RBR", - 0x0618: "ER_STORED_FUNCTION_PREVENTS_SWITCH_BINLOG_FORMAT", - 0x0619: "ER_NDB_CANT_SWITCH_BINLOG_FORMAT", - 0x061a: "ER_PARTITION_NO_TEMPORARY", - 0x061b: "ER_PARTITION_CONST_DOMAIN_ERROR", - 0x061c: "ER_PARTITION_FUNCTION_IS_NOT_ALLOWED", - 0x061d: "ER_DDL_LOG_ERROR", - 0x061e: "ER_NULL_IN_VALUES_LESS_THAN", - 0x061f: "ER_WRONG_PARTITION_NAME", - 0x0620: "ER_CANT_CHANGE_TX_CHARACTERISTICS", - 0x0621: "ER_DUP_ENTRY_AUTOINCREMENT_CASE", - 0x0622: "ER_EVENT_MODIFY_QUEUE_ERROR", - 0x0623: "ER_EVENT_SET_VAR_ERROR", - 0x0624: "ER_PARTITION_MERGE_ERROR", - 0x0625: "ER_CANT_ACTIVATE_LOG", - 0x0626: "ER_RBR_NOT_AVAILABLE", - 0x0627: "ER_BASE64_DECODE_ERROR", - 0x0628: "ER_EVENT_RECURSION_FORBIDDEN", - 0x0629: "ER_EVENTS_DB_ERROR", - 0x062a: "ER_ONLY_INTEGERS_ALLOWED", - 0x062b: "ER_UNSUPORTED_LOG_ENGINE", - 0x062c: "ER_BAD_LOG_STATEMENT", - 0x062d: "ER_CANT_RENAME_LOG_TABLE", - 0x062e: "ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT", - 0x062f: "ER_WRONG_PARAMETERS_TO_NATIVE_FCT", - 0x0630: "ER_WRONG_PARAMETERS_TO_STORED_FCT", - 0x0631: "ER_NATIVE_FCT_NAME_COLLISION", - 0x0632: "ER_DUP_ENTRY_WITH_KEY_NAME", - 0x0633: "ER_BINLOG_PURGE_EMFILE", - 0x0634: "ER_EVENT_CANNOT_CREATE_IN_THE_PAST", - 0x0635: "ER_EVENT_CANNOT_ALTER_IN_THE_PAST", - 0x0636: "ER_SLAVE_INCIDENT", - 0x0637: "ER_NO_PARTITION_FOR_GIVEN_VALUE_SILENT", - 0x0638: "ER_BINLOG_UNSAFE_STATEMENT", - 0x0639: "ER_BINLOG_FATAL_ERROR", - 0x063a: "ER_SLAVE_RELAY_LOG_READ_FAILURE", - 0x063b: "ER_SLAVE_RELAY_LOG_WRITE_FAILURE", - 0x063c: "ER_SLAVE_CREATE_EVENT_FAILURE", - 0x063d: "ER_SLAVE_MASTER_COM_FAILURE", - 0x063e: "ER_BINLOG_LOGGING_IMPOSSIBLE", - 0x063f: "ER_VIEW_NO_CREATION_CTX", - 0x0640: "ER_VIEW_INVALID_CREATION_CTX", - 0x0641: "ER_SR_INVALID_CREATION_CTX", - 0x0642: "ER_TRG_CORRUPTED_FILE", - 0x0643: "ER_TRG_NO_CREATION_CTX", - 0x0644: "ER_TRG_INVALID_CREATION_CTX", - 0x0645: "ER_EVENT_INVALID_CREATION_CTX", - 0x0646: "ER_TRG_CANT_OPEN_TABLE", - 0x0647: "ER_CANT_CREATE_SROUTINE", - 0x0648: "ER_NEVER_USED", - 0x0649: "ER_NO_FORMAT_DESCRIPTION_EVENT_BEFORE_BINLOG_STATEMENT", - 0x064a: "ER_SLAVE_CORRUPT_EVENT", - 0x064b: "ER_LOAD_DATA_INVALID_COLUMN_UNUSED", - 0x064c: "ER_LOG_PURGE_NO_FILE", - 0x064d: "ER_XA_RBTIMEOUT", - 0x064e: "ER_XA_RBDEADLOCK", - 0x064f: "ER_NEED_REPREPARE", - 0x0650: "ER_DELAYED_NOT_SUPPORTED", - 0x0651: "WARN_NO_MASTER_INFO", - 0x0652: "WARN_OPTION_IGNORED", - 0x0653: "ER_PLUGIN_DELETE_BUILTIN", - 0x0654: "WARN_PLUGIN_BUSY", - 0x0655: "ER_VARIABLE_IS_READONLY", - 0x0656: "ER_WARN_ENGINE_TRANSACTION_ROLLBACK", - 0x0657: "ER_SLAVE_HEARTBEAT_FAILURE", - 0x0658: "ER_SLAVE_HEARTBEAT_VALUE_OUT_OF_RANGE", - 0x0659: "ER_NDB_REPLICATION_SCHEMA_ERROR", - 0x065a: "ER_CONFLICT_FN_PARSE_ERROR", - 0x065b: "ER_EXCEPTIONS_WRITE_ERROR", - 0x065c: "ER_TOO_LONG_TABLE_COMMENT", - 0x065d: "ER_TOO_LONG_FIELD_COMMENT", - 0x065e: "ER_FUNC_INEXISTENT_NAME_COLLISION", - 0x065f: "ER_DATABASE_NAME", - 0x0660: "ER_TABLE_NAME", - 0x0661: "ER_PARTITION_NAME", - 0x0662: "ER_SUBPARTITION_NAME", - 0x0663: "ER_TEMPORARY_NAME", - 0x0664: "ER_RENAMED_NAME", - 0x0665: "ER_TOO_MANY_CONCURRENT_TRXS", - 0x0666: "WARN_NON_ASCII_SEPARATOR_NOT_IMPLEMENTED", - 0x0667: "ER_DEBUG_SYNC_TIMEOUT", - 0x0668: "ER_DEBUG_SYNC_HIT_LIMIT", - 0x0669: "ER_DUP_SIGNAL_SET", - 0x066a: "ER_SIGNAL_WARN", - 0x066b: "ER_SIGNAL_NOT_FOUND", - 0x066c: "ER_SIGNAL_EXCEPTION", - 0x066d: "ER_RESIGNAL_WITHOUT_ACTIVE_HANDLER", - 0x066e: "ER_SIGNAL_BAD_CONDITION_TYPE", - 0x066f: "WARN_COND_ITEM_TRUNCATED", - 0x0670: "ER_COND_ITEM_TOO_LONG", - 0x0671: "ER_UNKNOWN_LOCALE", - 0x0672: "ER_SLAVE_IGNORE_SERVER_IDS", - 0x0673: "ER_QUERY_CACHE_DISABLED", - 0x0674: "ER_SAME_NAME_PARTITION_FIELD", - 0x0675: "ER_PARTITION_COLUMN_LIST_ERROR", - 0x0676: "ER_WRONG_TYPE_COLUMN_VALUE_ERROR", - 0x0677: "ER_TOO_MANY_PARTITION_FUNC_FIELDS_ERROR", - 0x0678: "ER_MAXVALUE_IN_VALUES_IN", - 0x0679: "ER_TOO_MANY_VALUES_ERROR", - 0x067a: "ER_ROW_SINGLE_PARTITION_FIELD_ERROR", - 0x067b: "ER_FIELD_TYPE_NOT_ALLOWED_AS_PARTITION_FIELD", - 0x067c: "ER_PARTITION_FIELDS_TOO_LONG", - 0x067d: "ER_BINLOG_ROW_ENGINE_AND_STMT_ENGINE", - 0x067e: "ER_BINLOG_ROW_MODE_AND_STMT_ENGINE", - 0x067f: "ER_BINLOG_UNSAFE_AND_STMT_ENGINE", - 0x0680: "ER_BINLOG_ROW_INJECTION_AND_STMT_ENGINE", - 0x0681: "ER_BINLOG_STMT_MODE_AND_ROW_ENGINE", - 0x0682: "ER_BINLOG_ROW_INJECTION_AND_STMT_MODE", - 0x0683: "ER_BINLOG_MULTIPLE_ENGINES_AND_SELF_LOGGING_ENGINE", - 0x0684: "ER_BINLOG_UNSAFE_LIMIT", - 0x0685: "ER_UNUSED4", - 0x0686: "ER_BINLOG_UNSAFE_SYSTEM_TABLE", - 0x0687: "ER_BINLOG_UNSAFE_AUTOINC_COLUMNS", - 0x0688: "ER_BINLOG_UNSAFE_UDF", - 0x0689: "ER_BINLOG_UNSAFE_SYSTEM_VARIABLE", - 0x068a: "ER_BINLOG_UNSAFE_SYSTEM_FUNCTION", - 0x068b: "ER_BINLOG_UNSAFE_NONTRANS_AFTER_TRANS", - 0x068c: "ER_MESSAGE_AND_STATEMENT", - 0x068d: "ER_SLAVE_CONVERSION_FAILED", - 0x068e: "ER_SLAVE_CANT_CREATE_CONVERSION", - 0x068f: "ER_INSIDE_TRANSACTION_PREVENTS_SWITCH_BINLOG_FORMAT", - 0x0690: "ER_PATH_LENGTH", - 0x0691: "ER_WARN_DEPRECATED_SYNTAX_NO_REPLACEMENT", - 0x0692: "ER_WRONG_NATIVE_TABLE_STRUCTURE", - 0x0693: "ER_WRONG_PERFSCHEMA_USAGE", - 0x0694: "ER_WARN_I_S_SKIPPED_TABLE", - 0x0695: "ER_INSIDE_TRANSACTION_PREVENTS_SWITCH_BINLOG_DIRECT", - 0x0696: "ER_STORED_FUNCTION_PREVENTS_SWITCH_BINLOG_DIRECT", - 0x0697: "ER_SPATIAL_MUST_HAVE_GEOM_COL", - 0x0698: "ER_TOO_LONG_INDEX_COMMENT", - 0x0699: "ER_LOCK_ABORTED", - 0x069a: "ER_DATA_OUT_OF_RANGE", - 0x069b: "ER_WRONG_SPVAR_TYPE_IN_LIMIT", - 0x069c: "ER_BINLOG_UNSAFE_MULTIPLE_ENGINES_AND_SELF_LOGGING_ENGINE", - 0x069d: "ER_BINLOG_UNSAFE_MIXED_STATEMENT", - 0x069e: "ER_INSIDE_TRANSACTION_PREVENTS_SWITCH_SQL_LOG_BIN", - 0x069f: "ER_STORED_FUNCTION_PREVENTS_SWITCH_SQL_LOG_BIN", - 0x06a0: "ER_FAILED_READ_FROM_PAR_FILE", - 0x06a1: "ER_VALUES_IS_NOT_INT_TYPE_ERROR", - 0x06a2: "ER_ACCESS_DENIED_NO_PASSWORD_ERROR", - 0x06a3: "ER_SET_PASSWORD_AUTH_PLUGIN", - 0x06a4: "ER_GRANT_PLUGIN_USER_EXISTS", - 0x06a5: "ER_TRUNCATE_ILLEGAL_FK", - 0x06a6: "ER_PLUGIN_IS_PERMANENT", - 0x06a7: "ER_SLAVE_HEARTBEAT_VALUE_OUT_OF_RANGE_MIN", - 0x06a8: "ER_SLAVE_HEARTBEAT_VALUE_OUT_OF_RANGE_MAX", - 0x06a9: "ER_STMT_CACHE_FULL", - 0x06aa: "ER_MULTI_UPDATE_KEY_CONFLICT", - 0x06ab: "ER_TABLE_NEEDS_REBUILD", - 0x06ac: "WARN_OPTION_BELOW_LIMIT", - 0x06ad: "ER_INDEX_COLUMN_TOO_LONG", - 0x06ae: "ER_ERROR_IN_TRIGGER_BODY", - 0x06af: "ER_ERROR_IN_UNKNOWN_TRIGGER_BODY", - 0x06b0: "ER_INDEX_CORRUPT", - 0x06b1: "ER_UNDO_RECORD_TOO_BIG", - 0x06b2: "ER_BINLOG_UNSAFE_INSERT_IGNORE_SELECT", - 0x06b3: "ER_BINLOG_UNSAFE_INSERT_SELECT_UPDATE", - 0x06b4: "ER_BINLOG_UNSAFE_REPLACE_SELECT", - 0x06b5: "ER_BINLOG_UNSAFE_CREATE_IGNORE_SELECT", - 0x06b6: "ER_BINLOG_UNSAFE_CREATE_REPLACE_SELECT", - 0x06b7: "ER_BINLOG_UNSAFE_UPDATE_IGNORE", - 0x06b8: "ER_PLUGIN_NO_UNINSTALL", - 0x06b9: "ER_PLUGIN_NO_INSTALL", - 0x06ba: "ER_BINLOG_UNSAFE_WRITE_AUTOINC_SELECT", - 0x06bb: "ER_BINLOG_UNSAFE_CREATE_SELECT_AUTOINC", - 0x06bc: "ER_BINLOG_UNSAFE_INSERT_TWO_KEYS", - 0x06bd: "ER_TABLE_IN_FK_CHECK", - 0x06be: "ER_UNSUPPORTED_ENGINE", - 0x06bf: "ER_BINLOG_UNSAFE_AUTOINC_NOT_FIRST", - 0x06c0: "ER_CANNOT_LOAD_FROM_TABLE_V2", - 0x06c1: "ER_MASTER_DELAY_VALUE_OUT_OF_RANGE", - 0x06c2: "ER_ONLY_FD_AND_RBR_EVENTS_ALLOWED_IN_BINLOG_STATEMENT", - 0x06c3: "ER_PARTITION_EXCHANGE_DIFFERENT_OPTION", - 0x06c4: "ER_PARTITION_EXCHANGE_PART_TABLE", - 0x06c5: "ER_PARTITION_EXCHANGE_TEMP_TABLE", - 0x06c6: "ER_PARTITION_INSTEAD_OF_SUBPARTITION", - 0x06c7: "ER_UNKNOWN_PARTITION", - 0x06c8: "ER_TABLES_DIFFERENT_METADATA", - 0x06c9: "ER_ROW_DOES_NOT_MATCH_PARTITION", - 0x06ca: "ER_BINLOG_CACHE_SIZE_GREATER_THAN_MAX", - 0x06cb: "ER_WARN_INDEX_NOT_APPLICABLE", - 0x06cc: "ER_PARTITION_EXCHANGE_FOREIGN_KEY", - 0x06cd: "ER_NO_SUCH_KEY_VALUE", - 0x06ce: "ER_RPL_INFO_DATA_TOO_LONG", - 0x06cf: "ER_NETWORK_READ_EVENT_CHECKSUM_FAILURE", - 0x06d0: "ER_BINLOG_READ_EVENT_CHECKSUM_FAILURE", - 0x06d1: "ER_BINLOG_STMT_CACHE_SIZE_GREATER_THAN_MAX", - 0x06d2: "ER_CANT_UPDATE_TABLE_IN_CREATE_TABLE_SELECT", - 0x06d3: "ER_PARTITION_CLAUSE_ON_NONPARTITIONED", - 0x06d4: "ER_ROW_DOES_NOT_MATCH_GIVEN_PARTITION_SET", - 0x06d5: "ER_NO_SUCH_PARTITION__UNUSED", - 0x06d6: "ER_CHANGE_RPL_INFO_REPOSITORY_FAILURE", - 0x06d7: "ER_WARNING_NOT_COMPLETE_ROLLBACK_WITH_CREATED_TEMP_TABLE", - 0x06d8: "ER_WARNING_NOT_COMPLETE_ROLLBACK_WITH_DROPPED_TEMP_TABLE", - 0x06d9: "ER_MTS_FEATURE_IS_NOT_SUPPORTED", - 0x06da: "ER_MTS_UPDATED_DBS_GREATER_MAX", - 0x06db: "ER_MTS_CANT_PARALLEL", - 0x06dc: "ER_MTS_INCONSISTENT_DATA", - 0x06dd: "ER_FULLTEXT_NOT_SUPPORTED_WITH_PARTITIONING", - 0x06de: "ER_DA_INVALID_CONDITION_NUMBER", - 0x06df: "ER_INSECURE_PLAIN_TEXT", - 0x06e0: "ER_INSECURE_CHANGE_MASTER", - 0x06e1: "ER_FOREIGN_DUPLICATE_KEY_WITH_CHILD_INFO", - 0x06e2: "ER_FOREIGN_DUPLICATE_KEY_WITHOUT_CHILD_INFO", - 0x06e3: "ER_SQLTHREAD_WITH_SECURE_SLAVE", - 0x06e4: "ER_TABLE_HAS_NO_FT", - 0x06e5: "ER_VARIABLE_NOT_SETTABLE_IN_SF_OR_TRIGGER", - 0x06e6: "ER_VARIABLE_NOT_SETTABLE_IN_TRANSACTION", - 0x06e7: "ER_GTID_NEXT_IS_NOT_IN_GTID_NEXT_LIST", - 0x06e8: "ER_CANT_CHANGE_GTID_NEXT_IN_TRANSACTION", - 0x06e9: "ER_SET_STATEMENT_CANNOT_INVOKE_FUNCTION", - 0x06ea: "ER_GTID_NEXT_CANT_BE_AUTOMATIC_IF_GTID_NEXT_LIST_IS_NON_NULL", - 0x06eb: "ER_SKIPPING_LOGGED_TRANSACTION", - 0x06ec: "ER_MALFORMED_GTID_SET_SPECIFICATION", - 0x06ed: "ER_MALFORMED_GTID_SET_ENCODING", - 0x06ee: "ER_MALFORMED_GTID_SPECIFICATION", - 0x06ef: "ER_GNO_EXHAUSTED", - 0x06f0: "ER_BAD_SLAVE_AUTO_POSITION", - 0x06f1: "ER_AUTO_POSITION_REQUIRES_GTID_MODE_NOT_OFF", - 0x06f2: "ER_CANT_DO_IMPLICIT_COMMIT_IN_TRX_WHEN_GTID_NEXT_IS_SET", - 0x06f3: "ER_GTID_MODE_ON_REQUIRES_ENFORCE_GTID_CONSISTENCY_ON", - 0x06f4: "ER_GTID_MODE_REQUIRES_BINLOG", - 0x06f5: "ER_CANT_SET_GTID_NEXT_TO_GTID_WHEN_GTID_MODE_IS_OFF", - 0x06f6: "ER_CANT_SET_GTID_NEXT_TO_ANONYMOUS_WHEN_GTID_MODE_IS_ON", - 0x06f7: "ER_CANT_SET_GTID_NEXT_LIST_TO_NON_NULL_WHEN_GTID_MODE_IS_OFF", - 0x06f8: "ER_FOUND_GTID_EVENT_WHEN_GTID_MODE_IS_OFF__UNUSED", - 0x06f9: "ER_GTID_UNSAFE_NON_TRANSACTIONAL_TABLE", - 0x06fa: "ER_GTID_UNSAFE_CREATE_SELECT", - 0x06fb: "ER_GTID_UNSAFE_CREATE_DROP_TEMPORARY_TABLE_IN_TRANSACTION", - 0x06fc: "ER_GTID_MODE_CAN_ONLY_CHANGE_ONE_STEP_AT_A_TIME", - 0x06fd: "ER_MASTER_HAS_PURGED_REQUIRED_GTIDS", - 0x06fe: "ER_CANT_SET_GTID_NEXT_WHEN_OWNING_GTID", - 0x06ff: "ER_UNKNOWN_EXPLAIN_FORMAT", - 0x0700: "ER_CANT_EXECUTE_IN_READ_ONLY_TRANSACTION", - 0x0701: "ER_TOO_LONG_TABLE_PARTITION_COMMENT", - 0x0702: "ER_SLAVE_CONFIGURATION", - 0x0703: "ER_INNODB_FT_LIMIT", - 0x0704: "ER_INNODB_NO_FT_TEMP_TABLE", - 0x0705: "ER_INNODB_FT_WRONG_DOCID_COLUMN", - 0x0706: "ER_INNODB_FT_WRONG_DOCID_INDEX", - 0x0707: "ER_INNODB_ONLINE_LOG_TOO_BIG", - 0x0708: "ER_UNKNOWN_ALTER_ALGORITHM", - 0x0709: "ER_UNKNOWN_ALTER_LOCK", - 0x070a: "ER_MTS_CHANGE_MASTER_CANT_RUN_WITH_GAPS", - 0x070b: "ER_MTS_RECOVERY_FAILURE", - 0x070c: "ER_MTS_RESET_WORKERS", - 0x070d: "ER_COL_COUNT_DOESNT_MATCH_CORRUPTED_V2", - 0x070e: "ER_SLAVE_SILENT_RETRY_TRANSACTION", - 0x070f: "ER_DISCARD_FK_CHECKS_RUNNING", - 0x0710: "ER_TABLE_SCHEMA_MISMATCH", - 0x0711: "ER_TABLE_IN_SYSTEM_TABLESPACE", - 0x0712: "ER_IO_READ_ERROR", - 0x0713: "ER_IO_WRITE_ERROR", - 0x0714: "ER_TABLESPACE_MISSING", - 0x0715: "ER_TABLESPACE_EXISTS", - 0x0716: "ER_TABLESPACE_DISCARDED", - 0x0717: "ER_INTERNAL_ERROR", - 0x0718: "ER_INNODB_IMPORT_ERROR", - 0x0719: "ER_INNODB_INDEX_CORRUPT", - 0x071a: "ER_INVALID_YEAR_COLUMN_LENGTH", - 0x071b: "ER_NOT_VALID_PASSWORD", - 0x071c: "ER_MUST_CHANGE_PASSWORD", - 0x071d: "ER_FK_NO_INDEX_CHILD", - 0x071e: "ER_FK_NO_INDEX_PARENT", - 0x071f: "ER_FK_FAIL_ADD_SYSTEM", - 0x0720: "ER_FK_CANNOT_OPEN_PARENT", - 0x0721: "ER_FK_INCORRECT_OPTION", - 0x0722: "ER_FK_DUP_NAME", - 0x0723: "ER_PASSWORD_FORMAT", - 0x0724: "ER_FK_COLUMN_CANNOT_DROP", - 0x0725: "ER_FK_COLUMN_CANNOT_DROP_CHILD", - 0x0726: "ER_FK_COLUMN_NOT_NULL", - 0x0727: "ER_DUP_INDEX", - 0x0728: "ER_FK_COLUMN_CANNOT_CHANGE", - 0x0729: "ER_FK_COLUMN_CANNOT_CHANGE_CHILD", - 0x072a: "ER_UNUSED5", - 0x072b: "ER_MALFORMED_PACKET", - 0x072c: "ER_READ_ONLY_MODE", - 0x072d: "ER_GTID_NEXT_TYPE_UNDEFINED_GTID", - 0x072e: "ER_VARIABLE_NOT_SETTABLE_IN_SP", - 0x072f: "ER_CANT_SET_GTID_PURGED_WHEN_GTID_MODE_IS_OFF", - 0x0730: "ER_CANT_SET_GTID_PURGED_WHEN_GTID_EXECUTED_IS_NOT_EMPTY", - 0x0731: "ER_CANT_SET_GTID_PURGED_WHEN_OWNED_GTIDS_IS_NOT_EMPTY", - 0x0732: "ER_GTID_PURGED_WAS_CHANGED", - 0x0733: "ER_GTID_EXECUTED_WAS_CHANGED", - 0x0734: "ER_BINLOG_STMT_MODE_AND_NO_REPL_TABLES", - 0x0735: "ER_ALTER_OPERATION_NOT_SUPPORTED", - 0x0736: "ER_ALTER_OPERATION_NOT_SUPPORTED_REASON", - 0x0737: "ER_ALTER_OPERATION_NOT_SUPPORTED_REASON_COPY", - 0x0738: "ER_ALTER_OPERATION_NOT_SUPPORTED_REASON_PARTITION", - 0x0739: "ER_ALTER_OPERATION_NOT_SUPPORTED_REASON_FK_RENAME", - 0x073a: "ER_ALTER_OPERATION_NOT_SUPPORTED_REASON_COLUMN_TYPE", - 0x073b: "ER_ALTER_OPERATION_NOT_SUPPORTED_REASON_FK_CHECK", - 0x073c: "ER_UNUSED6", - 0x073d: "ER_ALTER_OPERATION_NOT_SUPPORTED_REASON_NOPK", - 0x073e: "ER_ALTER_OPERATION_NOT_SUPPORTED_REASON_AUTOINC", - 0x073f: "ER_ALTER_OPERATION_NOT_SUPPORTED_REASON_HIDDEN_FTS", - 0x0740: "ER_ALTER_OPERATION_NOT_SUPPORTED_REASON_CHANGE_FTS", - 0x0741: "ER_ALTER_OPERATION_NOT_SUPPORTED_REASON_FTS", - 0x0742: "ER_SQL_SLAVE_SKIP_COUNTER_NOT_SETTABLE_IN_GTID_MODE", - 0x0743: "ER_DUP_UNKNOWN_IN_INDEX", - 0x0744: "ER_IDENT_CAUSES_TOO_LONG_PATH", - 0x0745: "ER_ALTER_OPERATION_NOT_SUPPORTED_REASON_NOT_NULL", - 0x0746: "ER_MUST_CHANGE_PASSWORD_LOGIN", - 0x0747: "ER_ROW_IN_WRONG_PARTITION", - 0x0748: "ER_MTS_EVENT_BIGGER_PENDING_JOBS_SIZE_MAX", - 0x0749: "ER_INNODB_NO_FT_USES_PARSER", - 0x074a: "ER_BINLOG_LOGICAL_CORRUPTION", - 0x074b: "ER_WARN_PURGE_LOG_IN_USE", - 0x074c: "ER_WARN_PURGE_LOG_IS_ACTIVE", - 0x074d: "ER_AUTO_INCREMENT_CONFLICT", - 0x074e: "WARN_ON_BLOCKHOLE_IN_RBR", - 0x074f: "ER_SLAVE_MI_INIT_REPOSITORY", - 0x0750: "ER_SLAVE_RLI_INIT_REPOSITORY", - 0x0751: "ER_ACCESS_DENIED_CHANGE_USER_ERROR", - 0x0752: "ER_INNODB_READ_ONLY", - 0x0753: "ER_STOP_SLAVE_SQL_THREAD_TIMEOUT", - 0x0754: "ER_STOP_SLAVE_IO_THREAD_TIMEOUT", - 0x0755: "ER_TABLE_CORRUPT", - 0x0756: "ER_TEMP_FILE_WRITE_FAILURE", - 0x0757: "ER_INNODB_FT_AUX_NOT_HEX_ID", - 0x0758: "ER_OLD_TEMPORALS_UPGRADED", - 0x0759: "ER_INNODB_FORCED_RECOVERY", - 0x075a: "ER_AES_INVALID_IV", - 0x075b: "ER_PLUGIN_CANNOT_BE_UNINSTALLED", - 0x075c: "ER_GTID_UNSAFE_BINLOG_SPLITTABLE_STATEMENT_AND_ASSIGNED_GTID", - 0x075d: "ER_SLAVE_HAS_MORE_GTIDS_THAN_MASTER", - 0x075e: "ER_MISSING_KEY", - 0x0772: "ER_SLAVE_IO_THREAD_MUST_STOP", - 0x0bb8: "ER_FILE_CORRUPT", - 0x0bb9: "ER_ERROR_ON_MASTER", - 0x0bba: "ER_INCONSISTENT_ERROR", - 0x0bbb: "ER_STORAGE_ENGINE_NOT_LOADED", - 0x0bbc: "ER_GET_STACKED_DA_WITHOUT_ACTIVE_HANDLER", - 0x0bbd: "ER_WARN_LEGACY_SYNTAX_CONVERTED", - 0x0bbe: "ER_BINLOG_UNSAFE_FULLTEXT_PLUGIN", - 0x0bbf: "ER_CANNOT_DISCARD_TEMPORARY_TABLE", - 0x0bc0: "ER_FK_DEPTH_EXCEEDED", - 0x0bc1: "ER_COL_COUNT_DOESNT_MATCH_PLEASE_UPDATE_V2", - 0x0bc2: "ER_WARN_TRIGGER_DOESNT_HAVE_CREATED", - 0x0bc3: "ER_REFERENCED_TRG_DOES_NOT_EXIST", - 0x0bc4: "ER_EXPLAIN_NOT_SUPPORTED", - 0x0bc5: "ER_INVALID_FIELD_SIZE", - 0x0bc6: "ER_MISSING_HA_CREATE_OPTION", - 0x0bc7: "ER_ENGINE_OUT_OF_MEMORY", - 0x0bc8: "ER_PASSWORD_EXPIRE_ANONYMOUS_USER", - 0x0bc9: "ER_SLAVE_SQL_THREAD_MUST_STOP", - 0x0bca: "ER_NO_FT_MATERIALIZED_SUBQUERY", - 0x0bcb: "ER_INNODB_UNDO_LOG_FULL", - 0x0bcc: "ER_INVALID_ARGUMENT_FOR_LOGARITHM", - 0x0bcd: "ER_SLAVE_CHANNEL_IO_THREAD_MUST_STOP", - 0x0bce: "ER_WARN_OPEN_TEMP_TABLES_MUST_BE_ZERO", - 0x0bcf: "ER_WARN_ONLY_MASTER_LOG_FILE_NO_POS", - 0x0bd0: "ER_QUERY_TIMEOUT", - 0x0bd1: "ER_NON_RO_SELECT_DISABLE_TIMER", - 0x0bd2: "ER_DUP_LIST_ENTRY", - 0x0bd3: "ER_SQL_MODE_NO_EFFECT", - 0x0bd4: "ER_AGGREGATE_ORDER_FOR_UNION", - 0x0bd5: "ER_AGGREGATE_ORDER_NON_AGG_QUERY", - 0x0bd6: "ER_SLAVE_WORKER_STOPPED_PREVIOUS_THD_ERROR", - 0x0bd7: "ER_DONT_SUPPORT_SLAVE_PRESERVE_COMMIT_ORDER", - 0x0bd8: "ER_SERVER_OFFLINE_MODE", - 0x0bd9: "ER_GIS_DIFFERENT_SRIDS", - 0x0bda: "ER_GIS_UNSUPPORTED_ARGUMENT", - 0x0bdb: "ER_GIS_UNKNOWN_ERROR", - 0x0bdc: "ER_GIS_UNKNOWN_EXCEPTION", - 0x0bdd: "ER_GIS_INVALID_DATA", - 0x0bde: "ER_BOOST_GEOMETRY_EMPTY_INPUT_EXCEPTION", - 0x0bdf: "ER_BOOST_GEOMETRY_CENTROID_EXCEPTION", - 0x0be0: "ER_BOOST_GEOMETRY_OVERLAY_INVALID_INPUT_EXCEPTION", - 0x0be1: "ER_BOOST_GEOMETRY_TURN_INFO_EXCEPTION", - 0x0be2: "ER_BOOST_GEOMETRY_SELF_INTERSECTION_POINT_EXCEPTION", - 0x0be3: "ER_BOOST_GEOMETRY_UNKNOWN_EXCEPTION", - 0x0be4: "ER_STD_BAD_ALLOC_ERROR", - 0x0be5: "ER_STD_DOMAIN_ERROR", - 0x0be6: "ER_STD_LENGTH_ERROR", - 0x0be7: "ER_STD_INVALID_ARGUMENT", - 0x0be8: "ER_STD_OUT_OF_RANGE_ERROR", - 0x0be9: "ER_STD_OVERFLOW_ERROR", - 0x0bea: "ER_STD_RANGE_ERROR", - 0x0beb: "ER_STD_UNDERFLOW_ERROR", - 0x0bec: "ER_STD_LOGIC_ERROR", - 0x0bed: "ER_STD_RUNTIME_ERROR", - 0x0bee: "ER_STD_UNKNOWN_EXCEPTION", - 0x0bef: "ER_GIS_DATA_WRONG_ENDIANESS", - 0x0bf0: "ER_CHANGE_MASTER_PASSWORD_LENGTH", - 0x0bf1: "ER_USER_LOCK_WRONG_NAME", - 0x0bf2: "ER_USER_LOCK_DEADLOCK", - 0x0bf3: "ER_REPLACE_INACCESSIBLE_ROWS", - 0x0bf4: "ER_ALTER_OPERATION_NOT_SUPPORTED_REASON_GIS", - 0x0bf5: "ER_ILLEGAL_USER_VAR", - 0x0bf6: "ER_GTID_MODE_OFF", - 0x0bf7: "ER_UNSUPPORTED_BY_REPLICATION_THREAD", - 0x0bf8: "ER_INCORRECT_TYPE", - 0x0bf9: "ER_FIELD_IN_ORDER_NOT_SELECT", - 0x0bfa: "ER_AGGREGATE_IN_ORDER_NOT_SELECT", - 0x0bfb: "ER_INVALID_RPL_WILD_TABLE_FILTER_PATTERN", - 0x0bfc: "ER_NET_OK_PACKET_TOO_LARGE", - 0x0bfd: "ER_INVALID_JSON_DATA", - 0x0bfe: "ER_INVALID_GEOJSON_MISSING_MEMBER", - 0x0bff: "ER_INVALID_GEOJSON_WRONG_TYPE", - 0x0c00: "ER_INVALID_GEOJSON_UNSPECIFIED", - 0x0c01: "ER_DIMENSION_UNSUPPORTED", - 0x0c02: "ER_SLAVE_CHANNEL_DOES_NOT_EXIST", - 0x0c03: "ER_SLAVE_MULTIPLE_CHANNELS_HOST_PORT", - 0x0c04: "ER_SLAVE_CHANNEL_NAME_INVALID_OR_TOO_LONG", - 0x0c05: "ER_SLAVE_NEW_CHANNEL_WRONG_REPOSITORY", - 0x0c06: "ER_SLAVE_CHANNEL_DELETE", - 0x0c07: "ER_SLAVE_MULTIPLE_CHANNELS_CMD", - 0x0c08: "ER_SLAVE_MAX_CHANNELS_EXCEEDED", - 0x0c09: "ER_SLAVE_CHANNEL_MUST_STOP", - 0x0c0a: "ER_SLAVE_CHANNEL_NOT_RUNNING", - 0x0c0b: "ER_SLAVE_CHANNEL_WAS_RUNNING", - 0x0c0c: "ER_SLAVE_CHANNEL_WAS_NOT_RUNNING", - 0x0c0d: "ER_SLAVE_CHANNEL_SQL_THREAD_MUST_STOP", - 0x0c0e: "ER_SLAVE_CHANNEL_SQL_SKIP_COUNTER", - 0x0c0f: "ER_WRONG_FIELD_WITH_GROUP_V2", - 0x0c10: "ER_MIX_OF_GROUP_FUNC_AND_FIELDS_V2", - 0x0c11: "ER_WARN_DEPRECATED_SYSVAR_UPDATE", - 0x0c12: "ER_WARN_DEPRECATED_SQLMODE", - 0x0c13: "ER_CANNOT_LOG_PARTIAL_DROP_DATABASE_WITH_GTID", - 0x0c14: "ER_GROUP_REPLICATION_CONFIGURATION", - 0x0c15: "ER_GROUP_REPLICATION_RUNNING", - 0x0c16: "ER_GROUP_REPLICATION_APPLIER_INIT_ERROR", - 0x0c17: "ER_GROUP_REPLICATION_STOP_APPLIER_THREAD_TIMEOUT", - 0x0c18: "ER_GROUP_REPLICATION_COMMUNICATION_LAYER_SESSION_ERROR", - 0x0c19: "ER_GROUP_REPLICATION_COMMUNICATION_LAYER_JOIN_ERROR", - 0x0c1a: "ER_BEFORE_DML_VALIDATION_ERROR", - 0x0c1b: "ER_PREVENTS_VARIABLE_WITHOUT_RBR", - 0x0c1c: "ER_RUN_HOOK_ERROR", - 0x0c1d: "ER_TRANSACTION_ROLLBACK_DURING_COMMIT", - 0x0c1e: "ER_GENERATED_COLUMN_FUNCTION_IS_NOT_ALLOWED", - 0x0c1f: "ER_UNSUPPORTED_ALTER_INPLACE_ON_VIRTUAL_COLUMN", - 0x0c20: "ER_WRONG_FK_OPTION_FOR_GENERATED_COLUMN", - 0x0c21: "ER_NON_DEFAULT_VALUE_FOR_GENERATED_COLUMN", - 0x0c22: "ER_UNSUPPORTED_ACTION_ON_GENERATED_COLUMN", - 0x0c23: "ER_GENERATED_COLUMN_NON_PRIOR", - 0x0c24: "ER_DEPENDENT_BY_GENERATED_COLUMN", - 0x0c25: "ER_GENERATED_COLUMN_REF_AUTO_INC", - 0x0c26: "ER_FEATURE_NOT_AVAILABLE", - 0x0c27: "ER_CANT_SET_GTID_MODE", - 0x0c28: "ER_CANT_USE_AUTO_POSITION_WITH_GTID_MODE_OFF", - 0x0c29: "ER_CANT_REPLICATE_ANONYMOUS_WITH_AUTO_POSITION", - 0x0c2a: "ER_CANT_REPLICATE_ANONYMOUS_WITH_GTID_MODE_ON", - 0x0c2b: "ER_CANT_REPLICATE_GTID_WITH_GTID_MODE_OFF", - 0x0c2c: "ER_CANT_ENFORCE_GTID_CONSISTENCY_WITH_ONGOING_GTID_VIOLATING_TX", - 0x0c2d: "ER_ENFORCE_GTID_CONSISTENCY_WARN_WITH_ONGOING_GTID_VIOLATING_TX", - 0x0c2e: "ER_ACCOUNT_HAS_BEEN_LOCKED", - 0x0c2f: "ER_WRONG_TABLESPACE_NAME", - 0x0c30: "ER_TABLESPACE_IS_NOT_EMPTY", - 0x0c31: "ER_WRONG_FILE_NAME", - 0x0c32: "ER_BOOST_GEOMETRY_INCONSISTENT_TURNS_EXCEPTION", - 0x0c33: "ER_WARN_OPTIMIZER_HINT_SYNTAX_ERROR", - 0x0c34: "ER_WARN_BAD_MAX_EXECUTION_TIME", - 0x0c35: "ER_WARN_UNSUPPORTED_MAX_EXECUTION_TIME", - 0x0c36: "ER_WARN_CONFLICTING_HINT", - 0x0c37: "ER_WARN_UNKNOWN_QB_NAME", - 0x0c38: "ER_UNRESOLVED_HINT_NAME", - 0x0c39: "ER_WARN_ON_MODIFYING_GTID_EXECUTED_TABLE", - 0x0c3a: "ER_PLUGGABLE_PROTOCOL_COMMAND_NOT_SUPPORTED", - 0x0c3b: "ER_LOCKING_SERVICE_WRONG_NAME", - 0x0c3c: "ER_LOCKING_SERVICE_DEADLOCK", - 0x0c3d: "ER_LOCKING_SERVICE_TIMEOUT", - 0x0c3e: "ER_GIS_MAX_POINTS_IN_GEOMETRY_OVERFLOWED", - 0x0c3f: "ER_SQL_MODE_MERGED", - 0x0c40: "ER_VTOKEN_PLUGIN_TOKEN_MISMATCH", - 0x0c41: "ER_VTOKEN_PLUGIN_TOKEN_NOT_FOUND", - 0x0c42: "ER_CANT_SET_VARIABLE_WHEN_OWNING_GTID", - 0x0c43: "ER_SLAVE_CHANNEL_OPERATION_NOT_ALLOWED", - 0x0c44: "ER_INVALID_JSON_TEXT", - 0x0c45: "ER_INVALID_JSON_TEXT_IN_PARAM", - 0x0c46: "ER_INVALID_JSON_BINARY_DATA", - 0x0c47: "ER_INVALID_JSON_PATH", - 0x0c48: "ER_INVALID_JSON_CHARSET", - 0x0c49: "ER_INVALID_JSON_CHARSET_IN_FUNCTION", - 0x0c4a: "ER_INVALID_TYPE_FOR_JSON", - 0x0c4b: "ER_INVALID_CAST_TO_JSON", - 0x0c4c: "ER_INVALID_JSON_PATH_CHARSET", - 0x0c4d: "ER_INVALID_JSON_PATH_WILDCARD", - 0x0c4e: "ER_JSON_VALUE_TOO_BIG", - 0x0c4f: "ER_JSON_KEY_TOO_BIG", - 0x0c50: "ER_JSON_USED_AS_KEY", - 0x0c51: "ER_JSON_VACUOUS_PATH", - 0x0c52: "ER_JSON_BAD_ONE_OR_ALL_ARG", - 0x0c53: "ER_NUMERIC_JSON_VALUE_OUT_OF_RANGE", - 0x0c54: "ER_INVALID_JSON_VALUE_FOR_CAST", - 0x0c55: "ER_JSON_DOCUMENT_TOO_DEEP", - 0x0c56: "ER_JSON_DOCUMENT_NULL_KEY", - 0x0c57: "ER_SECURE_TRANSPORT_REQUIRED", - 0x0c58: "ER_NO_SECURE_TRANSPORTS_CONFIGURED", - 0x0c59: "ER_DISABLED_STORAGE_ENGINE", - 0x0c5a: "ER_USER_DOES_NOT_EXIST", - 0x0c5b: "ER_USER_ALREADY_EXISTS", - 0x0c5c: "ER_AUDIT_API_ABORT", - 0x0c5d: "ER_INVALID_JSON_PATH_ARRAY_CELL", - 0x0c5e: "ER_BUFPOOL_RESIZE_INPROGRESS", - 0x0c5f: "ER_FEATURE_DISABLED_SEE_DOC", - 0x0c60: "ER_SERVER_ISNT_AVAILABLE", - 0x0c61: "ER_SESSION_WAS_KILLED", - 0x0c62: "ER_CAPACITY_EXCEEDED", - 0x0c63: "ER_CAPACITY_EXCEEDED_IN_RANGE_OPTIMIZER", - 0x0c64: "ER_TABLE_NEEDS_UPG_PART", - 0x0c65: "ER_CANT_WAIT_FOR_EXECUTED_GTID_SET_WHILE_OWNING_A_GTID", - 0x0c66: "ER_CANNOT_ADD_FOREIGN_BASE_COL_VIRTUAL", - 0x0c67: "ER_CANNOT_CREATE_VIRTUAL_INDEX_CONSTRAINT", - 0x0c68: "ER_ERROR_ON_MODIFYING_GTID_EXECUTED_TABLE", - 0x0c69: "ER_LOCK_REFUSED_BY_ENGINE", - 0x0c6a: "ER_UNSUPPORTED_ALTER_ONLINE_ON_VIRTUAL_COLUMN", - 0x0c6b: "ER_MASTER_KEY_ROTATION_NOT_SUPPORTED_BY_SE", - 0x0c6c: "ER_MASTER_KEY_ROTATION_ERROR_BY_SE", - 0x0c6d: "ER_MASTER_KEY_ROTATION_BINLOG_FAILED", - 0x0c6e: "ER_MASTER_KEY_ROTATION_SE_UNAVAILABLE", - 0x0c6f: "ER_TABLESPACE_CANNOT_ENCRYPT", - 0x0c70: "ER_INVALID_ENCRYPTION_OPTION", - 0x0c71: "ER_CANNOT_FIND_KEY_IN_KEYRING", - 0x0c72: "ER_CAPACITY_EXCEEDED_IN_PARSER", - 0x0c73: "ER_UNSUPPORTED_ALTER_ENCRYPTION_INPLACE", - 0x0c74: "ER_KEYRING_UDF_KEYRING_SERVICE_ERROR", - 0x0c75: "ER_USER_COLUMN_OLD_LENGTH", - 0x0c76: "ER_CANT_RESET_MASTER", - 0x0c77: "ER_GROUP_REPLICATION_MAX_GROUP_SIZE", - 0x0c78: "ER_CANNOT_ADD_FOREIGN_BASE_COL_STORED", - 0x0c79: "ER_TABLE_REFERENCED", - 0x0c7a: "ER_PARTITION_ENGINE_DEPRECATED_FOR_TABLE", - 0x0c7b: "ER_WARN_USING_GEOMFROMWKB_TO_SET_SRID_ZERO", - 0x0c7c: "ER_WARN_USING_GEOMFROMWKB_TO_SET_SRID", - 0x0c7d: "ER_XA_RETRY", - 0x0c7e: "ER_KEYRING_AWS_UDF_AWS_KMS_ERROR", - 0x0c7f: "ER_BINLOG_UNSAFE_XA", - 0x0c80: "ER_UDF_ERROR", - 0x0c81: "ER_KEYRING_MIGRATION_FAILURE", - 0x0c82: "ER_KEYRING_ACCESS_DENIED_ERROR", - 0x0c83: "ER_KEYRING_MIGRATION_STATUS", - 0x0c84: "ER_PLUGIN_FAILED_TO_OPEN_TABLES", - 0x0c85: "ER_PLUGIN_FAILED_TO_OPEN_TABLE", - 0x0c86: "ER_AUDIT_LOG_NO_KEYRING_PLUGIN_INSTALLED", - 0x0c87: "ER_AUDIT_LOG_ENCRYPTION_PASSWORD_HAS_NOT_BEEN_SET", - 0x0c88: "ER_AUDIT_LOG_COULD_NOT_CREATE_AES_KEY", - 0x0c89: "ER_AUDIT_LOG_ENCRYPTION_PASSWORD_CANNOT_BE_FETCHED", - 0x0c8a: "ER_AUDIT_LOG_JSON_FILTERING_NOT_ENABLED", - 0x0c8b: "ER_AUDIT_LOG_UDF_INSUFFICIENT_PRIVILEGE", - 0x0c8c: "ER_AUDIT_LOG_SUPER_PRIVILEGE_REQUIRED", - 0x0c8d: "ER_COULD_NOT_REINITIALIZE_AUDIT_LOG_FILTERS", - 0x0c8e: "ER_AUDIT_LOG_UDF_INVALID_ARGUMENT_TYPE", - 0x0c8f: "ER_AUDIT_LOG_UDF_INVALID_ARGUMENT_COUNT", - 0x0c90: "ER_AUDIT_LOG_HAS_NOT_BEEN_INSTALLED", - 0x0c91: "ER_AUDIT_LOG_UDF_READ_INVALID_MAX_ARRAY_LENGTH_ARG_TYPE", - 0x0c92: "ER_AUDIT_LOG_UDF_READ_INVALID_MAX_ARRAY_LENGTH_ARG_VALUE", - 0x0c93: "ER_AUDIT_LOG_JSON_FILTER_PARSING_ERROR", - 0x0c94: "ER_AUDIT_LOG_JSON_FILTER_NAME_CANNOT_BE_EMPTY", - 0x0c95: "ER_AUDIT_LOG_JSON_USER_NAME_CANNOT_BE_EMPTY", - 0x0c96: "ER_AUDIT_LOG_JSON_FILTER_DOES_NOT_EXISTS", - 0x0c97: "ER_AUDIT_LOG_USER_FIRST_CHARACTER_MUST_BE_ALPHANUMERIC", - 0x0c98: "ER_AUDIT_LOG_USER_NAME_INVALID_CHARACTER", - 0x0c99: "ER_AUDIT_LOG_HOST_NAME_INVALID_CHARACTER", - 0x0c9a: "WARN_DEPRECATED_MAXDB_SQL_MODE_FOR_TIMESTAMP", - 0x0c9b: "ER_XA_REPLICATION_FILTERS", - 0x0dac: "ER_UNSUPPORT_COMPRESSED_TEMPORARY_TABLE", - 0x0dad: "ER_ACL_OPERATION_FAILED", - 0x0dae: "ER_UNSUPPORTED_INDEX_ALGORITHM", - 0x0daf: "ER_NO_SUCH_DB", - 0x0db0: "ER_TOO_BIG_ENUM", - 0x0db1: "ER_TOO_LONG_SET_ENUM_VALUE", - 0x0db2: "ER_INVALID_DD_OBJECT", - 0x0db3: "ER_UPDATING_DD_TABLE", - 0x0db4: "ER_INVALID_DD_OBJECT_ID", - 0x0db5: "ER_INVALID_DD_OBJECT_NAME", - 0x0db6: "ER_TABLESPACE_MISSING_WITH_NAME", - 0x0db7: "ER_TOO_LONG_ROUTINE_COMMENT", - 0x0db8: "ER_SP_LOAD_FAILED", - 0x0db9: "ER_INVALID_BITWISE_OPERANDS_SIZE", - 0x0dba: "ER_INVALID_BITWISE_AGGREGATE_OPERANDS_SIZE", - 0x0dbb: "ER_WARN_UNSUPPORTED_HINT", - 0x0dbc: "ER_UNEXPECTED_GEOMETRY_TYPE", - 0x0dbd: "ER_SRS_PARSE_ERROR", - 0x0dbe: "ER_SRS_PROJ_PARAMETER_MISSING", - 0x0dbf: "ER_WARN_SRS_NOT_FOUND", - 0x0dc0: "ER_SRS_NOT_CARTESIAN", - 0x0dc1: "ER_SRS_NOT_CARTESIAN_UNDEFINED", - 0x0dc2: "ER_PK_INDEX_CANT_BE_INVISIBLE", - 0x0dc3: "ER_UNKNOWN_AUTHID", - 0x0dc4: "ER_FAILED_ROLE_GRANT", - 0x0dc5: "ER_OPEN_ROLE_TABLES", - 0x0dc6: "ER_FAILED_DEFAULT_ROLES", - 0x0dc7: "ER_COMPONENTS_NO_SCHEME", - 0x0dc8: "ER_COMPONENTS_NO_SCHEME_SERVICE", - 0x0dc9: "ER_COMPONENTS_CANT_LOAD", - 0x0dca: "ER_ROLE_NOT_GRANTED", - 0x0dcb: "ER_FAILED_REVOKE_ROLE", - 0x0dcc: "ER_RENAME_ROLE", - 0x0dcd: "ER_COMPONENTS_CANT_ACQUIRE_SERVICE_IMPLEMENTATION", - 0x0dce: "ER_COMPONENTS_CANT_SATISFY_DEPENDENCY", - 0x0dcf: "ER_COMPONENTS_LOAD_CANT_REGISTER_SERVICE_IMPLEMENTATION", - 0x0dd0: "ER_COMPONENTS_LOAD_CANT_INITIALIZE", - 0x0dd1: "ER_COMPONENTS_UNLOAD_NOT_LOADED", - 0x0dd2: "ER_COMPONENTS_UNLOAD_CANT_DEINITIALIZE", - 0x0dd3: "ER_COMPONENTS_CANT_RELEASE_SERVICE", - 0x0dd4: "ER_COMPONENTS_UNLOAD_CANT_UNREGISTER_SERVICE", - 0x0dd5: "ER_COMPONENTS_CANT_UNLOAD", - 0x0dd6: "ER_WARN_UNLOAD_THE_NOT_PERSISTED", - 0x0dd7: "ER_COMPONENT_TABLE_INCORRECT", - 0x0dd8: "ER_COMPONENT_MANIPULATE_ROW_FAILED", - 0x0dd9: "ER_COMPONENTS_UNLOAD_DUPLICATE_IN_GROUP", - 0x0dda: "ER_CANT_SET_GTID_PURGED_DUE_SETS_CONSTRAINTS", - 0x0ddb: "ER_CANNOT_LOCK_USER_MANAGEMENT_CACHES", - 0x0ddc: "ER_SRS_NOT_FOUND", - 0x0ddd: "ER_VARIABLE_NOT_PERSISTED", - 0x0dde: "ER_IS_QUERY_INVALID_CLAUSE", - 0x0ddf: "ER_UNABLE_TO_STORE_STATISTICS", - 0x0de0: "ER_NO_SYSTEM_SCHEMA_ACCESS", - 0x0de1: "ER_NO_SYSTEM_TABLESPACE_ACCESS", - 0x0de2: "ER_NO_SYSTEM_TABLE_ACCESS", - 0x0de3: "ER_NO_SYSTEM_TABLE_ACCESS_FOR_DICTIONARY_TABLE", - 0x0de4: "ER_NO_SYSTEM_TABLE_ACCESS_FOR_SYSTEM_TABLE", - 0x0de5: "ER_NO_SYSTEM_TABLE_ACCESS_FOR_TABLE", - 0x0de6: "ER_INVALID_OPTION_KEY", - 0x0de7: "ER_INVALID_OPTION_VALUE", - 0x0de8: "ER_INVALID_OPTION_KEY_VALUE_PAIR", - 0x0de9: "ER_INVALID_OPTION_START_CHARACTER", - 0x0dea: "ER_INVALID_OPTION_END_CHARACTER", - 0x0deb: "ER_INVALID_OPTION_CHARACTERS", - 0x0dec: "ER_DUPLICATE_OPTION_KEY", - 0x0ded: "ER_WARN_SRS_NOT_FOUND_AXIS_ORDER", - 0x0dee: "ER_NO_ACCESS_TO_NATIVE_FCT", - 0x0def: "ER_RESET_MASTER_TO_VALUE_OUT_OF_RANGE", - 0x0df0: "ER_UNRESOLVED_TABLE_LOCK", - 0x0df1: "ER_DUPLICATE_TABLE_LOCK", - 0x0df2: "ER_BINLOG_UNSAFE_SKIP_LOCKED", - 0x0df3: "ER_BINLOG_UNSAFE_NOWAIT", - 0x0df4: "ER_LOCK_NOWAIT", - 0x0df5: "ER_CTE_RECURSIVE_REQUIRES_UNION", - 0x0df6: "ER_CTE_RECURSIVE_REQUIRES_NONRECURSIVE_FIRST", - 0x0df7: "ER_CTE_RECURSIVE_FORBIDS_AGGREGATION", - 0x0df8: "ER_CTE_RECURSIVE_FORBIDDEN_JOIN_ORDER", - 0x0df9: "ER_CTE_RECURSIVE_REQUIRES_SINGLE_REFERENCE", - 0x0dfa: "ER_SWITCH_TMP_ENGINE", - 0x0dfb: "ER_WINDOW_NO_SUCH_WINDOW", - 0x0dfc: "ER_WINDOW_CIRCULARITY_IN_WINDOW_GRAPH", - 0x0dfd: "ER_WINDOW_NO_CHILD_PARTITIONING", - 0x0dfe: "ER_WINDOW_NO_INHERIT_FRAME", - 0x0dff: "ER_WINDOW_NO_REDEFINE_ORDER_BY", - 0x0e00: "ER_WINDOW_FRAME_START_ILLEGAL", - 0x0e01: "ER_WINDOW_FRAME_END_ILLEGAL", - 0x0e02: "ER_WINDOW_FRAME_ILLEGAL", - 0x0e03: "ER_WINDOW_RANGE_FRAME_ORDER_TYPE", - 0x0e04: "ER_WINDOW_RANGE_FRAME_TEMPORAL_TYPE", - 0x0e05: "ER_WINDOW_RANGE_FRAME_NUMERIC_TYPE", - 0x0e06: "ER_WINDOW_RANGE_BOUND_NOT_CONSTANT", - 0x0e07: "ER_WINDOW_DUPLICATE_NAME", - 0x0e08: "ER_WINDOW_ILLEGAL_ORDER_BY", - 0x0e09: "ER_WINDOW_INVALID_WINDOW_FUNC_USE", - 0x0e0a: "ER_WINDOW_INVALID_WINDOW_FUNC_ALIAS_USE", - 0x0e0b: "ER_WINDOW_NESTED_WINDOW_FUNC_USE_IN_WINDOW_SPEC", - 0x0e0c: "ER_WINDOW_ROWS_INTERVAL_USE", - 0x0e0d: "ER_WINDOW_NO_GROUP_ORDER", - 0x0e0e: "ER_WINDOW_EXPLAIN_JSON", - 0x0e0f: "ER_WINDOW_FUNCTION_IGNORES_FRAME", - 0x0e10: "ER_WL9236_NOW_UNUSED", - 0x0e11: "ER_INVALID_NO_OF_ARGS", - 0x0e12: "ER_FIELD_IN_GROUPING_NOT_GROUP_BY", - 0x0e13: "ER_TOO_LONG_TABLESPACE_COMMENT", - 0x0e14: "ER_ENGINE_CANT_DROP_TABLE", - 0x0e15: "ER_ENGINE_CANT_DROP_MISSING_TABLE", - 0x0e16: "ER_TABLESPACE_DUP_FILENAME", - 0x0e17: "ER_DB_DROP_RMDIR2", - 0x0e18: "ER_IMP_NO_FILES_MATCHED", - 0x0e19: "ER_IMP_SCHEMA_DOES_NOT_EXIST", - 0x0e1a: "ER_IMP_TABLE_ALREADY_EXISTS", - 0x0e1b: "ER_IMP_INCOMPATIBLE_MYSQLD_VERSION", - 0x0e1c: "ER_IMP_INCOMPATIBLE_DD_VERSION", - 0x0e1d: "ER_IMP_INCOMPATIBLE_SDI_VERSION", - 0x0e1e: "ER_WARN_INVALID_HINT", - 0x0e1f: "ER_VAR_DOES_NOT_EXIST", - 0x0e20: "ER_LONGITUDE_OUT_OF_RANGE", - 0x0e21: "ER_LATITUDE_OUT_OF_RANGE", - 0x0e22: "ER_NOT_IMPLEMENTED_FOR_GEOGRAPHIC_SRS", - 0x0e23: "ER_ILLEGAL_PRIVILEGE_LEVEL", - 0x0e24: "ER_NO_SYSTEM_VIEW_ACCESS", - 0x0e25: "ER_COMPONENT_FILTER_FLABBERGASTED", - 0x0e26: "ER_PART_EXPR_TOO_LONG", - 0x0e27: "ER_UDF_DROP_DYNAMICALLY_REGISTERED", - 0x0e28: "ER_UNABLE_TO_STORE_COLUMN_STATISTICS", - 0x0e29: "ER_UNABLE_TO_UPDATE_COLUMN_STATISTICS", - 0x0e2a: "ER_UNABLE_TO_DROP_COLUMN_STATISTICS", - 0x0e2b: "ER_UNABLE_TO_BUILD_HISTOGRAM", - 0x0e2c: "ER_MANDATORY_ROLE", - 0x0e2d: "ER_MISSING_TABLESPACE_FILE", - 0x0e2e: "ER_PERSIST_ONLY_ACCESS_DENIED_ERROR", - 0x0e2f: "ER_CMD_NEED_SUPER", - 0x0e30: "ER_PATH_IN_DATADIR", - 0x0e31: "ER_DDL_IN_PROGRESS", - 0x0e32: "ER_TOO_MANY_CONCURRENT_CLONES", - 0x0e33: "ER_APPLIER_LOG_EVENT_VALIDATION_ERROR", - 0x0e34: "ER_CTE_MAX_RECURSION_DEPTH", - 0x0e35: "ER_NOT_HINT_UPDATABLE_VARIABLE", - 0x0e36: "ER_CREDENTIALS_CONTRADICT_TO_HISTORY", - 0x0e37: "ER_WARNING_PASSWORD_HISTORY_CLAUSES_VOID", - 0x0e38: "ER_CLIENT_DOES_NOT_SUPPORT", - 0x0e39: "ER_I_S_SKIPPED_TABLESPACE", - 0x0e3a: "ER_TABLESPACE_ENGINE_MISMATCH", - 0x0e3b: "ER_WRONG_SRID_FOR_COLUMN", - 0x0e3c: "ER_CANNOT_ALTER_SRID_DUE_TO_INDEX", - 0x0e3d: "ER_WARN_BINLOG_PARTIAL_UPDATES_DISABLED", - 0x0e3e: "ER_WARN_BINLOG_V1_ROW_EVENTS_DISABLED", - 0x0e3f: "ER_WARN_BINLOG_PARTIAL_UPDATES_SUGGESTS_PARTIAL_IMAGES", - 0x0e40: "ER_COULD_NOT_APPLY_JSON_DIFF", - 0x0e41: "ER_CORRUPTED_JSON_DIFF", - 0x0e42: "ER_RESOURCE_GROUP_EXISTS", - 0x0e43: "ER_RESOURCE_GROUP_NOT_EXISTS", - 0x0e44: "ER_INVALID_VCPU_ID", - 0x0e45: "ER_INVALID_VCPU_RANGE", - 0x0e46: "ER_INVALID_THREAD_PRIORITY", - 0x0e47: "ER_DISALLOWED_OPERATION", - 0x0e48: "ER_RESOURCE_GROUP_BUSY", - 0x0e49: "ER_RESOURCE_GROUP_DISABLED", - 0x0e4a: "ER_FEATURE_UNSUPPORTED", - 0x0e4b: "ER_ATTRIBUTE_IGNORED", - 0x0e4c: "ER_INVALID_THREAD_ID", - 0x0e4d: "ER_RESOURCE_GROUP_BIND_FAILED", - 0x0e4e: "ER_INVALID_USE_OF_FORCE_OPTION", - 0x0e4f: "ER_GROUP_REPLICATION_COMMAND_FAILURE", - 0x0e50: "ER_SDI_OPERATION_FAILED", - 0x0e51: "ER_MISSING_JSON_TABLE_VALUE", - 0x0e52: "ER_WRONG_JSON_TABLE_VALUE", - 0x0e53: "ER_TF_MUST_HAVE_ALIAS", - 0x0e54: "ER_TF_FORBIDDEN_JOIN_TYPE", - 0x0e55: "ER_JT_VALUE_OUT_OF_RANGE", - 0x0e56: "ER_JT_MAX_NESTED_PATH", - 0x0e57: "ER_PASSWORD_EXPIRATION_NOT_SUPPORTED_BY_AUTH_METHOD", - 0x0e58: "ER_INVALID_GEOJSON_CRS_NOT_TOP_LEVEL", - 0x0e59: "ER_BAD_NULL_ERROR_NOT_IGNORED", - 0x0e5a: "WARN_USELESS_SPATIAL_INDEX", - 0x0e5b: "ER_DISK_FULL_NOWAIT", - 0x0e5c: "ER_PARSE_ERROR_IN_DIGEST_FN", - 0x0e5d: "ER_UNDISCLOSED_PARSE_ERROR_IN_DIGEST_FN", - 0x0e5e: "ER_SCHEMA_DIR_EXISTS", - 0x0e5f: "ER_SCHEMA_DIR_MISSING", - 0x0e60: "ER_SCHEMA_DIR_CREATE_FAILED", - 0x0e61: "ER_SCHEMA_DIR_UNKNOWN", - 0x0e62: "ER_ONLY_IMPLEMENTED_FOR_SRID_0_AND_4326", - 0x0e63: "ER_BINLOG_EXPIRE_LOG_DAYS_AND_SECS_USED_TOGETHER", - 0x0e64: "ER_REGEXP_BUFFER_OVERFLOW", - 0x0e65: "ER_REGEXP_ILLEGAL_ARGUMENT", - 0x0e66: "ER_REGEXP_INDEX_OUTOFBOUNDS_ERROR", - 0x0e67: "ER_REGEXP_INTERNAL_ERROR", - 0x0e68: "ER_REGEXP_RULE_SYNTAX", - 0x0e69: "ER_REGEXP_BAD_ESCAPE_SEQUENCE", - 0x0e6a: "ER_REGEXP_UNIMPLEMENTED", - 0x0e6b: "ER_REGEXP_MISMATCHED_PAREN", - 0x0e6c: "ER_REGEXP_BAD_INTERVAL", - 0x0e6d: "ER_REGEXP_MAX_LT_MIN", - 0x0e6e: "ER_REGEXP_INVALID_BACK_REF", - 0x0e6f: "ER_REGEXP_LOOK_BEHIND_LIMIT", - 0x0e70: "ER_REGEXP_MISSING_CLOSE_BRACKET", - 0x0e71: "ER_REGEXP_INVALID_RANGE", - 0x0e72: "ER_REGEXP_STACK_OVERFLOW", - 0x0e73: "ER_REGEXP_TIME_OUT", - 0x0e74: "ER_REGEXP_PATTERN_TOO_BIG", - 0x0e75: "ER_CANT_SET_ERROR_LOG_SERVICE", - 0x0e76: "ER_EMPTY_PIPELINE_FOR_ERROR_LOG_SERVICE", - 0x0e77: "ER_COMPONENT_FILTER_DIAGNOSTICS", - 0x0e78: "ER_NOT_IMPLEMENTED_FOR_CARTESIAN_SRS", - 0x0e79: "ER_NOT_IMPLEMENTED_FOR_PROJECTED_SRS", - 0x0e7a: "ER_NONPOSITIVE_RADIUS", - 0x0e7b: "ER_RESTART_SERVER_FAILED", - 0x0e7c: "ER_SRS_MISSING_MANDATORY_ATTRIBUTE", - 0x0e7d: "ER_SRS_MULTIPLE_ATTRIBUTE_DEFINITIONS", - 0x0e7e: "ER_SRS_NAME_CANT_BE_EMPTY_OR_WHITESPACE", - 0x0e7f: "ER_SRS_ORGANIZATION_CANT_BE_EMPTY_OR_WHITESPACE", - 0x0e80: "ER_SRS_ID_ALREADY_EXISTS", - 0x0e81: "ER_WARN_SRS_ID_ALREADY_EXISTS", - 0x0e82: "ER_CANT_MODIFY_SRID_0", - 0x0e83: "ER_WARN_RESERVED_SRID_RANGE", - 0x0e84: "ER_CANT_MODIFY_SRS_USED_BY_COLUMN", - 0x0e85: "ER_SRS_INVALID_CHARACTER_IN_ATTRIBUTE", - 0x0e86: "ER_SRS_ATTRIBUTE_STRING_TOO_LONG", - 0x0e87: "ER_DEPRECATED_UTF8_ALIAS", - 0x0e88: "ER_DEPRECATED_NATIONAL", - 0x0e89: "ER_INVALID_DEFAULT_UTF8MB4_COLLATION", - 0x0e8a: "ER_UNABLE_TO_COLLECT_LOG_STATUS", - 0x0e8b: "ER_RESERVED_TABLESPACE_NAME", - 0x0e8c: "ER_UNABLE_TO_SET_OPTION", - 0x0e8d: "ER_SLAVE_POSSIBLY_DIVERGED_AFTER_DDL", - 0x0e8e: "ER_SRS_NOT_GEOGRAPHIC", - 0x0e8f: "ER_POLYGON_TOO_LARGE", - 0x0e90: "ER_SPATIAL_UNIQUE_INDEX", - 0x0e91: "ER_INDEX_TYPE_NOT_SUPPORTED_FOR_SPATIAL_INDEX", - 0x0e92: "ER_FK_CANNOT_DROP_PARENT", - 0x0e93: "ER_GEOMETRY_PARAM_LONGITUDE_OUT_OF_RANGE", - 0x0e94: "ER_GEOMETRY_PARAM_LATITUDE_OUT_OF_RANGE", - 0x0e95: "ER_FK_CANNOT_USE_VIRTUAL_COLUMN", - 0x0e96: "ER_FK_NO_COLUMN_PARENT", - 0x0f61: "ER_AUTHCACHE_ROLE_TABLES_DODGY", - 0x11e0: "ER_DISK_FULL", - 0x2710: "ER_PARSER_TRACE", - 0x2711: "ER_BOOTSTRAP_CANT_THREAD", - 0x2712: "ER_TRIGGER_INVALID_VALUE", - 0x2713: "ER_OPT_WRONG_TREE", - 0x2714: "ER_DD_FAILSAFE", - 0x2715: "ER_DD_NO_WRITES_NO_REPOPULATION", - 0x2716: "ER_DD_VERSION_FOUND", - 0x2717: "ER_DD_VERSION_INSTALLED", - 0x2718: "ER_DD_VERSION_UNSUPPORTED", - 0x2719: "ER_LOG_SYSLOG_FACILITY_FAIL", - 0x271a: "ER_LOG_SYSLOG_CANNOT_OPEN", - 0x271b: "ER_LOG_SLOW_CANNOT_OPEN", - 0x271c: "ER_LOG_GENERAL_CANNOT_OPEN", - 0x271d: "ER_LOG_CANNOT_WRITE", - 0x271e: "ER_RPL_ZOMBIE_ENCOUNTERED", - 0x271f: "ER_RPL_GTID_TABLE_CANNOT_OPEN", - 0x2720: "ER_SYSTEM_SCHEMA_NOT_FOUND", - 0x2721: "ER_DD_INIT_UPGRADE_FAILED", - 0x2722: "ER_VIEW_UNKNOWN_CHARSET_OR_COLLATION", - 0x2723: "ER_DD_VIEW_CANT_ALLOC_CHARSET", - 0x2724: "ER_DD_INIT_FAILED", - 0x2725: "ER_DD_UPDATING_PLUGIN_MD_FAILED", - 0x2726: "ER_DD_POPULATING_TABLES_FAILED", - 0x2727: "ER_DD_VIEW_CANT_CREATE", - 0x2728: "ER_DD_METADATA_NOT_FOUND", - 0x2729: "ER_DD_CACHE_NOT_EMPTY_AT_SHUTDOWN", - 0x272a: "ER_DD_OBJECT_REMAINS", - 0x272b: "ER_DD_OBJECT_REMAINS_IN_RELEASER", - 0x272c: "ER_DD_OBJECT_RELEASER_REMAINS", - 0x272d: "ER_DD_CANT_GET_OBJECT_KEY", - 0x272e: "ER_DD_CANT_CREATE_OBJECT_KEY", - 0x272f: "ER_CANT_CREATE_HANDLE_MGR_THREAD", - 0x2730: "ER_RPL_REPO_HAS_GAPS", - 0x2731: "ER_INVALID_VALUE_FOR_ENFORCE_GTID_CONSISTENCY", - 0x2732: "ER_CHANGED_ENFORCE_GTID_CONSISTENCY", - 0x2733: "ER_CHANGED_GTID_MODE", - 0x2734: "ER_DISABLED_STORAGE_ENGINE_AS_DEFAULT", - 0x2735: "ER_DEBUG_SYNC_HIT", - 0x2736: "ER_DEBUG_SYNC_EXECUTED", - 0x2737: "ER_DEBUG_SYNC_THREAD_MAX", - 0x2738: "ER_DEBUG_SYNC_OOM", - 0x2739: "ER_CANT_INIT_TC_LOG", - 0x273a: "ER_EVENT_CANT_INIT_QUEUE", - 0x273b: "ER_EVENT_PURGING_QUEUE", - 0x273c: "ER_EVENT_LAST_EXECUTION", - 0x273d: "ER_EVENT_MESSAGE_STACK", - 0x273e: "ER_EVENT_EXECUTION_FAILED", - 0x273f: "ER_CANT_INIT_SCHEDULER_THREAD", - 0x2740: "ER_SCHEDULER_STOPPED", - 0x2741: "ER_CANT_CREATE_SCHEDULER_THREAD", - 0x2742: "ER_SCHEDULER_WAITING", - 0x2743: "ER_SCHEDULER_STARTED", - 0x2744: "ER_SCHEDULER_STOPPING_FAILED_TO_GET_EVENT", - 0x2745: "ER_SCHEDULER_STOPPING_FAILED_TO_CREATE_WORKER", - 0x2746: "ER_SCHEDULER_KILLING", - 0x2747: "ER_UNABLE_TO_RESOLVE_IP", - 0x2748: "ER_UNABLE_TO_RESOLVE_HOSTNAME", - 0x2749: "ER_HOSTNAME_RESEMBLES_IPV4", - 0x274a: "ER_HOSTNAME_DOESNT_RESOLVE_TO", - 0x274b: "ER_ADDRESSES_FOR_HOSTNAME_HEADER", - 0x274c: "ER_ADDRESSES_FOR_HOSTNAME_LIST_ITEM", - 0x274d: "ER_TRG_WITHOUT_DEFINER", - 0x274e: "ER_TRG_NO_CLIENT_CHARSET", - 0x274f: "ER_PARSING_VIEW", - 0x2750: "ER_COMPONENTS_INFRASTRUCTURE_BOOTSTRAP", - 0x2751: "ER_COMPONENTS_INFRASTRUCTURE_SHUTDOWN", - 0x2752: "ER_COMPONENTS_PERSIST_LOADER_BOOTSTRAP", - 0x2753: "ER_DEPART_WITH_GRACE", - 0x2754: "ER_CA_SELF_SIGNED", - 0x2755: "ER_SSL_LIBRARY_ERROR", - 0x2756: "ER_NO_THD_NO_UUID", - 0x2757: "ER_UUID_SALT", - 0x2758: "ER_UUID_IS", - 0x2759: "ER_UUID_INVALID", - 0x275a: "ER_UUID_SCRUB", - 0x275b: "ER_CREATING_NEW_UUID", - 0x275c: "ER_CANT_CREATE_UUID", - 0x275d: "ER_UNKNOWN_UNSUPPORTED_STORAGE_ENGINE", - 0x275e: "ER_SECURE_AUTH_VALUE_UNSUPPORTED", - 0x275f: "ER_INVALID_INSTRUMENT", - 0x2760: "ER_INNODB_MANDATORY", - 0x2762: "ER_OLD_PASSWORDS_NO_MIDDLE_GROUND", - 0x2763: "ER_VERBOSE_REQUIRES_HELP", - 0x2764: "ER_POINTLESS_WITHOUT_SLOWLOG", - 0x2765: "ER_WASTEFUL_NET_BUFFER_SIZE", - 0x2766: "ER_DEPRECATED_TIMESTAMP_IMPLICIT_DEFAULTS", - 0x2767: "ER_FT_BOOL_SYNTAX_INVALID", - 0x2768: "ER_CREDENTIALLESS_AUTO_USER_BAD", - 0x2769: "ER_CONNECTION_HANDLING_OOM", - 0x276a: "ER_THREAD_HANDLING_OOM", - 0x276b: "ER_CANT_CREATE_TEST_FILE", - 0x276c: "ER_CANT_CREATE_PID_FILE", - 0x276d: "ER_CANT_REMOVE_PID_FILE", - 0x276e: "ER_CANT_CREATE_SHUTDOWN_THREAD", - 0x276f: "ER_SEC_FILE_PRIV_CANT_ACCESS_DIR", - 0x2770: "ER_SEC_FILE_PRIV_IGNORED", - 0x2771: "ER_SEC_FILE_PRIV_EMPTY", - 0x2772: "ER_SEC_FILE_PRIV_NULL", - 0x2773: "ER_SEC_FILE_PRIV_DIRECTORY_INSECURE", - 0x2774: "ER_SEC_FILE_PRIV_CANT_STAT", - 0x2775: "ER_SEC_FILE_PRIV_DIRECTORY_PERMISSIONS", - 0x2776: "ER_SEC_FILE_PRIV_ARGUMENT_TOO_LONG", - 0x2777: "ER_CANT_CREATE_NAMED_PIPES_THREAD", - 0x2778: "ER_CANT_CREATE_TCPIP_THREAD", - 0x2779: "ER_CANT_CREATE_SHM_THREAD", - 0x277a: "ER_CANT_CREATE_INTERRUPT_THREAD", - 0x277b: "ER_WRITABLE_CONFIG_REMOVED", - 0x277c: "ER_CORE_VALUES", - 0x277d: "ER_WRONG_DATETIME_SPEC", - 0x277e: "ER_RPL_BINLOG_FILTERS_OOM", - 0x277f: "ER_KEYCACHE_OOM", - 0x2780: "ER_CONFIRMING_THE_FUTURE", - 0x2781: "ER_BACK_IN_TIME", - 0x2782: "ER_FUTURE_DATE", - 0x2783: "ER_UNSUPPORTED_DATE", - 0x2784: "ER_STARTING_AS", - 0x2785: "ER_SHUTTING_DOWN_SLAVE_THREADS", - 0x2786: "ER_DISCONNECTING_REMAINING_CLIENTS", - 0x2787: "ER_ABORTING", - 0x2788: "ER_BINLOG_END", - 0x2789: "ER_CALL_ME_LOCALHOST", - 0x278a: "ER_USER_REQUIRES_ROOT", - 0x278b: "ER_REALLY_RUN_AS_ROOT", - 0x278c: "ER_USER_WHAT_USER", - 0x278d: "ER_TRANSPORTS_WHAT_TRANSPORTS", - 0x278e: "ER_FAIL_SETGID", - 0x278f: "ER_FAIL_SETUID", - 0x2790: "ER_FAIL_SETREGID", - 0x2791: "ER_FAIL_SETREUID", - 0x2792: "ER_FAIL_CHROOT", - 0x2793: "ER_WIN_LISTEN_BUT_HOW", - 0x2794: "ER_NOT_RIGHT_NOW", - 0x2795: "ER_FIXING_CLIENT_CHARSET", - 0x2796: "ER_OOM", - 0x2797: "ER_FAILED_TO_LOCK_MEM", - 0x2798: "ER_MYINIT_FAILED", - 0x2799: "ER_BEG_INITFILE", - 0x279a: "ER_END_INITFILE", - 0x279b: "ER_CHANGED_MAX_OPEN_FILES", - 0x279c: "ER_CANT_INCREASE_MAX_OPEN_FILES", - 0x279d: "ER_CHANGED_MAX_CONNECTIONS", - 0x279e: "ER_CHANGED_TABLE_OPEN_CACHE", - 0x279f: "ER_THE_USER_ABIDES", - 0x27a0: "ER_RPL_CANT_ADD_DO_TABLE", - 0x27a1: "ER_RPL_CANT_ADD_IGNORE_TABLE", - 0x27a2: "ER_TRACK_VARIABLES_BOGUS", - 0x27a3: "ER_EXCESS_ARGUMENTS", - 0x27a4: "ER_VERBOSE_HINT", - 0x27a5: "ER_CANT_READ_ERRMSGS", - 0x27a6: "ER_CANT_INIT_DBS", - 0x27a7: "ER_LOG_OUTPUT_CONTRADICTORY", - 0x27a8: "ER_NO_CSV_NO_LOG_TABLES", - 0x27a9: "ER_RPL_REWRITEDB_MISSING_ARROW", - 0x27aa: "ER_RPL_REWRITEDB_EMPTY_FROM", - 0x27ab: "ER_RPL_REWRITEDB_EMPTY_TO", - 0x27ac: "ER_LOG_FILES_GIVEN_LOG_OUTPUT_IS_TABLE", - 0x27ad: "ER_LOG_FILE_INVALID", - 0x27ae: "ER_LOWER_CASE_TABLE_NAMES_CS_DD_ON_CI_FS_UNSUPPORTED", - 0x27af: "ER_LOWER_CASE_TABLE_NAMES_USING_2", - 0x27b0: "ER_LOWER_CASE_TABLE_NAMES_USING_0", - 0x27b1: "ER_NEED_LOG_BIN", - 0x27b2: "ER_NEED_FILE_INSTEAD_OF_DIR", - 0x27b3: "ER_LOG_BIN_BETTER_WITH_NAME", - 0x27b4: "ER_BINLOG_NEEDS_SERVERID", - 0x27b5: "ER_RPL_CANT_MAKE_PATHS", - 0x27b6: "ER_CANT_INITIALIZE_GTID", - 0x27b7: "ER_CANT_INITIALIZE_EARLY_PLUGINS", - 0x27b8: "ER_CANT_INITIALIZE_BUILTIN_PLUGINS", - 0x27b9: "ER_CANT_INITIALIZE_DYNAMIC_PLUGINS", - 0x27ba: "ER_PERFSCHEMA_INIT_FAILED", - 0x27bb: "ER_STACKSIZE_UNEXPECTED", - 0x27bc: "ER_CANT_SET_DATADIR", - 0x27bd: "ER_CANT_STAT_DATADIR", - 0x27be: "ER_CANT_CHOWN_DATADIR", - 0x27bf: "ER_CANT_SET_UP_PERSISTED_VALUES", - 0x27c0: "ER_CANT_SAVE_GTIDS", - 0x27c1: "ER_AUTH_CANT_SET_DEFAULT_PLUGIN", - 0x27c2: "ER_CANT_JOIN_SHUTDOWN_THREAD", - 0x27c3: "ER_CANT_HASH_DO_AND_IGNORE_RULES", - 0x27c4: "ER_CANT_OPEN_CA", - 0x27c5: "ER_CANT_ACCESS_CAPATH", - 0x27c6: "ER_SSL_TRYING_DATADIR_DEFAULTS", - 0x27c7: "ER_AUTO_OPTIONS_FAILED", - 0x27c8: "ER_CANT_INIT_TIMER", - 0x27c9: "ER_SERVERID_TOO_LARGE", - 0x27ca: "ER_DEFAULT_SE_UNAVAILABLE", - 0x27cb: "ER_CANT_OPEN_ERROR_LOG", - 0x27cc: "ER_INVALID_ERROR_LOG_NAME", - 0x27cd: "ER_RPL_INFINITY_DENIED", - 0x27ce: "ER_RPL_INFINITY_IGNORED", - 0x27cf: "ER_NDB_TABLES_NOT_READY", - 0x27d0: "ER_TABLE_CHECK_INTACT", - 0x27d1: "ER_DD_TABLESPACE_NOT_FOUND", - 0x27d2: "ER_DD_TRG_CONNECTION_COLLATION_MISSING", - 0x27d3: "ER_DD_TRG_DB_COLLATION_MISSING", - 0x27d4: "ER_DD_TRG_DEFINER_OOM", - 0x27d5: "ER_DD_TRG_FILE_UNREADABLE", - 0x27d6: "ER_TRG_CANT_PARSE", - 0x27d7: "ER_DD_TRG_CANT_ADD", - 0x27d8: "ER_DD_CANT_RESOLVE_VIEW", - 0x27d9: "ER_DD_VIEW_WITHOUT_DEFINER", - 0x27da: "ER_PLUGIN_INIT_FAILED", - 0x27db: "ER_RPL_TRX_DELEGATES_INIT_FAILED", - 0x27dc: "ER_RPL_BINLOG_STORAGE_DELEGATES_INIT_FAILED", - 0x27dd: "ER_RPL_BINLOG_TRANSMIT_DELEGATES_INIT_FAILED", - 0x27de: "ER_RPL_BINLOG_RELAY_DELEGATES_INIT_FAILED", - 0x27df: "ER_RPL_PLUGIN_FUNCTION_FAILED", - 0x27e0: "ER_SQL_HA_READ_FAILED", - 0x27e1: "ER_SR_BOGUS_VALUE", - 0x27e2: "ER_SR_INVALID_CONTEXT", - 0x27e3: "ER_READING_TABLE_FAILED", - 0x27e4: "ER_DES_FILE_WRONG_KEY", - 0x27e5: "ER_CANT_SET_PERSISTED", - 0x27e6: "ER_JSON_PARSE_ERROR", - 0x27e7: "ER_CONFIG_OPTION_WITHOUT_GROUP", - 0x27e8: "ER_VALGRIND_DO_QUICK_LEAK_CHECK", - 0x27e9: "ER_VALGRIND_COUNT_LEAKS", - 0x27ea: "ER_LOAD_DATA_INFILE_FAILED_IN_UNEXPECTED_WAY", - 0x27eb: "ER_UNKNOWN_ERROR_NUMBER", - 0x27ec: "ER_UDF_CANT_ALLOC_FOR_STRUCTURES", - 0x27ed: "ER_UDF_CANT_ALLOC_FOR_FUNCTION", - 0x27ee: "ER_UDF_INVALID_ROW_IN_FUNCTION_TABLE", - 0x27ef: "ER_UDF_CANT_OPEN_FUNCTION_TABLE", - 0x27f0: "ER_XA_RECOVER_FOUND_TRX_IN_SE", - 0x27f1: "ER_XA_RECOVER_FOUND_XA_TRX", - 0x27f2: "ER_XA_IGNORING_XID", - 0x27f3: "ER_XA_COMMITTING_XID", - 0x27f4: "ER_XA_ROLLING_BACK_XID", - 0x27f5: "ER_XA_STARTING_RECOVERY", - 0x27f6: "ER_XA_NO_MULTI_2PC_HEURISTIC_RECOVER", - 0x27f7: "ER_XA_RECOVER_EXPLANATION", - 0x27f8: "ER_XA_RECOVERY_DONE", - 0x27f9: "ER_TRX_GTID_COLLECT_REJECT", - 0x27fa: "ER_SQL_AUTHOR_DEFAULT_ROLES_FAIL", - 0x27fb: "ER_SQL_USER_TABLE_CREATE_WARNING", - 0x27fc: "ER_SQL_USER_TABLE_ALTER_WARNING", - 0x27fd: "ER_ROW_IN_WRONG_PARTITION_PLEASE_REPAIR", - 0x27fe: "ER_MYISAM_CRASHED_ERROR_IN_THREAD", - 0x27ff: "ER_MYISAM_CRASHED_ERROR_IN", - 0x2800: "ER_TOO_MANY_STORAGE_ENGINES", - 0x2801: "ER_SE_TYPECODE_CONFLICT", - 0x2802: "ER_TRX_WRITE_SET_OOM", - 0x2803: "ER_HANDLERTON_OOM", - 0x2804: "ER_CONN_SHM_LISTENER", - 0x2805: "ER_CONN_SHM_CANT_CREATE_SERVICE", - 0x2806: "ER_CONN_SHM_CANT_CREATE_CONNECTION", - 0x2807: "ER_CONN_PIP_CANT_CREATE_EVENT", - 0x2808: "ER_CONN_PIP_CANT_CREATE_PIPE", - 0x2809: "ER_CONN_PER_THREAD_NO_THREAD", - 0x280a: "ER_CONN_TCP_NO_SOCKET", - 0x280b: "ER_CONN_TCP_CREATED", - 0x280c: "ER_CONN_TCP_ADDRESS", - 0x280d: "ER_CONN_TCP_IPV6_AVAILABLE", - 0x280e: "ER_CONN_TCP_IPV6_UNAVAILABLE", - 0x280f: "ER_CONN_TCP_ERROR_WITH_STRERROR", - 0x2810: "ER_CONN_TCP_CANT_RESOLVE_HOSTNAME", - 0x2811: "ER_CONN_TCP_IS_THERE_ANOTHER_USING_PORT", - 0x2812: "ER_CONN_UNIX_IS_THERE_ANOTHER_USING_SOCKET", - 0x2813: "ER_CONN_UNIX_PID_CLAIMED_SOCKET_FILE", - 0x2814: "ER_CONN_TCP_CANT_RESET_V6ONLY", - 0x2815: "ER_CONN_TCP_BIND_RETRY", - 0x2816: "ER_CONN_TCP_BIND_FAIL", - 0x2817: "ER_CONN_TCP_IP_NOT_LOGGED", - 0x2818: "ER_CONN_TCP_RESOLVE_INFO", - 0x2819: "ER_CONN_TCP_START_FAIL", - 0x281a: "ER_CONN_TCP_LISTEN_FAIL", - 0x281b: "ER_CONN_UNIX_PATH_TOO_LONG", - 0x281c: "ER_CONN_UNIX_LOCK_FILE_FAIL", - 0x281d: "ER_CONN_UNIX_NO_FD", - 0x281e: "ER_CONN_UNIX_NO_BIND_NO_START", - 0x281f: "ER_CONN_UNIX_LISTEN_FAILED", - 0x2820: "ER_CONN_UNIX_LOCK_FILE_GIVING_UP", - 0x2821: "ER_CONN_UNIX_LOCK_FILE_CANT_CREATE", - 0x2822: "ER_CONN_UNIX_LOCK_FILE_CANT_OPEN", - 0x2823: "ER_CONN_UNIX_LOCK_FILE_CANT_READ", - 0x2824: "ER_CONN_UNIX_LOCK_FILE_EMPTY", - 0x2825: "ER_CONN_UNIX_LOCK_FILE_PIDLESS", - 0x2826: "ER_CONN_UNIX_LOCK_FILE_CANT_WRITE", - 0x2827: "ER_CONN_UNIX_LOCK_FILE_CANT_DELETE", - 0x2828: "ER_CONN_UNIX_LOCK_FILE_CANT_SYNC", - 0x2829: "ER_CONN_UNIX_LOCK_FILE_CANT_CLOSE", - 0x282a: "ER_CONN_SOCKET_SELECT_FAILED", - 0x282b: "ER_CONN_SOCKET_ACCEPT_FAILED", - 0x282c: "ER_AUTH_RSA_CANT_FIND", - 0x282d: "ER_AUTH_RSA_CANT_PARSE", - 0x282e: "ER_AUTH_RSA_CANT_READ", - 0x282f: "ER_AUTH_RSA_FILES_NOT_FOUND", - 0x2830: "ER_CONN_ATTR_TRUNCATED", - 0x2831: "ER_X509_CIPHERS_MISMATCH", - 0x2832: "ER_X509_ISSUER_MISMATCH", - 0x2833: "ER_X509_SUBJECT_MISMATCH", - 0x2834: "ER_AUTH_CANT_ACTIVATE_ROLE", - 0x2835: "ER_X509_NEEDS_RSA_PRIVKEY", - 0x2836: "ER_X509_CANT_WRITE_KEY", - 0x2837: "ER_X509_CANT_CHMOD_KEY", - 0x2838: "ER_X509_CANT_READ_CA_KEY", - 0x2839: "ER_X509_CANT_READ_CA_CERT", - 0x283a: "ER_X509_CANT_CREATE_CERT", - 0x283b: "ER_X509_CANT_WRITE_CERT", - 0x283c: "ER_AUTH_CANT_CREATE_RSA_PAIR", - 0x283d: "ER_AUTH_CANT_WRITE_PRIVKEY", - 0x283e: "ER_AUTH_CANT_WRITE_PUBKEY", - 0x283f: "ER_AUTH_SSL_CONF_PREVENTS_CERT_GENERATION", - 0x2840: "ER_AUTH_USING_EXISTING_CERTS", - 0x2841: "ER_AUTH_CERTS_SAVED_TO_DATADIR", - 0x2842: "ER_AUTH_CERT_GENERATION_DISABLED", - 0x2843: "ER_AUTH_RSA_CONF_PREVENTS_KEY_GENERATION", - 0x2844: "ER_AUTH_KEY_GENERATION_SKIPPED_PAIR_PRESENT", - 0x2845: "ER_AUTH_KEYS_SAVED_TO_DATADIR", - 0x2846: "ER_AUTH_KEY_GENERATION_DISABLED", - 0x2847: "ER_AUTHCACHE_PROXIES_PRIV_SKIPPED_NEEDS_RESOLVE", - 0x2848: "ER_AUTHCACHE_PLUGIN_MISSING", - 0x2849: "ER_AUTHCACHE_PLUGIN_CONFIG", - 0x284b: "ER_AUTHCACHE_USER_SKIPPED_NEEDS_RESOLVE", - 0x284c: "ER_AUTHCACHE_USER_TABLE_DODGY", - 0x284d: "ER_AUTHCACHE_USER_IGNORED_DEPRECATED_PASSWORD", - 0x284e: "ER_AUTHCACHE_USER_IGNORED_NEEDS_PLUGIN", - 0x284f: "ER_AUTHCACHE_USER_IGNORED_INVALID_PASSWORD", - 0x2850: "ER_AUTHCACHE_EXPIRED_PASSWORD_UNSUPPORTED", - 0x2851: "ER_NO_SUPER_WITHOUT_USER_PLUGIN", - 0x2852: "ER_AUTHCACHE_DB_IGNORED_EMPTY_NAME", - 0x2853: "ER_AUTHCACHE_DB_SKIPPED_NEEDS_RESOLVE", - 0x2854: "ER_AUTHCACHE_DB_ENTRY_LOWERCASED_REVOKE_WILL_FAIL", - 0x2855: "ER_AUTHCACHE_TABLE_PROXIES_PRIV_MISSING", - 0x2856: "ER_AUTHCACHE_CANT_OPEN_AND_LOCK_PRIVILEGE_TABLES", - 0x2857: "ER_AUTHCACHE_CANT_INIT_GRANT_SUBSYSTEM", - 0x2858: "ER_AUTHCACHE_PROCS_PRIV_SKIPPED_NEEDS_RESOLVE", - 0x2859: "ER_AUTHCACHE_PROCS_PRIV_ENTRY_IGNORED_BAD_ROUTINE_TYPE", - 0x285a: "ER_AUTHCACHE_TABLES_PRIV_SKIPPED_NEEDS_RESOLVE", - 0x285b: "ER_USER_NOT_IN_EXTRA_USERS_BINLOG_POSSIBLY_INCOMPLETE", - 0x285c: "ER_DD_SCHEMA_NOT_FOUND", - 0x285d: "ER_DD_TABLE_NOT_FOUND", - 0x285e: "ER_DD_SE_INIT_FAILED", - 0x285f: "ER_DD_ABORTING_PARTIAL_UPGRADE", - 0x2860: "ER_DD_FRM_EXISTS_FOR_TABLE", - 0x2861: "ER_DD_CREATED_FOR_UPGRADE", - 0x2862: "ER_ERRMSG_CANT_FIND_FILE", - 0x2863: "ER_ERRMSG_LOADING_55_STYLE", - 0x2864: "ER_ERRMSG_MISSING_IN_FILE", - 0x2865: "ER_ERRMSG_OOM", - 0x2866: "ER_ERRMSG_CANT_READ", - 0x2867: "ER_TABLE_INCOMPATIBLE_DECIMAL_FIELD", - 0x2868: "ER_TABLE_INCOMPATIBLE_YEAR_FIELD", - 0x2869: "ER_INVALID_CHARSET_AND_DEFAULT_IS_MB", - 0x286a: "ER_TABLE_WRONG_KEY_DEFINITION", - 0x286b: "ER_CANT_OPEN_FRM_FILE", - 0x286c: "ER_CANT_READ_FRM_FILE", - 0x286d: "ER_TABLE_CREATED_WITH_DIFFERENT_VERSION", - 0x286e: "ER_VIEW_UNPARSABLE", - 0x286f: "ER_FILE_TYPE_UNKNOWN", - 0x2870: "ER_INVALID_INFO_IN_FRM", - 0x2871: "ER_CANT_OPEN_AND_LOCK_PRIVILEGE_TABLES", - 0x2872: "ER_AUDIT_PLUGIN_DOES_NOT_SUPPORT_AUDIT_AUTH_EVENTS", - 0x2873: "ER_AUDIT_PLUGIN_HAS_INVALID_DATA", - 0x2874: "ER_TZ_OOM_INITIALIZING_TIME_ZONES", - 0x2875: "ER_TZ_CANT_OPEN_AND_LOCK_TIME_ZONE_TABLE", - 0x2876: "ER_TZ_OOM_LOADING_LEAP_SECOND_TABLE", - 0x2877: "ER_TZ_TOO_MANY_LEAPS_IN_LEAP_SECOND_TABLE", - 0x2878: "ER_TZ_ERROR_LOADING_LEAP_SECOND_TABLE", - 0x2879: "ER_TZ_UNKNOWN_OR_ILLEGAL_DEFAULT_TIME_ZONE", - 0x287a: "ER_TZ_CANT_FIND_DESCRIPTION_FOR_TIME_ZONE", - 0x287b: "ER_TZ_CANT_FIND_DESCRIPTION_FOR_TIME_ZONE_ID", - 0x287c: "ER_TZ_TRANSITION_TYPE_TABLE_TYPE_TOO_LARGE", - 0x287d: "ER_TZ_TRANSITION_TYPE_TABLE_ABBREVIATIONS_EXCEED_SPACE", - 0x287e: "ER_TZ_TRANSITION_TYPE_TABLE_LOAD_ERROR", - 0x287f: "ER_TZ_TRANSITION_TABLE_TOO_MANY_TRANSITIONS", - 0x2880: "ER_TZ_TRANSITION_TABLE_BAD_TRANSITION_TYPE", - 0x2881: "ER_TZ_TRANSITION_TABLE_LOAD_ERROR", - 0x2882: "ER_TZ_NO_TRANSITION_TYPES_IN_TIME_ZONE", - 0x2883: "ER_TZ_OOM_LOADING_TIME_ZONE_DESCRIPTION", - 0x2884: "ER_TZ_CANT_BUILD_MKTIME_MAP", - 0x2885: "ER_TZ_OOM_WHILE_LOADING_TIME_ZONE", - 0x2886: "ER_TZ_OOM_WHILE_SETTING_TIME_ZONE", - 0x2887: "ER_SLAVE_SQL_THREAD_STOPPED_UNTIL_CONDITION_BAD", - 0x2888: "ER_SLAVE_SQL_THREAD_STOPPED_UNTIL_POSITION_REACHED", - 0x2889: "ER_SLAVE_SQL_THREAD_STOPPED_BEFORE_GTIDS_ALREADY_APPLIED", - 0x288a: "ER_SLAVE_SQL_THREAD_STOPPED_BEFORE_GTIDS_REACHED", - 0x288b: "ER_SLAVE_SQL_THREAD_STOPPED_AFTER_GTIDS_REACHED", - 0x288c: "ER_SLAVE_SQL_THREAD_STOPPED_GAP_TRX_PROCESSED", - 0x288d: "ER_GROUP_REPLICATION_PLUGIN_NOT_INSTALLED", - 0x288e: "ER_GTID_ALREADY_ADDED_BY_USER", - 0x288f: "ER_FAILED_TO_DELETE_FROM_GTID_EXECUTED_TABLE", - 0x2890: "ER_FAILED_TO_COMPRESS_GTID_EXECUTED_TABLE", - 0x2891: "ER_FAILED_TO_COMPRESS_GTID_EXECUTED_TABLE_OOM", - 0x2892: "ER_FAILED_TO_INIT_THREAD_ATTR_FOR_GTID_TABLE_COMPRESSION", - 0x2893: "ER_FAILED_TO_CREATE_GTID_TABLE_COMPRESSION_THREAD", - 0x2894: "ER_FAILED_TO_JOIN_GTID_TABLE_COMPRESSION_THREAD", - 0x2895: "ER_NPIPE_FAILED_TO_INIT_SECURITY_DESCRIPTOR", - 0x2896: "ER_NPIPE_FAILED_TO_SET_SECURITY_DESCRIPTOR", - 0x2897: "ER_NPIPE_PIPE_ALREADY_IN_USE", - 0x2898: "ER_NDB_SLAVE_SAW_EPOCH_LOWER_THAN_PREVIOUS_ON_START", - 0x2899: "ER_NDB_SLAVE_SAW_EPOCH_LOWER_THAN_PREVIOUS", - 0x289a: "ER_NDB_SLAVE_SAW_ALREADY_COMMITTED_EPOCH", - 0x289b: "ER_NDB_SLAVE_PREVIOUS_EPOCH_NOT_COMMITTED", - 0x289c: "ER_NDB_SLAVE_MISSING_DATA_FOR_TIMESTAMP_COLUMN", - 0x289d: "ER_NDB_SLAVE_LOGGING_EXCEPTIONS_TO", - 0x289e: "ER_NDB_SLAVE_LOW_EPOCH_RESOLUTION", - 0x289f: "ER_NDB_INFO_FOUND_UNEXPECTED_FIELD_TYPE", - 0x28a0: "ER_NDB_INFO_FAILED_TO_CREATE_NDBINFO", - 0x28a1: "ER_NDB_INFO_FAILED_TO_INIT_NDBINFO", - 0x28a2: "ER_NDB_CLUSTER_WRONG_NUMBER_OF_FUNCTION_ARGUMENTS", - 0x28a3: "ER_NDB_CLUSTER_SCHEMA_INFO", - 0x28a4: "ER_NDB_CLUSTER_GENERIC_MESSAGE", - 0x28a5: "ER_RPL_CANT_OPEN_INFO_TABLE", - 0x28a6: "ER_RPL_CANT_SCAN_INFO_TABLE", - 0x28a7: "ER_RPL_CORRUPTED_INFO_TABLE", - 0x28a8: "ER_RPL_CORRUPTED_KEYS_IN_INFO_TABLE", - 0x28a9: "ER_RPL_WORKER_ID_IS", - 0x28aa: "ER_RPL_INCONSISTENT_TIMESTAMPS_IN_TRX", - 0x28ab: "ER_RPL_INCONSISTENT_SEQUENCE_NO_IN_TRX", - 0x28ac: "ER_RPL_CHANNELS_REQUIRE_TABLES_AS_INFO_REPOSITORIES", - 0x28ad: "ER_RPL_CHANNELS_REQUIRE_NON_ZERO_SERVER_ID", - 0x28ae: "ER_RPL_REPO_SHOULD_BE_TABLE", - 0x28af: "ER_RPL_ERROR_CREATING_MASTER_INFO", - 0x28b0: "ER_RPL_ERROR_CHANGING_MASTER_INFO_REPO_TYPE", - 0x28b1: "ER_RPL_CHANGING_RELAY_LOG_INFO_REPO_TYPE_FAILED_DUE_TO_GAPS", - 0x28b2: "ER_RPL_ERROR_CREATING_RELAY_LOG_INFO", - 0x28b3: "ER_RPL_ERROR_CHANGING_RELAY_LOG_INFO_REPO_TYPE", - 0x28b4: "ER_RPL_FAILED_TO_DELETE_FROM_SLAVE_WORKERS_INFO_REPOSITORY", - 0x28b5: "ER_RPL_FAILED_TO_RESET_STATE_IN_SLAVE_INFO_REPOSITORY", - 0x28b6: "ER_RPL_ERROR_CHECKING_REPOSITORY", - 0x28b7: "ER_RPL_SLAVE_GENERIC_MESSAGE", - 0x28b8: "ER_RPL_SLAVE_COULD_NOT_CREATE_CHANNEL_LIST", - 0x28b9: "ER_RPL_MULTISOURCE_REQUIRES_TABLE_TYPE_REPOSITORIES", - 0x28ba: "ER_RPL_SLAVE_FAILED_TO_INIT_A_MASTER_INFO_STRUCTURE", - 0x28bb: "ER_RPL_SLAVE_FAILED_TO_INIT_MASTER_INFO_STRUCTURE", - 0x28bc: "ER_RPL_SLAVE_FAILED_TO_CREATE_CHANNEL_FROM_MASTER_INFO", - 0x28bd: "ER_RPL_FAILED_TO_CREATE_NEW_INFO_FILE", - 0x28be: "ER_RPL_FAILED_TO_CREATE_CACHE_FOR_INFO_FILE", - 0x28bf: "ER_RPL_FAILED_TO_OPEN_INFO_FILE", - 0x28c0: "ER_RPL_GTID_MEMORY_FINALLY_AVAILABLE", - 0x28c1: "ER_SERVER_COST_UNKNOWN_COST_CONSTANT", - 0x28c2: "ER_SERVER_COST_INVALID_COST_CONSTANT", - 0x28c3: "ER_ENGINE_COST_UNKNOWN_COST_CONSTANT", - 0x28c4: "ER_ENGINE_COST_UNKNOWN_STORAGE_ENGINE", - 0x28c5: "ER_ENGINE_COST_INVALID_DEVICE_TYPE_FOR_SE", - 0x28c6: "ER_ENGINE_COST_INVALID_CONST_CONSTANT_FOR_SE_AND_DEVICE", - 0x28c7: "ER_SERVER_COST_FAILED_TO_READ", - 0x28c8: "ER_ENGINE_COST_FAILED_TO_READ", - 0x28c9: "ER_FAILED_TO_OPEN_COST_CONSTANT_TABLES", - 0x28ca: "ER_RPL_UNSUPPORTED_UNIGNORABLE_EVENT_IN_STREAM", - 0x28cb: "ER_RPL_GTID_LOG_EVENT_IN_STREAM", - 0x28cc: "ER_RPL_UNEXPECTED_BEGIN_IN_STREAM", - 0x28cd: "ER_RPL_UNEXPECTED_COMMIT_ROLLBACK_OR_XID_LOG_EVENT_IN_STREAM", - 0x28ce: "ER_RPL_UNEXPECTED_XA_ROLLBACK_IN_STREAM", - 0x28cf: "ER_EVENT_EXECUTION_FAILED_CANT_AUTHENTICATE_USER", - 0x28d0: "ER_EVENT_EXECUTION_FAILED_USER_LOST_EVEN_PRIVILEGE", - 0x28d1: "ER_EVENT_ERROR_DURING_COMPILATION", - 0x28d2: "ER_EVENT_DROPPING", - 0x28d3: "ER_NDB_SCHEMA_GENERIC_MESSAGE", - 0x28d4: "ER_RPL_INCOMPATIBLE_DECIMAL_IN_RBR", - 0x28d5: "ER_INIT_ROOT_WITHOUT_PASSWORD", - 0x28d6: "ER_INIT_GENERATING_TEMP_PASSWORD_FOR_ROOT", - 0x28d7: "ER_INIT_CANT_OPEN_BOOTSTRAP_FILE", - 0x28d8: "ER_INIT_BOOTSTRAP_COMPLETE", - 0x28d9: "ER_INIT_DATADIR_NOT_EMPTY_WONT_INITIALIZE", - 0x28da: "ER_INIT_DATADIR_EXISTS_WONT_INITIALIZE", - 0x28db: "ER_INIT_DATADIR_EXISTS_AND_PATH_TOO_LONG_WONT_INITIALIZE", - 0x28dc: "ER_INIT_DATADIR_EXISTS_AND_NOT_WRITABLE_WONT_INITIALIZE", - 0x28dd: "ER_INIT_CREATING_DD", - 0x28de: "ER_RPL_BINLOG_STARTING_DUMP", - 0x28df: "ER_RPL_BINLOG_MASTER_SENDS_HEARTBEAT", - 0x28e0: "ER_RPL_BINLOG_SKIPPING_REMAINING_HEARTBEAT_INFO", - 0x28e1: "ER_RPL_BINLOG_MASTER_USES_CHECKSUM_AND_SLAVE_CANT", - 0x28e2: "ER_NDB_QUERY_FAILED", - 0x28e3: "ER_KILLING_THREAD", - 0x28e4: "ER_DETACHING_SESSION_LEFT_BY_PLUGIN", - 0x28e5: "ER_CANT_DETACH_SESSION_LEFT_BY_PLUGIN", - 0x28e6: "ER_DETACHED_SESSIONS_LEFT_BY_PLUGIN", - 0x28e7: "ER_FAILED_TO_DECREMENT_NUMBER_OF_THREADS", - 0x28e8: "ER_PLUGIN_DID_NOT_DEINITIALIZE_THREADS", - 0x28e9: "ER_KILLED_THREADS_OF_PLUGIN", - 0x28ea: "ER_NDB_SLAVE_MAX_REPLICATED_EPOCH_UNKNOWN", - 0x28eb: "ER_NDB_SLAVE_MAX_REPLICATED_EPOCH_SET_TO", - 0x28ec: "ER_NDB_NODE_ID_AND_MANAGEMENT_SERVER_INFO", - 0x28ed: "ER_NDB_DISCONNECT_INFO", - 0x28ee: "ER_NDB_COLUMN_DEFAULTS_DIFFER", - 0x28ef: "ER_NDB_COLUMN_SHOULD_NOT_HAVE_NATIVE_DEFAULT", - 0x28f0: "ER_NDB_FIELD_INFO", - 0x28f1: "ER_NDB_COLUMN_INFO", - 0x28f2: "ER_NDB_OOM_IN_FIX_UNIQUE_INDEX_ATTR_ORDER", - 0x28f3: "ER_NDB_SLAVE_MALFORMED_EVENT_RECEIVED_ON_TABLE", - 0x28f4: "ER_NDB_SLAVE_CONFLICT_FUNCTION_REQUIRES_ROLE", - 0x28f5: "ER_NDB_SLAVE_CONFLICT_DETECTION_REQUIRES_TRANSACTION_IDS", - 0x28f6: "ER_NDB_SLAVE_BINLOG_MISSING_INFO_FOR_CONFLICT_DETECTION", - 0x28f7: "ER_NDB_ERROR_IN_READAUTOINCREMENTVALUE", - 0x28f8: "ER_NDB_FOUND_UNCOMMITTED_AUTOCOMMIT", - 0x28f9: "ER_NDB_SLAVE_TOO_MANY_RETRIES", - 0x28fa: "ER_NDB_SLAVE_ERROR_IN_UPDATE_CREATE_INFO", - 0x28fb: "ER_NDB_SLAVE_CANT_ALLOCATE_TABLE_SHARE", - 0x28fc: "ER_NDB_BINLOG_ERROR_INFO_FROM_DA", - 0x28fd: "ER_NDB_BINLOG_CREATE_TABLE_EVENT", - 0x28fe: "ER_NDB_BINLOG_FAILED_CREATE_TABLE_EVENT_OPERATIONS", - 0x28ff: "ER_NDB_BINLOG_RENAME_EVENT", - 0x2900: "ER_NDB_BINLOG_FAILED_CREATE_EVENT_OPERATIONS_DURING_RENAME", - 0x2901: "ER_NDB_UNEXPECTED_RENAME_TYPE", - 0x2902: "ER_NDB_ERROR_IN_GET_AUTO_INCREMENT", - 0x2903: "ER_NDB_CREATING_SHARE_IN_OPEN", - 0x2904: "ER_NDB_TABLE_OPENED_READ_ONLY", - 0x2905: "ER_NDB_INITIALIZE_GIVEN_CLUSTER_PLUGIN_DISABLED", - 0x2906: "ER_NDB_BINLOG_FORMAT_CHANGED_FROM_STMT_TO_MIXED", - 0x2907: "ER_NDB_TRAILING_SHARE_RELEASED_BY_CLOSE_CACHED_TABLES", - 0x2908: "ER_NDB_SHARE_ALREADY_EXISTS", - 0x2909: "ER_NDB_HANDLE_TRAILING_SHARE_INFO", - 0x290a: "ER_NDB_CLUSTER_GET_SHARE_INFO", - 0x290b: "ER_NDB_CLUSTER_REAL_FREE_SHARE_INFO", - 0x290c: "ER_NDB_CLUSTER_REAL_FREE_SHARE_DROP_FAILED", - 0x290d: "ER_NDB_CLUSTER_FREE_SHARE_INFO", - 0x290e: "ER_NDB_CLUSTER_MARK_SHARE_DROPPED_INFO", - 0x290f: "ER_NDB_CLUSTER_MARK_SHARE_DROPPED_DESTROYING_SHARE", - 0x2910: "ER_NDB_CLUSTER_OOM_THD_NDB", - 0x2911: "ER_NDB_BINLOG_NDB_TABLES_INITIALLY_READ_ONLY", - 0x2912: "ER_NDB_UTIL_THREAD_OOM", - 0x2913: "ER_NDB_ILLEGAL_VALUE_FOR_NDB_RECV_THREAD_CPU_MASK", - 0x2914: "ER_NDB_TOO_MANY_CPUS_IN_NDB_RECV_THREAD_CPU_MASK", - 0x2915: "ER_DBUG_CHECK_SHARES_OPEN", - 0x2916: "ER_DBUG_CHECK_SHARES_INFO", - 0x2917: "ER_DBUG_CHECK_SHARES_DROPPED", - 0x2918: "ER_INVALID_OR_OLD_TABLE_OR_DB_NAME", - 0x2919: "ER_TC_RECOVERING_AFTER_CRASH_USING", - 0x291a: "ER_TC_CANT_AUTO_RECOVER_WITH_TC_HEURISTIC_RECOVER", - 0x291b: "ER_TC_BAD_MAGIC_IN_TC_LOG", - 0x291c: "ER_TC_NEED_N_SE_SUPPORTING_2PC_FOR_RECOVERY", - 0x291d: "ER_TC_RECOVERY_FAILED_THESE_ARE_YOUR_OPTIONS", - 0x291e: "ER_TC_HEURISTIC_RECOVERY_MODE", - 0x291f: "ER_TC_HEURISTIC_RECOVERY_FAILED", - 0x2920: "ER_TC_RESTART_WITHOUT_TC_HEURISTIC_RECOVER", - 0x2921: "ER_RPL_SLAVE_FAILED_TO_CREATE_OR_RECOVER_INFO_REPOSITORIES", - 0x2922: "ER_RPL_SLAVE_AUTO_POSITION_IS_1_AND_GTID_MODE_IS_OFF", - 0x2923: "ER_RPL_SLAVE_CANT_START_SLAVE_FOR_CHANNEL", - 0x2924: "ER_RPL_SLAVE_CANT_STOP_SLAVE_FOR_CHANNEL", - 0x2925: "ER_RPL_RECOVERY_NO_ROTATE_EVENT_FROM_MASTER", - 0x2926: "ER_RPL_RECOVERY_ERROR_READ_RELAY_LOG", - 0x2927: "ER_RPL_RECOVERY_ERROR_FREEING_IO_CACHE", - 0x2928: "ER_RPL_RECOVERY_SKIPPED_GROUP_REPLICATION_CHANNEL", - 0x2929: "ER_RPL_RECOVERY_ERROR", - 0x292a: "ER_RPL_RECOVERY_IO_ERROR_READING_RELAY_LOG_INDEX", - 0x292b: "ER_RPL_RECOVERY_FILE_MASTER_POS_INFO", - 0x292c: "ER_RPL_RECOVERY_REPLICATE_SAME_SERVER_ID_REQUIRES_POSITION", - 0x292d: "ER_RPL_MTS_RECOVERY_STARTING_COORDINATOR", - 0x292e: "ER_RPL_MTS_RECOVERY_FAILED_TO_START_COORDINATOR", - 0x292f: "ER_RPL_MTS_AUTOMATIC_RECOVERY_FAILED", - 0x2930: "ER_RPL_MTS_RECOVERY_CANT_OPEN_RELAY_LOG", - 0x2931: "ER_RPL_MTS_RECOVERY_SUCCESSFUL", - 0x2932: "ER_RPL_SERVER_ID_MISSING", - 0x2933: "ER_RPL_CANT_CREATE_SLAVE_THREAD", - 0x2934: "ER_RPL_SLAVE_IO_THREAD_WAS_KILLED", - 0x2935: "ER_RPL_SLAVE_MASTER_UUID_HAS_CHANGED", - 0x2936: "ER_RPL_SLAVE_USES_CHECKSUM_AND_MASTER_PRE_50", - 0x2937: "ER_RPL_SLAVE_SECONDS_BEHIND_MASTER_DUBIOUS", - 0x2938: "ER_RPL_SLAVE_CANT_FLUSH_MASTER_INFO_FILE", - 0x2939: "ER_RPL_SLAVE_REPORT_HOST_TOO_LONG", - 0x293a: "ER_RPL_SLAVE_REPORT_USER_TOO_LONG", - 0x293b: "ER_RPL_SLAVE_REPORT_PASSWORD_TOO_LONG", - 0x293c: "ER_RPL_SLAVE_ERROR_RETRYING", - 0x293d: "ER_RPL_SLAVE_ERROR_READING_FROM_SERVER", - 0x293e: "ER_RPL_SLAVE_DUMP_THREAD_KILLED_BY_MASTER", - 0x293f: "ER_RPL_MTS_STATISTICS", - 0x2940: "ER_RPL_MTS_RECOVERY_COMPLETE", - 0x2941: "ER_RPL_SLAVE_CANT_INIT_RELAY_LOG_POSITION", - 0x2942: "ER_RPL_SLAVE_CONNECTED_TO_MASTER_REPLICATION_STARTED", - 0x2943: "ER_RPL_SLAVE_IO_THREAD_KILLED", - 0x2944: "ER_RPL_SLAVE_IO_THREAD_CANT_REGISTER_ON_MASTER", - 0x2945: "ER_RPL_SLAVE_FORCING_TO_RECONNECT_IO_THREAD", - 0x2946: "ER_RPL_SLAVE_ERROR_REQUESTING_BINLOG_DUMP", - 0x2947: "ER_RPL_LOG_ENTRY_EXCEEDS_SLAVE_MAX_ALLOWED_PACKET", - 0x2948: "ER_RPL_SLAVE_STOPPING_AS_MASTER_OOM", - 0x2949: "ER_RPL_SLAVE_IO_THREAD_ABORTED_WAITING_FOR_RELAY_LOG_SPACE", - 0x294a: "ER_RPL_SLAVE_IO_THREAD_EXITING", - 0x294b: "ER_RPL_SLAVE_CANT_INITIALIZE_SLAVE_WORKER", - 0x294c: "ER_RPL_MTS_GROUP_RECOVERY_RELAY_LOG_INFO_FOR_WORKER", - 0x294d: "ER_RPL_ERROR_LOOKING_FOR_LOG", - 0x294e: "ER_RPL_MTS_GROUP_RECOVERY_RELAY_LOG_INFO", - 0x294f: "ER_RPL_CANT_FIND_FOLLOWUP_FILE", - 0x2950: "ER_RPL_MTS_CHECKPOINT_PERIOD_DIFFERS_FROM_CNT", - 0x2951: "ER_RPL_SLAVE_WORKER_THREAD_CREATION_FAILED", - 0x2952: "ER_RPL_SLAVE_WORKER_THREAD_CREATION_FAILED_WITH_ERRNO", - 0x2953: "ER_RPL_SLAVE_FAILED_TO_INIT_PARTITIONS_HASH", - 0x2954: "ER_RPL_SLAVE_NDB_TABLES_NOT_AVAILABLE", - 0x2955: "ER_RPL_SLAVE_SQL_THREAD_STARTING", - 0x2956: "ER_RPL_SLAVE_SKIP_COUNTER_EXECUTED", - 0x2957: "ER_RPL_SLAVE_ADDITIONAL_ERROR_INFO_FROM_DA", - 0x2958: "ER_RPL_SLAVE_ERROR_INFO_FROM_DA", - 0x2959: "ER_RPL_SLAVE_ERROR_LOADING_USER_DEFINED_LIBRARY", - 0x295a: "ER_RPL_SLAVE_ERROR_RUNNING_QUERY", - 0x295b: "ER_RPL_SLAVE_SQL_THREAD_EXITING", - 0x295c: "ER_RPL_SLAVE_READ_INVALID_EVENT_FROM_MASTER", - 0x295d: "ER_RPL_SLAVE_QUEUE_EVENT_FAILED_INVALID_CONFIGURATION", - 0x295e: "ER_RPL_SLAVE_IO_THREAD_DETECTED_UNEXPECTED_EVENT_SEQUENCE", - 0x295f: "ER_RPL_SLAVE_CANT_USE_CHARSET", - 0x2960: "ER_RPL_SLAVE_CONNECTED_TO_MASTER_REPLICATION_RESUMED", - 0x2961: "ER_RPL_SLAVE_NEXT_LOG_IS_ACTIVE", - 0x2962: "ER_RPL_SLAVE_NEXT_LOG_IS_INACTIVE", - 0x2963: "ER_RPL_SLAVE_SQL_THREAD_IO_ERROR_READING_EVENT", - 0x2964: "ER_RPL_SLAVE_ERROR_READING_RELAY_LOG_EVENTS", - 0x2965: "ER_SLAVE_CHANGE_MASTER_TO_EXECUTED", - 0x2966: "ER_RPL_SLAVE_NEW_MASTER_INFO_NEEDS_REPOS_TYPE_OTHER_THAN_FILE", - 0x2967: "ER_RPL_FAILED_TO_STAT_LOG_IN_INDEX", - 0x2968: "ER_RPL_LOG_NOT_FOUND_WHILE_COUNTING_RELAY_LOG_SPACE", - 0x2969: "ER_SLAVE_CANT_USE_TEMPDIR", - 0x296a: "ER_RPL_RELAY_LOG_NEEDS_FILE_NOT_DIRECTORY", - 0x296b: "ER_RPL_RELAY_LOG_INDEX_NEEDS_FILE_NOT_DIRECTORY", - 0x296c: "ER_RPL_PLEASE_USE_OPTION_RELAY_LOG", - 0x296d: "ER_RPL_OPEN_INDEX_FILE_FAILED", - 0x296e: "ER_RPL_CANT_INITIALIZE_GTID_SETS_IN_RLI_INIT_INFO", - 0x296f: "ER_RPL_CANT_OPEN_LOG_IN_RLI_INIT_INFO", - 0x2970: "ER_RPL_ERROR_WRITING_RELAY_LOG_CONFIGURATION", - 0x2971: "ER_NDB_OOM_GET_NDB_BLOBS_VALUE", - 0x2972: "ER_NDB_THREAD_TIMED_OUT", - 0x2973: "ER_NDB_TABLE_IS_NOT_DISTRIBUTED", - 0x2974: "ER_NDB_CREATING_TABLE", - 0x2975: "ER_NDB_FLUSHING_TABLE_INFO", - 0x2976: "ER_NDB_CLEANING_STRAY_TABLES", - 0x2977: "ER_NDB_DISCOVERED_MISSING_DB", - 0x2978: "ER_NDB_DISCOVERED_REMAINING_DB", - 0x2979: "ER_NDB_CLUSTER_FIND_ALL_DBS_RETRY", - 0x297a: "ER_NDB_CLUSTER_FIND_ALL_DBS_FAIL", - 0x297b: "ER_NDB_SKIPPING_SETUP_TABLE", - 0x297c: "ER_NDB_FAILED_TO_SET_UP_TABLE", - 0x297d: "ER_NDB_MISSING_FRM_DISCOVERING", - 0x297e: "ER_NDB_MISMATCH_IN_FRM_DISCOVERING", - 0x297f: "ER_NDB_BINLOG_CLEANING_UP_SETUP_LEFTOVERS", - 0x2980: "ER_NDB_WAITING_INFO", - 0x2981: "ER_NDB_WAITING_INFO_WITH_MAP", - 0x2982: "ER_NDB_TIMEOUT_WHILE_DISTRIBUTING", - 0x2983: "ER_NDB_NOT_WAITING_FOR_DISTRIBUTING", - 0x2984: "ER_NDB_DISTRIBUTED_INFO", - 0x2985: "ER_NDB_DISTRIBUTION_COMPLETE", - 0x2986: "ER_NDB_SCHEMA_DISTRIBUTION_FAILED", - 0x2987: "ER_NDB_SCHEMA_DISTRIBUTION_REPORTS_SUBSCRIBE", - 0x2988: "ER_NDB_SCHEMA_DISTRIBUTION_REPORTS_UNSUBSCRIBE", - 0x2989: "ER_NDB_BINLOG_CANT_DISCOVER_TABLE_FROM_SCHEMA_EVENT", - 0x298a: "ER_NDB_BINLOG_SIGNALLING_UNKNOWN_VALUE", - 0x298b: "ER_NDB_BINLOG_REPLY_TO", - 0x298c: "ER_NDB_BINLOG_CANT_RELEASE_SLOCK", - 0x298d: "ER_NDB_CANT_FIND_TABLE", - 0x298e: "ER_NDB_DISCARDING_EVENT_NO_OBJ", - 0x298f: "ER_NDB_DISCARDING_EVENT_ID_VERSION_MISMATCH", - 0x2990: "ER_NDB_CLEAR_SLOCK_INFO", - 0x2991: "ER_NDB_BINLOG_SKIPPING_LOCAL_TABLE", - 0x2992: "ER_NDB_BINLOG_ONLINE_ALTER_RENAME", - 0x2993: "ER_NDB_BINLOG_CANT_REOPEN_SHADOW_TABLE", - 0x2994: "ER_NDB_BINLOG_ONLINE_ALTER_RENAME_COMPLETE", - 0x2995: "ER_NDB_BINLOG_SKIPPING_DROP_OF_LOCAL_TABLE", - 0x2996: "ER_NDB_BINLOG_SKIPPING_RENAME_OF_LOCAL_TABLE", - 0x2997: "ER_NDB_BINLOG_SKIPPING_DROP_OF_DB_CONTAINING_LOCAL_TABLES", - 0x2998: "ER_NDB_BINLOG_GOT_DIST_PRIV_EVENT_FLUSHING_PRIVILEGES", - 0x2999: "ER_NDB_BINLOG_GOT_SCHEMA_EVENT", - 0x299a: "ER_NDB_BINLOG_SKIPPING_OLD_SCHEMA_OPERATION", - 0x299b: "ER_NDB_CLUSTER_FAILURE", - 0x299c: "ER_NDB_TABLES_INITIALLY_READ_ONLY_ON_RECONNECT", - 0x299d: "ER_NDB_IGNORING_UNKNOWN_EVENT", - 0x299e: "ER_NDB_BINLOG_OPENING_INDEX", - 0x299f: "ER_NDB_BINLOG_CANT_LOCK_NDB_BINLOG_INDEX", - 0x29a0: "ER_NDB_BINLOG_INJECTING_RANDOM_WRITE_FAILURE", - 0x29a1: "ER_NDB_BINLOG_CANT_WRITE_TO_NDB_BINLOG_INDEX", - 0x29a2: "ER_NDB_BINLOG_WRITING_TO_NDB_BINLOG_INDEX", - 0x29a3: "ER_NDB_BINLOG_CANT_COMMIT_TO_NDB_BINLOG_INDEX", - 0x29a4: "ER_NDB_BINLOG_WRITE_TO_NDB_BINLOG_INDEX_FAILED_AFTER_KILL", - 0x29a5: "ER_NDB_BINLOG_USING_SERVER_ID_0_SLAVES_WILL_NOT", - 0x29a6: "ER_NDB_SERVER_ID_RESERVED_OR_TOO_LARGE", - 0x29a7: "ER_NDB_BINLOG_NDB_LOG_TRANSACTION_ID_REQUIRES_V2_ROW_EVENTS", - 0x29a8: "ER_NDB_BINLOG_NDB_LOG_APPLY_STATUS_FORCING_FULL_USE_WRITE", - 0x29a9: "ER_NDB_BINLOG_GENERIC_MESSAGE", - 0x29aa: "ER_NDB_CONFLICT_GENERIC_MESSAGE", - 0x29ab: "ER_NDB_TRANS_DEPENDENCY_TRACKER_ERROR", - 0x29ac: "ER_NDB_CONFLICT_FN_PARSE_ERROR", - 0x29ad: "ER_NDB_CONFLICT_FN_SETUP_ERROR", - 0x29ae: "ER_NDB_BINLOG_FAILED_TO_GET_TABLE", - 0x29af: "ER_NDB_BINLOG_NOT_LOGGING", - 0x29b0: "ER_NDB_BINLOG_CREATE_TABLE_EVENT_FAILED", - 0x29b1: "ER_NDB_BINLOG_CREATE_TABLE_EVENT_INFO", - 0x29b2: "ER_NDB_BINLOG_DISCOVER_TABLE_EVENT_INFO", - 0x29b3: "ER_NDB_BINLOG_BLOB_REQUIRES_PK", - 0x29b4: "ER_NDB_BINLOG_CANT_CREATE_EVENT_IN_DB", - 0x29b5: "ER_NDB_BINLOG_CANT_CREATE_EVENT_IN_DB_AND_CANT_DROP", - 0x29b6: "ER_NDB_BINLOG_CANT_CREATE_EVENT_IN_DB_DROPPED", - 0x29b7: "ER_NDB_BINLOG_DISCOVER_REUSING_OLD_EVENT_OPS", - 0x29b8: "ER_NDB_BINLOG_CREATING_NDBEVENTOPERATION_FAILED", - 0x29b9: "ER_NDB_BINLOG_CANT_CREATE_BLOB", - 0x29ba: "ER_NDB_BINLOG_NDBEVENT_EXECUTE_FAILED", - 0x29bb: "ER_NDB_CREATE_EVENT_OPS_LOGGING_INFO", - 0x29bc: "ER_NDB_BINLOG_CANT_DROP_EVENT_FROM_DB", - 0x29bd: "ER_NDB_TIMED_OUT_IN_DROP_TABLE", - 0x29be: "ER_NDB_BINLOG_UNHANDLED_ERROR_FOR_TABLE", - 0x29bf: "ER_NDB_BINLOG_CLUSTER_FAILURE", - 0x29c0: "ER_NDB_BINLOG_UNKNOWN_NON_DATA_EVENT", - 0x29c1: "ER_NDB_BINLOG_INJECTOR_DISCARDING_ROW_EVENT_METADATA", - 0x29c2: "ER_NDB_REMAINING_OPEN_TABLES", - 0x29c3: "ER_NDB_REMAINING_OPEN_TABLE_INFO", - 0x29c4: "ER_NDB_COULD_NOT_GET_APPLY_STATUS_SHARE", - 0x29c5: "ER_NDB_BINLOG_SERVER_SHUTDOWN_DURING_NDB_CLUSTER_START", - 0x29c6: "ER_NDB_BINLOG_CLUSTER_RESTARTED_RESET_MASTER_SUGGESTED", - 0x29c7: "ER_NDB_BINLOG_CLUSTER_HAS_RECONNECTED", - 0x29c8: "ER_NDB_BINLOG_STARTING_LOG_AT_EPOCH", - 0x29c9: "ER_NDB_BINLOG_NDB_TABLES_WRITABLE", - 0x29ca: "ER_NDB_BINLOG_SHUTDOWN_DETECTED", - 0x29cb: "ER_NDB_BINLOG_LOST_SCHEMA_CONNECTION_WAITING", - 0x29cc: "ER_NDB_BINLOG_LOST_SCHEMA_CONNECTION_CONTINUING", - 0x29cd: "ER_NDB_BINLOG_ERROR_HANDLING_SCHEMA_EVENT", - 0x29ce: "ER_NDB_BINLOG_CANT_INJECT_APPLY_STATUS_WRITE_ROW", - 0x29cf: "ER_NDB_BINLOG_ERROR_DURING_GCI_ROLLBACK", - 0x29d0: "ER_NDB_BINLOG_ERROR_DURING_GCI_COMMIT", - 0x29d1: "ER_NDB_BINLOG_LATEST_TRX_IN_EPOCH_NOT_IN_BINLOG", - 0x29d2: "ER_NDB_BINLOG_RELEASING_EXTRA_SHARE_REFERENCES", - 0x29d3: "ER_NDB_BINLOG_REMAINING_OPEN_TABLES", - 0x29d4: "ER_NDB_BINLOG_REMAINING_OPEN_TABLE_INFO", - 0x29d5: "ER_TREE_CORRUPT_PARENT_SHOULD_POINT_AT_PARENT", - 0x29d6: "ER_TREE_CORRUPT_ROOT_SHOULD_BE_BLACK", - 0x29d7: "ER_TREE_CORRUPT_2_CONSECUTIVE_REDS", - 0x29d8: "ER_TREE_CORRUPT_RIGHT_IS_LEFT", - 0x29d9: "ER_TREE_CORRUPT_INCORRECT_BLACK_COUNT", - 0x29da: "ER_WRONG_COUNT_FOR_ORIGIN", - 0x29db: "ER_WRONG_COUNT_FOR_KEY", - 0x29dc: "ER_WRONG_COUNT_OF_ELEMENTS", - 0x29dd: "ER_RPL_ERROR_READING_SLAVE_WORKER_CONFIGURATION", - 0x29de: "ER_RPL_ERROR_WRITING_SLAVE_WORKER_CONFIGURATION", - 0x29df: "ER_RPL_FAILED_TO_OPEN_RELAY_LOG", - 0x29e0: "ER_RPL_WORKER_CANT_READ_RELAY_LOG", - 0x29e1: "ER_RPL_WORKER_CANT_FIND_NEXT_RELAY_LOG", - 0x29e2: "ER_RPL_MTS_SLAVE_COORDINATOR_HAS_WAITED", - 0x29e3: "ER_BINLOG_FAILED_TO_WRITE_DROP_FOR_TEMP_TABLES", - 0x29e4: "ER_BINLOG_OOM_WRITING_DELETE_WHILE_OPENING_HEAP_TABLE", - 0x29e5: "ER_FAILED_TO_REPAIR_TABLE", - 0x29e6: "ER_FAILED_TO_REMOVE_TEMP_TABLE", - 0x29e7: "ER_SYSTEM_TABLE_NOT_TRANSACTIONAL", - 0x29e8: "ER_RPL_ERROR_WRITING_MASTER_CONFIGURATION", - 0x29e9: "ER_RPL_ERROR_READING_MASTER_CONFIGURATION", - 0x29ea: "ER_RPL_SSL_INFO_IN_MASTER_INFO_IGNORED", - 0x29eb: "ER_PLUGIN_FAILED_DEINITIALIZATION", - 0x29ec: "ER_PLUGIN_HAS_NONZERO_REFCOUNT_AFTER_DEINITIALIZATION", - 0x29ed: "ER_PLUGIN_SHUTTING_DOWN_PLUGIN", - 0x29ee: "ER_PLUGIN_REGISTRATION_FAILED", - 0x29ef: "ER_PLUGIN_CANT_OPEN_PLUGIN_TABLE", - 0x29f0: "ER_PLUGIN_CANT_LOAD", - 0x29f1: "ER_PLUGIN_LOAD_PARAMETER_TOO_LONG", - 0x29f2: "ER_PLUGIN_FORCING_SHUTDOWN", - 0x29f3: "ER_PLUGIN_HAS_NONZERO_REFCOUNT_AFTER_SHUTDOWN", - 0x29f4: "ER_PLUGIN_UNKNOWN_VARIABLE_TYPE", - 0x29f5: "ER_PLUGIN_VARIABLE_SET_READ_ONLY", - 0x29f6: "ER_PLUGIN_VARIABLE_MISSING_NAME", - 0x29f7: "ER_PLUGIN_VARIABLE_NOT_ALLOCATED_THREAD_LOCAL", - 0x29f8: "ER_PLUGIN_OOM", - 0x29f9: "ER_PLUGIN_BAD_OPTIONS", - 0x29fa: "ER_PLUGIN_PARSING_OPTIONS_FAILED", - 0x29fb: "ER_PLUGIN_DISABLED", - 0x29fc: "ER_PLUGIN_HAS_CONFLICTING_SYSTEM_VARIABLES", - 0x29fd: "ER_PLUGIN_CANT_SET_PERSISTENT_OPTIONS", - 0x29fe: "ER_MY_NET_WRITE_FAILED_FALLING_BACK_ON_STDERR", - 0x29ff: "ER_RETRYING_REPAIR_WITHOUT_QUICK", - 0x2a00: "ER_RETRYING_REPAIR_WITH_KEYCACHE", - 0x2a01: "ER_FOUND_ROWS_WHILE_REPAIRING", - 0x2a02: "ER_ERROR_DURING_OPTIMIZE_TABLE", - 0x2a03: "ER_ERROR_ENABLING_KEYS", - 0x2a04: "ER_CHECKING_TABLE", - 0x2a05: "ER_RECOVERING_TABLE", - 0x2a06: "ER_CANT_CREATE_TABLE_SHARE_FROM_FRM", - 0x2a07: "ER_CANT_LOCK_TABLE", - 0x2a08: "ER_CANT_ALLOC_TABLE_OBJECT", - 0x2a09: "ER_CANT_CREATE_HANDLER_OBJECT_FOR_TABLE", - 0x2a0a: "ER_CANT_SET_HANDLER_REFERENCE_FOR_TABLE", - 0x2a0b: "ER_CANT_LOCK_TABLESPACE", - 0x2a0c: "ER_CANT_UPGRADE_GENERATED_COLUMNS_TO_DD", - 0x2a0d: "ER_DD_ERROR_CREATING_ENTRY", - 0x2a0e: "ER_DD_CANT_FETCH_TABLE_DATA", - 0x2a0f: "ER_DD_CANT_FIX_SE_DATA", - 0x2a10: "ER_DD_CANT_CREATE_SP", - 0x2a11: "ER_CANT_OPEN_DB_OPT_USING_DEFAULT_CHARSET", - 0x2a12: "ER_CANT_CREATE_CACHE_FOR_DB_OPT", - 0x2a13: "ER_CANT_IDENTIFY_CHARSET_USING_DEFAULT", - 0x2a14: "ER_DB_OPT_NOT_FOUND_USING_DEFAULT_CHARSET", - 0x2a15: "ER_EVENT_CANT_GET_TIMEZONE_FROM_FIELD", - 0x2a16: "ER_EVENT_CANT_FIND_TIMEZONE", - 0x2a17: "ER_EVENT_CANT_GET_CHARSET", - 0x2a18: "ER_EVENT_CANT_GET_COLLATION", - 0x2a19: "ER_EVENT_CANT_OPEN_TABLE_MYSQL_EVENT", - 0x2a1a: "ER_CANT_PARSE_STORED_ROUTINE_BODY", - 0x2a1b: "ER_CANT_OPEN_TABLE_MYSQL_PROC", - 0x2a1c: "ER_CANT_READ_TABLE_MYSQL_PROC", - 0x2a1d: "ER_FILE_EXISTS_DURING_UPGRADE", - 0x2a1e: "ER_CANT_OPEN_DATADIR_AFTER_UPGRADE_FAILURE", - 0x2a1f: "ER_CANT_SET_PATH_FOR", - 0x2a20: "ER_CANT_OPEN_DIR", - 0x2a21: "ER_NDB_EMPTY_NODEID_IN_NDB_CLUSTER_CONNECTION_POOL_NODEIDS", - 0x2a22: "ER_NDB_CANT_PARSE_NDB_CLUSTER_CONNECTION_POOL_NODEIDS", - 0x2a23: "ER_NDB_INVALID_NODEID_IN_NDB_CLUSTER_CONNECTION_POOL_NODEIDS", - 0x2a24: "ER_NDB_DUPLICATE_NODEID_IN_NDB_CLUSTER_CONNECTION_POOL_NODEIDS", - 0x2a25: "ER_NDB_POOL_SIZE_MUST_MATCH_NDB_CLUSTER_CONNECTION_POOL_NODEIDS", - 0x2a26: "ER_NDB_NODEID_NOT_FIRST_IN_NDB_CLUSTER_CONNECTION_POOL_NODEIDS", - 0x2a27: "ER_NDB_USING_NODEID", - 0x2a28: "ER_NDB_CANT_ALLOC_GLOBAL_NDB_CLUSTER_CONNECTION", - 0x2a29: "ER_NDB_CANT_ALLOC_GLOBAL_NDB_OBJECT", - 0x2a2a: "ER_NDB_USING_NODEID_LIST", - 0x2a2b: "ER_NDB_CANT_ALLOC_NDB_CLUSTER_CONNECTION", - 0x2a2c: "ER_NDB_STARTING_CONNECT_THREAD", - 0x2a2d: "ER_NDB_NODE_INFO", - 0x2a2e: "ER_NDB_CANT_START_CONNECT_THREAD", - 0x2a2f: "ER_NDB_GENERIC_ERROR", - 0x2a30: "ER_NDB_CPU_MASK_TOO_SHORT", - 0x2a31: "ER_EVENT_ERROR_CREATING_QUERY_TO_WRITE_TO_BINLOG", - 0x2a32: "ER_EVENT_SCHEDULER_ERROR_LOADING_FROM_DB", - 0x2a33: "ER_EVENT_SCHEDULER_ERROR_GETTING_EVENT_OBJECT", - 0x2a34: "ER_EVENT_SCHEDULER_GOT_BAD_DATA_FROM_TABLE", - 0x2a35: "ER_EVENT_CANT_GET_LOCK_FOR_DROPPING_EVENT", - 0x2a36: "ER_EVENT_UNABLE_TO_DROP_EVENT", - 0x2a37: "ER_BINLOG_ATTACHING_THREAD_MEMORY_FINALLY_AVAILABLE", - 0x2a38: "ER_BINLOG_CANT_RESIZE_CACHE", - 0x2a39: "ER_BINLOG_FILE_BEING_READ_NOT_PURGED", - 0x2a3a: "ER_BINLOG_IO_ERROR_READING_HEADER", - 0x2a3b: "ER_BINLOG_CANT_OPEN_LOG", - 0x2a3c: "ER_BINLOG_CANT_CREATE_CACHE_FOR_LOG", - 0x2a3d: "ER_BINLOG_FILE_EXTENSION_NUMBER_EXHAUSTED", - 0x2a3e: "ER_BINLOG_FILE_NAME_TOO_LONG", - 0x2a3f: "ER_BINLOG_FILE_EXTENSION_NUMBER_RUNNING_LOW", - 0x2a40: "ER_BINLOG_CANT_OPEN_FOR_LOGGING", - 0x2a41: "ER_BINLOG_FAILED_TO_SYNC_INDEX_FILE", - 0x2a42: "ER_BINLOG_ERROR_READING_GTIDS_FROM_RELAY_LOG", - 0x2a43: "ER_BINLOG_EVENTS_READ_FROM_RELAY_LOG_INFO", - 0x2a44: "ER_BINLOG_ERROR_READING_GTIDS_FROM_BINARY_LOG", - 0x2a45: "ER_BINLOG_EVENTS_READ_FROM_BINLOG_INFO", - 0x2a46: "ER_BINLOG_CANT_GENERATE_NEW_FILE_NAME", - 0x2a47: "ER_BINLOG_FAILED_TO_SYNC_INDEX_FILE_IN_OPEN", - 0x2a48: "ER_BINLOG_CANT_USE_FOR_LOGGING", - 0x2a49: "ER_BINLOG_FAILED_TO_CLOSE_INDEX_FILE_WHILE_REBUILDING", - 0x2a4a: "ER_BINLOG_FAILED_TO_DELETE_INDEX_FILE_WHILE_REBUILDING", - 0x2a4b: "ER_BINLOG_FAILED_TO_RENAME_INDEX_FILE_WHILE_REBUILDING", - 0x2a4c: "ER_BINLOG_FAILED_TO_OPEN_INDEX_FILE_AFTER_REBUILDING", - 0x2a4d: "ER_BINLOG_CANT_APPEND_LOG_TO_TMP_INDEX", - 0x2a4e: "ER_BINLOG_CANT_LOCATE_OLD_BINLOG_OR_RELAY_LOG_FILES", - 0x2a4f: "ER_BINLOG_CANT_DELETE_FILE", - 0x2a50: "ER_BINLOG_CANT_SET_TMP_INDEX_NAME", - 0x2a51: "ER_BINLOG_FAILED_TO_OPEN_TEMPORARY_INDEX_FILE", - 0x2a52: "ER_BINLOG_ERROR_GETTING_NEXT_LOG_FROM_INDEX", - 0x2a53: "ER_BINLOG_CANT_OPEN_TMP_INDEX", - 0x2a54: "ER_BINLOG_CANT_COPY_INDEX_TO_TMP", - 0x2a55: "ER_BINLOG_CANT_CLOSE_TMP_INDEX", - 0x2a56: "ER_BINLOG_CANT_MOVE_TMP_TO_INDEX", - 0x2a57: "ER_BINLOG_PURGE_LOGS_CALLED_WITH_FILE_NOT_IN_INDEX", - 0x2a58: "ER_BINLOG_PURGE_LOGS_CANT_SYNC_INDEX_FILE", - 0x2a59: "ER_BINLOG_PURGE_LOGS_CANT_COPY_TO_REGISTER_FILE", - 0x2a5a: "ER_BINLOG_PURGE_LOGS_CANT_FLUSH_REGISTER_FILE", - 0x2a5b: "ER_BINLOG_PURGE_LOGS_CANT_UPDATE_INDEX_FILE", - 0x2a5c: "ER_BINLOG_PURGE_LOGS_FAILED_TO_PURGE_LOG", - 0x2a5d: "ER_BINLOG_FAILED_TO_SET_PURGE_INDEX_FILE_NAME", - 0x2a5e: "ER_BINLOG_FAILED_TO_OPEN_REGISTER_FILE", - 0x2a5f: "ER_BINLOG_FAILED_TO_REINIT_REGISTER_FILE", - 0x2a60: "ER_BINLOG_FAILED_TO_READ_REGISTER_FILE", - 0x2a61: "ER_CANT_STAT_FILE", - 0x2a62: "ER_BINLOG_CANT_DELETE_LOG_FILE_DOES_INDEX_MATCH_FILES", - 0x2a63: "ER_BINLOG_CANT_DELETE_FILE_AND_READ_BINLOG_INDEX", - 0x2a64: "ER_BINLOG_FAILED_TO_DELETE_LOG_FILE", - 0x2a65: "ER_BINLOG_LOGGING_INCIDENT_TO_STOP_SLAVES", - 0x2a66: "ER_BINLOG_CANT_FIND_LOG_IN_INDEX", - 0x2a67: "ER_BINLOG_RECOVERING_AFTER_CRASH_USING", - 0x2a68: "ER_BINLOG_CANT_OPEN_CRASHED_BINLOG", - 0x2a69: "ER_BINLOG_CANT_TRIM_CRASHED_BINLOG", - 0x2a6a: "ER_BINLOG_CRASHED_BINLOG_TRIMMED", - 0x2a6b: "ER_BINLOG_CANT_CLEAR_IN_USE_FLAG_FOR_CRASHED_BINLOG", - 0x2a6c: "ER_BINLOG_FAILED_TO_RUN_AFTER_SYNC_HOOK", - 0x2a6d: "ER_TURNING_LOGGING_OFF_FOR_THE_DURATION", - 0x2a6e: "ER_BINLOG_FAILED_TO_RUN_AFTER_FLUSH_HOOK", - 0x2a6f: "ER_BINLOG_CRASH_RECOVERY_FAILED", - 0x2a70: "ER_BINLOG_WARNING_SUPPRESSED", - 0x2a71: "ER_NDB_LOG_ENTRY", - 0x2a72: "ER_NDB_LOG_ENTRY_WITH_PREFIX", - 0x2a73: "ER_NDB_BINLOG_CANT_CREATE_PURGE_THD", - 0x2a74: "ER_INNODB_UNKNOWN_COLLATION", - 0x2a75: "ER_INNODB_INVALID_LOG_GROUP_HOME_DIR", - 0x2a76: "ER_INNODB_INVALID_INNODB_UNDO_DIRECTORY", - 0x2a77: "ER_INNODB_ILLEGAL_COLON_IN_POOL", - 0x2a78: "ER_INNODB_INVALID_PAGE_SIZE", - 0x2a79: "ER_INNODB_DIRTY_WATER_MARK_NOT_LOW", - 0x2a7a: "ER_INNODB_IO_CAPACITY_EXCEEDS_MAX", - 0x2a7b: "ER_INNODB_FILES_SAME", - 0x2a7c: "ER_INNODB_UNREGISTERED_TRX_ACTIVE", - 0x2a7d: "ER_INNODB_CLOSING_CONNECTION_ROLLS_BACK", - 0x2a7e: "ER_INNODB_TRX_XLATION_TABLE_OOM", - 0x2a7f: "ER_INNODB_CANT_FIND_INDEX_IN_INNODB_DD", - 0x2a80: "ER_INNODB_INDEX_COLUMN_INFO_UNLIKE_MYSQLS", - 0x2a81: "ER_INNODB_CANT_OPEN_TABLE", - 0x2a82: "ER_INNODB_CANT_BUILD_INDEX_XLATION_TABLE_FOR", - 0x2a83: "ER_INNODB_PK_NOT_IN_MYSQL", - 0x2a84: "ER_INNODB_PK_ONLY_IN_MYSQL", - 0x2a85: "ER_INNODB_CLUSTERED_INDEX_PRIVATE", - 0x2a86: "ER_INNODB_PARTITION_TABLE_LOWERCASED", - 0x2a87: "ER_ERRMSG_REPLACEMENT_DODGY", - 0x2a88: "ER_ERRMSG_REPLACEMENTS_FAILED", - 0x2a89: "ER_NPIPE_CANT_CREATE", - 0x2a8a: "ER_PARTITION_MOVE_CREATED_DUPLICATE_ROW_PLEASE_FIX", - 0x2a8b: "ER_AUDIT_CANT_ABORT_COMMAND", - 0x2a8c: "ER_AUDIT_CANT_ABORT_EVENT", - 0x2a8d: "ER_AUDIT_WARNING", - 0x2a8e: "ER_NDB_NUMBER_OF_CHANNELS", - 0x2a8f: "ER_NDB_SLAVE_PARALLEL_WORKERS", - 0x2a90: "ER_NDB_DISTRIBUTING_ERR", - 0x2a91: "ER_RPL_SLAVE_INSECURE_CHANGE_MASTER", - 0x2a92: "ER_RPL_SLAVE_FLUSH_RELAY_LOGS_NOT_ALLOWED", - 0x2a93: "ER_RPL_SLAVE_INCORRECT_CHANNEL", - 0x2a94: "ER_FAILED_TO_FIND_DL_ENTRY", - 0x2a95: "ER_FAILED_TO_OPEN_SHARED_LIBRARY", - 0x2a96: "ER_THREAD_PRIORITY_IGNORED", - 0x2a97: "ER_BINLOG_CACHE_SIZE_TOO_LARGE", - 0x2a98: "ER_BINLOG_STMT_CACHE_SIZE_TOO_LARGE", - 0x2a99: "ER_FAILED_TO_GENERATE_UNIQUE_LOGFILE", - 0x2a9a: "ER_FAILED_TO_READ_FILE", - 0x2a9b: "ER_FAILED_TO_WRITE_TO_FILE", - 0x2a9c: "ER_BINLOG_UNSAFE_MESSAGE_AND_STATEMENT", - 0x2a9d: "ER_FORCE_CLOSE_THREAD", - 0x2a9e: "ER_SERVER_SHUTDOWN_COMPLETE", - 0x2a9f: "ER_RPL_CANT_HAVE_SAME_BASENAME", - 0x2aa0: "ER_RPL_GTID_MODE_REQUIRES_ENFORCE_GTID_CONSISTENCY_ON", - 0x2aa1: "ER_WARN_NO_SERVERID_SPECIFIED", - 0x2aa2: "ER_ABORTING_USER_CONNECTION", - 0x2aa3: "ER_SQL_MODE_MERGED_WITH_STRICT_MODE", - 0x2aa4: "ER_GTID_PURGED_WAS_UPDATED", - 0x2aa5: "ER_GTID_EXECUTED_WAS_UPDATED", - 0x2aa6: "ER_DEPRECATE_MSG_WITH_REPLACEMENT", - 0x2aa7: "ER_TRG_CREATION_CTX_NOT_SET", - 0x2aa8: "ER_FILE_HAS_OLD_FORMAT", - 0x2aa9: "ER_VIEW_CREATION_CTX_NOT_SET", - 0x2aaa: "ER_TABLE_NAME_CAUSES_TOO_LONG_PATH", - 0x2aab: "ER_TABLE_UPGRADE_REQUIRED", - 0x2aac: "ER_GET_ERRNO_FROM_STORAGE_ENGINE", - 0x2aad: "ER_ACCESS_DENIED_ERROR_WITHOUT_PASSWORD", - 0x2aae: "ER_ACCESS_DENIED_ERROR_WITH_PASSWORD", - 0x2aaf: "ER_ACCESS_DENIED_FOR_USER_ACCOUNT_LOCKED", - 0x2ab0: "ER_MUST_CHANGE_EXPIRED_PASSWORD", - 0x2ab1: "ER_SYSTEM_TABLES_NOT_SUPPORTED_BY_STORAGE_ENGINE", - 0x2ab2: "ER_FILESORT_TERMINATED", - 0x2ab3: "ER_SERVER_STARTUP_MSG", - 0x2ab4: "ER_FAILED_TO_FIND_LOCALE_NAME", - 0x2ab5: "ER_FAILED_TO_FIND_COLLATION_NAME", - 0x2ab6: "ER_SERVER_OUT_OF_RESOURCES", - 0x2ab7: "ER_SERVER_OUTOFMEMORY", - 0x2ab8: "ER_INVALID_COLLATION_FOR_CHARSET", - 0x2ab9: "ER_CANT_START_ERROR_LOG_SERVICE", - 0x2aba: "ER_CREATING_NEW_UUID_FIRST_START", - 0x2abb: "ER_FAILED_TO_GET_ABSOLUTE_PATH", - 0x2abc: "ER_PERFSCHEMA_COMPONENTS_INFRASTRUCTURE_BOOTSTRAP", - 0x2abd: "ER_PERFSCHEMA_COMPONENTS_INFRASTRUCTURE_SHUTDOWN", - 0x2abe: "ER_DUP_FD_OPEN_FAILED", - 0x2abf: "ER_SYSTEM_VIEW_INIT_FAILED", - 0x2ac0: "ER_RESOURCE_GROUP_POST_INIT_FAILED", - 0x2ac1: "ER_RESOURCE_GROUP_SUBSYSTEM_INIT_FAILED", - 0x2ac2: "ER_FAILED_START_MYSQLD_DAEMON", - 0x2ac3: "ER_CANNOT_CHANGE_TO_ROOT_DIR", - 0x2ac4: "ER_PERSISTENT_PRIVILEGES_BOOTSTRAP", - 0x2ac5: "ER_BASEDIR_SET_TO", - 0x2ac6: "ER_RPL_FILTER_ADD_WILD_DO_TABLE_FAILED", - 0x2ac7: "ER_RPL_FILTER_ADD_WILD_IGNORE_TABLE_FAILED", - 0x2ac8: "ER_PRIVILEGE_SYSTEM_INIT_FAILED", - 0x2ac9: "ER_CANNOT_SET_LOG_ERROR_SERVICES", - 0x2aca: "ER_PERFSCHEMA_TABLES_INIT_FAILED", - 0x2acb: "ER_TX_EXTRACTION_ALGORITHM_FOR_BINLOG_TX_DEPEDENCY_TRACKING", - 0x2acc: "ER_INVALID_REPLICATION_TIMESTAMPS", - 0x2acd: "ER_RPL_TIMESTAMPS_RETURNED_TO_NORMAL", - 0x2ace: "ER_BINLOG_FILE_OPEN_FAILED", - 0x2acf: "ER_BINLOG_EVENT_WRITE_TO_STMT_CACHE_FAILED", - 0x2ad0: "ER_SLAVE_RELAY_LOG_TRUNCATE_INFO", - 0x2ad1: "ER_SLAVE_RELAY_LOG_PURGE_FAILED", - 0x2ad2: "ER_RPL_SLAVE_FILTER_CREATE_FAILED", - 0x2ad3: "ER_RPL_SLAVE_GLOBAL_FILTERS_COPY_FAILED", - 0x2ad4: "ER_RPL_SLAVE_RESET_FILTER_OPTIONS", - 0x2ad5: "ER_MISSING_GRANT_SYSTEM_TABLE", - 0x2ad6: "ER_MISSING_ACL_SYSTEM_TABLE", - 0x2ad7: "ER_ANONYMOUS_AUTH_ID_NOT_ALLOWED_IN_MANDATORY_ROLES", - 0x2ad8: "ER_UNKNOWN_AUTH_ID_IN_MANDATORY_ROLE", - 0x2ad9: "ER_WRITE_ROW_TO_PARTITION_FAILED", - 0x2ada: "ER_RESOURCE_GROUP_METADATA_UPDATE_SKIPPED", - 0x2adb: "ER_FAILED_TO_PERSIST_RESOURCE_GROUP_METADATA", - 0x2adc: "ER_FAILED_TO_DESERIALIZE_RESOURCE_GROUP", - 0x2add: "ER_FAILED_TO_UPDATE_RESOURCE_GROUP", - 0x2ade: "ER_RESOURCE_GROUP_VALIDATION_FAILED", - 0x2adf: "ER_FAILED_TO_ALLOCATE_MEMORY_FOR_RESOURCE_GROUP", - 0x2ae0: "ER_FAILED_TO_ALLOCATE_MEMORY_FOR_RESOURCE_GROUP_HASH", - 0x2ae1: "ER_FAILED_TO_ADD_RESOURCE_GROUP_TO_MAP", - 0x2ae2: "ER_RESOURCE_GROUP_IS_DISABLED", - 0x2ae3: "ER_FAILED_TO_APPLY_RESOURCE_GROUP_CONTROLLER", - 0x2ae4: "ER_FAILED_TO_ACQUIRE_LOCK_ON_RESOURCE_GROUP", - 0x2ae5: "ER_PFS_NOTIFICATION_FUNCTION_REGISTER_FAILED", - 0x2ae6: "ER_RES_GRP_SET_THR_AFFINITY_FAILED", - 0x2ae7: "ER_RES_GRP_SET_THR_AFFINITY_TO_CPUS_FAILED", - 0x2ae8: "ER_RES_GRP_THD_UNBIND_FROM_CPU_FAILED", - 0x2ae9: "ER_RES_GRP_SET_THREAD_PRIORITY_FAILED", - 0x2aea: "ER_RES_GRP_FAILED_TO_DETERMINE_NICE_CAPABILITY", - 0x2aeb: "ER_RES_GRP_FAILED_TO_GET_THREAD_HANDLE", - 0x2aec: "ER_RES_GRP_GET_THREAD_PRIO_NOT_SUPPORTED", - 0x2aed: "ER_RES_GRP_FAILED_DETERMINE_CPU_COUNT", - 0x2aee: "ER_RES_GRP_FEATURE_NOT_AVAILABLE", - 0x2aef: "ER_RES_GRP_INVALID_THREAD_PRIORITY", - 0x2af0: "ER_RES_GRP_SOLARIS_PROCESSOR_BIND_TO_CPUID_FAILED", - 0x2af1: "ER_RES_GRP_SOLARIS_PROCESSOR_BIND_TO_THREAD_FAILED", - 0x2af2: "ER_RES_GRP_SOLARIS_PROCESSOR_AFFINITY_FAILED", - 0x2af3: "ER_DD_UPGRADE_RENAME_IDX_STATS_FILE_FAILED", - 0x2af4: "ER_DD_UPGRADE_DD_OPEN_FAILED", - 0x2af5: "ER_DD_UPGRADE_FAILED_TO_FETCH_TABLESPACES", - 0x2af6: "ER_DD_UPGRADE_FAILED_TO_ACQUIRE_TABLESPACE", - 0x2af7: "ER_DD_UPGRADE_FAILED_TO_RESOLVE_TABLESPACE_ENGINE", - 0x2af8: "ER_FAILED_TO_CREATE_SDI_FOR_TABLESPACE", - 0x2af9: "ER_FAILED_TO_STORE_SDI_FOR_TABLESPACE", - 0x2afa: "ER_DD_UPGRADE_FAILED_TO_FETCH_TABLES", - 0x2afb: "ER_DD_UPGRADE_DD_POPULATED", - 0x2afc: "ER_DD_UPGRADE_INFO_FILE_OPEN_FAILED", - 0x2afd: "ER_DD_UPGRADE_INFO_FILE_CLOSE_FAILED", - 0x2afe: "ER_DD_UPGRADE_TABLESPACE_MIGRATION_FAILED", - 0x2aff: "ER_DD_UPGRADE_FAILED_TO_CREATE_TABLE_STATS", - 0x2b00: "ER_DD_UPGRADE_TABLE_STATS_MIGRATE_COMPLETED", - 0x2b01: "ER_DD_UPGRADE_FAILED_TO_CREATE_INDEX_STATS", - 0x2b02: "ER_DD_UPGRADE_INDEX_STATS_MIGRATE_COMPLETED", - 0x2b03: "ER_DD_UPGRADE_FAILED_FIND_VALID_DATA_DIR", - 0x2b04: "ER_DD_UPGRADE_START", - 0x2b05: "ER_DD_UPGRADE_FAILED_INIT_DD_SE", - 0x2b06: "ER_DD_UPGRADE_FOUND_PARTIALLY_UPGRADED_DD_ABORT", - 0x2b07: "ER_DD_UPGRADE_FOUND_PARTIALLY_UPGRADED_DD_CONTINUE", - 0x2b08: "ER_DD_UPGRADE_SE_LOGS_FAILED", - 0x2b09: "ER_DD_UPGRADE_SDI_INFO_UPDATE_FAILED", - 0x2b0a: "ER_SKIP_UPDATING_METADATA_IN_SE_RO_MODE", - 0x2b0b: "ER_CREATED_SYSTEM_WITH_VERSION", - 0x2b0c: "ER_UNKNOWN_ERROR_DETECTED_IN_SE", - 0x2b0d: "ER_READ_LOG_EVENT_FAILED", - 0x2b0e: "ER_ROW_DATA_TOO_BIG_TO_WRITE_IN_BINLOG", - 0x2b0f: "ER_FAILED_TO_CONSTRUCT_DROP_EVENT_QUERY", - 0x2b10: "ER_FAILED_TO_BINLOG_DROP_EVENT", - 0x2b11: "ER_FAILED_TO_START_SLAVE_THREAD", - 0x2b12: "ER_RPL_IO_THREAD_KILLED", - 0x2b13: "ER_SLAVE_RECONNECT_FAILED", - 0x2b14: "ER_SLAVE_KILLED_AFTER_RECONNECT", - 0x2b15: "ER_SLAVE_NOT_STARTED_ON_SOME_CHANNELS", - 0x2b16: "ER_FAILED_TO_ADD_RPL_FILTER", - 0x2b17: "ER_PER_CHANNEL_RPL_FILTER_CONF_FOR_GRP_RPL", - 0x2b18: "ER_RPL_FILTERS_NOT_ATTACHED_TO_CHANNEL", - 0x2b19: "ER_FAILED_TO_BUILD_DO_AND_IGNORE_TABLE_HASHES", - 0x2b1a: "ER_CLONE_PLUGIN_NOT_LOADED", - 0x2b1b: "ER_CLONE_HANDLER_EXISTS", - 0x2b1c: "ER_FAILED_TO_CREATE_CLONE_HANDLER", - 0x2b1d: "ER_CYCLE_TIMER_IS_NOT_AVAILABLE", - 0x2b1e: "ER_NANOSECOND_TIMER_IS_NOT_AVAILABLE", - 0x2b1f: "ER_MICROSECOND_TIMER_IS_NOT_AVAILABLE", - 0x2b20: "ER_PFS_MALLOC_ARRAY_OVERFLOW", - 0x2b21: "ER_PFS_MALLOC_ARRAY_OOM", - 0x2b22: "ER_INNODB_FAILED_TO_FIND_IDX_WITH_KEY_NO", - 0x2b23: "ER_INNODB_FAILED_TO_FIND_IDX", - 0x2b24: "ER_INNODB_FAILED_TO_FIND_IDX_FROM_DICT_CACHE", - 0x2b25: "ER_INNODB_ACTIVE_INDEX_CHANGE_FAILED", - 0x2b26: "ER_INNODB_DIFF_IN_REF_LEN", - 0x2b27: "ER_WRONG_TYPE_FOR_COLUMN_PREFIX_IDX_FLD", - 0x2b28: "ER_INNODB_CANNOT_CREATE_TABLE", - 0x2b29: "ER_INNODB_INTERNAL_INDEX", - 0x2b2a: "ER_INNODB_IDX_CNT_MORE_THAN_DEFINED_IN_MYSQL", - 0x2b2b: "ER_INNODB_IDX_CNT_FEWER_THAN_DEFINED_IN_MYSQL", - 0x2b2c: "ER_INNODB_IDX_COLUMN_CNT_DIFF", - 0x2b2d: "ER_INNODB_USE_MONITOR_GROUP_NAME", - 0x2b2e: "ER_INNODB_MONITOR_DEFAULT_VALUE_NOT_DEFINED", - 0x2b2f: "ER_INNODB_MONITOR_IS_ENABLED", - 0x2b30: "ER_INNODB_INVALID_MONITOR_COUNTER_NAME", - 0x2b31: "ER_WIN_LOAD_LIBRARY_FAILED", - 0x2b32: "ER_PARTITION_HANDLER_ADMIN_MSG", - 0x2b33: "ER_RPL_RLI_INIT_INFO_MSG", - 0x2b34: "ER_DD_UPGRADE_TABLE_INTACT_ERROR", - 0x2b35: "ER_SERVER_INIT_COMPILED_IN_COMMANDS", - 0x2b36: "ER_MYISAM_CHECK_METHOD_ERROR", - 0x2b37: "ER_MYISAM_CRASHED_ERROR", - 0x2b38: "ER_WAITPID_FAILED", - 0x2b39: "ER_FAILED_TO_FIND_MYSQLD_STATUS", - 0x2b3a: "ER_INNODB_ERROR_LOGGER_MSG", - 0x2b3b: "ER_INNODB_ERROR_LOGGER_FATAL_MSG", - 0x2b3c: "ER_DEPRECATED_SYNTAX_WITH_REPLACEMENT", - 0x2b3d: "ER_DEPRECATED_SYNTAX_NO_REPLACEMENT", - 0x2b3e: "ER_DEPRECATE_MSG_NO_REPLACEMENT", - 0x2b3f: "ER_LOG_PRINTF_MSG", - 0x2b40: "ER_BINLOG_LOGGING_NOT_POSSIBLE", - 0x2b41: "ER_FAILED_TO_SET_PERSISTED_OPTIONS", - 0x2b42: "ER_COMPONENTS_FAILED_TO_ACQUIRE_SERVICE_IMPLEMENTATION", - 0x2b43: "ER_RES_GRP_INVALID_VCPU_RANGE", - 0x2b44: "ER_RES_GRP_INVALID_VCPU_ID", - 0x2b45: "ER_ERROR_DURING_FLUSH_LOG_COMMIT_PHASE", - 0x2b46: "ER_DROP_DATABASE_FAILED_RMDIR_MANUALLY", - 0x2b47: "ER_EXPIRE_LOGS_DAYS_IGNORED", - 0x2b48: "ER_BINLOG_MALFORMED_OR_OLD_RELAY_LOG", - 0x2b49: "ER_DD_UPGRADE_VIEW_COLUMN_NAME_TOO_LONG", - 0x2b4a: "ER_TABLE_NEEDS_DUMP_UPGRADE", - 0x2b4b: "ER_DD_UPGRADE_FAILED_TO_UPDATE_VER_NO_IN_TABLESPACE", - 0x2b4c: "ER_KEYRING_MIGRATION_FAILED", - 0x2b4d: "ER_KEYRING_MIGRATION_SUCCESSFUL", - 0x2b4e: "ER_RESTART_RECEIVED_INFO", - 0x2b4f: "ER_LCTN_CHANGED", - 0x2b50: "ER_DD_INITIALIZE", - 0x2b51: "ER_DD_RESTART", - 0x2b52: "ER_DD_UPGRADE", - 0x2b53: "ER_DD_UPGRADE_OFF", - 0x2b54: "ER_DD_UPGRADE_VERSION_NOT_SUPPORTED", - 0x2b55: "ER_DD_UPGRADE_SCHEMA_UNAVAILABLE", - 0x2b56: "ER_DD_MINOR_DOWNGRADE", - 0x2b57: "ER_DD_MINOR_DOWNGRADE_VERSION_NOT_SUPPORTED", - 0x2b58: "ER_DD_NO_VERSION_FOUND", - 0x2b59: "ER_THREAD_POOL_NOT_SUPPORTED_ON_PLATFORM", - 0x2b5a: "ER_THREAD_POOL_SIZE_TOO_LOW", - 0x2b5b: "ER_THREAD_POOL_SIZE_TOO_HIGH", - 0x2b5c: "ER_THREAD_POOL_ALGORITHM_INVALID", - 0x2b5d: "ER_THREAD_POOL_INVALID_STALL_LIMIT", - 0x2b5e: "ER_THREAD_POOL_INVALID_PRIO_KICKUP_TIMER", - 0x2b5f: "ER_THREAD_POOL_MAX_UNUSED_THREADS_INVALID", - 0x2b60: "ER_THREAD_POOL_CON_HANDLER_INIT_FAILED", - 0x2b61: "ER_THREAD_POOL_INIT_FAILED", - 0x2b62: "ER_THREAD_POOL_PLUGIN_STARTED", - 0x2b63: "ER_THREAD_POOL_CANNOT_SET_THREAD_SPECIFIC_DATA", - 0x2b64: "ER_THREAD_POOL_FAILED_TO_CREATE_CONNECT_HANDLER_THD", - 0x2b65: "ER_THREAD_POOL_FAILED_TO_CREATE_THD_AND_AUTH_CONN", - 0x2b66: "ER_THREAD_POOL_FAILED_PROCESS_CONNECT_EVENT", - 0x2b67: "ER_THREAD_POOL_FAILED_TO_CREATE_POOL", - 0x2b68: "ER_THREAD_POOL_RATE_LIMITED_ERROR_MSGS", - 0x2b69: "ER_TRHEAD_POOL_LOW_LEVEL_INIT_FAILED", - 0x2b6a: "ER_THREAD_POOL_LOW_LEVEL_REARM_FAILED", - 0x2b6b: "ER_THREAD_POOL_BUFFER_TOO_SMALL", - 0x2b6c: "ER_MECAB_NOT_SUPPORTED", - 0x2b6d: "ER_MECAB_NOT_VERIFIED", - 0x2b6e: "ER_MECAB_CREATING_MODEL", - 0x2b6f: "ER_MECAB_FAILED_TO_CREATE_MODEL", - 0x2b70: "ER_MECAB_FAILED_TO_CREATE_TRIGGER", - 0x2b71: "ER_MECAB_UNSUPPORTED_CHARSET", - 0x2b72: "ER_MECAB_CHARSET_LOADED", - 0x2b73: "ER_MECAB_PARSE_FAILED", - 0x2b74: "ER_MECAB_OOM_WHILE_PARSING_TEXT", - 0x2b75: "ER_MECAB_CREATE_LATTICE_FAILED", - 0x2b76: "ER_SEMISYNC_TRACE_ENTER_FUNC", - 0x2b77: "ER_SEMISYNC_TRACE_EXIT_WITH_INT_EXIT_CODE", - 0x2b78: "ER_SEMISYNC_TRACE_EXIT_WITH_BOOL_EXIT_CODE", - 0x2b79: "ER_SEMISYNC_TRACE_EXIT", - 0x2b7a: "ER_SEMISYNC_RPL_INIT_FOR_TRX", - 0x2b7b: "ER_SEMISYNC_FAILED_TO_ALLOCATE_TRX_NODE", - 0x2b7c: "ER_SEMISYNC_BINLOG_WRITE_OUT_OF_ORDER", - 0x2b7d: "ER_SEMISYNC_INSERT_LOG_INFO_IN_ENTRY", - 0x2b7e: "ER_SEMISYNC_PROBE_LOG_INFO_IN_ENTRY", - 0x2b7f: "ER_SEMISYNC_CLEARED_ALL_ACTIVE_TRANSACTION_NODES", - 0x2b80: "ER_SEMISYNC_CLEARED_ACTIVE_TRANSACTION_TILL_POS", - 0x2b81: "ER_SEMISYNC_REPLY_MAGIC_NO_ERROR", - 0x2b82: "ER_SEMISYNC_REPLY_PKT_LENGTH_TOO_SMALL", - 0x2b83: "ER_SEMISYNC_REPLY_BINLOG_FILE_TOO_LARGE", - 0x2b84: "ER_SEMISYNC_SERVER_REPLY", - 0x2b85: "ER_SEMISYNC_FUNCTION_CALLED_TWICE", - 0x2b86: "ER_SEMISYNC_RPL_ENABLED_ON_MASTER", - 0x2b87: "ER_SEMISYNC_MASTER_OOM", - 0x2b88: "ER_SEMISYNC_DISABLED_ON_MASTER", - 0x2b89: "ER_SEMISYNC_FORCED_SHUTDOWN", - 0x2b8a: "ER_SEMISYNC_MASTER_GOT_REPLY_AT_POS", - 0x2b8b: "ER_SEMISYNC_MASTER_SIGNAL_ALL_WAITING_THREADS", - 0x2b8c: "ER_SEMISYNC_MASTER_TRX_WAIT_POS", - 0x2b8d: "ER_SEMISYNC_BINLOG_REPLY_IS_AHEAD", - 0x2b8e: "ER_SEMISYNC_MOVE_BACK_WAIT_POS", - 0x2b8f: "ER_SEMISYNC_INIT_WAIT_POS", - 0x2b90: "ER_SEMISYNC_WAIT_TIME_FOR_BINLOG_SENT", - 0x2b91: "ER_SEMISYNC_WAIT_FOR_BINLOG_TIMEDOUT", - 0x2b92: "ER_SEMISYNC_WAIT_TIME_ASSESSMENT_FOR_COMMIT_TRX_FAILED", - 0x2b93: "ER_SEMISYNC_RPL_SWITCHED_OFF", - 0x2b94: "ER_SEMISYNC_RPL_SWITCHED_ON", - 0x2b95: "ER_SEMISYNC_NO_SPACE_IN_THE_PKT", - 0x2b96: "ER_SEMISYNC_SYNC_HEADER_UPDATE_INFO", - 0x2b97: "ER_SEMISYNC_FAILED_TO_INSERT_TRX_NODE", - 0x2b98: "ER_SEMISYNC_TRX_SKIPPED_AT_POS", - 0x2b99: "ER_SEMISYNC_MASTER_FAILED_ON_NET_FLUSH", - 0x2b9a: "ER_SEMISYNC_RECEIVED_ACK_IS_SMALLER", - 0x2b9b: "ER_SEMISYNC_ADD_ACK_TO_SLOT", - 0x2b9c: "ER_SEMISYNC_UPDATE_EXISTING_SLAVE_ACK", - 0x2b9d: "ER_SEMISYNC_FAILED_TO_START_ACK_RECEIVER_THD", - 0x2b9e: "ER_SEMISYNC_STARTING_ACK_RECEIVER_THD", - 0x2b9f: "ER_SEMISYNC_FAILED_TO_WAIT_ON_DUMP_SOCKET", - 0x2ba0: "ER_SEMISYNC_STOPPING_ACK_RECEIVER_THREAD", - 0x2ba1: "ER_SEMISYNC_FAILED_REGISTER_SLAVE_TO_RECEIVER", - 0x2ba2: "ER_SEMISYNC_START_BINLOG_DUMP_TO_SLAVE", - 0x2ba3: "ER_SEMISYNC_STOP_BINLOG_DUMP_TO_SLAVE", - 0x2ba4: "ER_SEMISYNC_UNREGISTER_TRX_OBSERVER_FAILED", - 0x2ba5: "ER_SEMISYNC_UNREGISTER_BINLOG_STORAGE_OBSERVER_FAILED", - 0x2ba6: "ER_SEMISYNC_UNREGISTER_BINLOG_TRANSMIT_OBSERVER_FAILED", - 0x2ba7: "ER_SEMISYNC_UNREGISTERED_REPLICATOR", - 0x2ba8: "ER_SEMISYNC_SOCKET_FD_TOO_LARGE", - 0x2ba9: "ER_SEMISYNC_SLAVE_REPLY", - 0x2baa: "ER_SEMISYNC_MISSING_MAGIC_NO_FOR_SEMISYNC_PKT", - 0x2bab: "ER_SEMISYNC_SLAVE_START", - 0x2bac: "ER_SEMISYNC_SLAVE_REPLY_WITH_BINLOG_INFO", - 0x2bad: "ER_SEMISYNC_SLAVE_NET_FLUSH_REPLY_FAILED", - 0x2bae: "ER_SEMISYNC_SLAVE_SEND_REPLY_FAILED", - 0x2baf: "ER_SEMISYNC_EXECUTION_FAILED_ON_MASTER", - 0x2bb0: "ER_SEMISYNC_NOT_SUPPORTED_BY_MASTER", - 0x2bb1: "ER_SEMISYNC_SLAVE_SET_FAILED", - 0x2bb2: "ER_SEMISYNC_FAILED_TO_STOP_ACK_RECEIVER_THD", - 0x2bb3: "ER_FIREWALL_FAILED_TO_READ_FIREWALL_TABLES", - 0x2bb4: "ER_FIREWALL_FAILED_TO_REG_DYNAMIC_PRIVILEGES", - 0x2bb5: "ER_FIREWALL_RECORDING_STMT_WAS_TRUNCATED", - 0x2bb6: "ER_FIREWALL_RECORDING_STMT_WITHOUT_TEXT", - 0x2bb7: "ER_FIREWALL_SUSPICIOUS_STMT", - 0x2bb8: "ER_FIREWALL_ACCESS_DENIED", - 0x2bb9: "ER_FIREWALL_SKIPPED_UNKNOWN_USER_MODE", - 0x2bba: "ER_FIREWALL_RELOADING_CACHE", - 0x2bbb: "ER_FIREWALL_RESET_FOR_USER", - 0x2bbc: "ER_FIREWALL_STATUS_FLUSHED", - 0x2bbd: "ER_KEYRING_LOGGER_ERROR_MSG", - 0x2bbe: "ER_AUDIT_LOG_FILTER_IS_NOT_INSTALLED", - 0x2bbf: "ER_AUDIT_LOG_SWITCHING_TO_INCLUDE_LIST", - 0x2bc0: "ER_AUDIT_LOG_CANNOT_SET_LOG_POLICY_WITH_OTHER_POLICIES", - 0x2bc1: "ER_AUDIT_LOG_ONLY_INCLUDE_LIST_USED", - 0x2bc2: "ER_AUDIT_LOG_INDEX_MAP_CANNOT_ACCESS_DIR", - 0x2bc3: "ER_AUDIT_LOG_WRITER_RENAME_FILE_FAILED", - 0x2bc4: "ER_AUDIT_LOG_WRITER_DEST_FILE_ALREADY_EXISTS", - 0x2bc5: "ER_AUDIT_LOG_WRITER_RENAME_FILE_FAILED_REMOVE_FILE_MANUALLY", - 0x2bc6: "ER_AUDIT_LOG_WRITER_INCOMPLETE_FILE_RENAMED", - 0x2bc7: "ER_AUDIT_LOG_WRITER_FAILED_TO_WRITE_TO_FILE", - 0x2bc8: "ER_AUDIT_LOG_EC_WRITER_FAILED_TO_INIT_ENCRYPTION", - 0x2bc9: "ER_AUDIT_LOG_EC_WRITER_FAILED_TO_INIT_COMPRESSION", - 0x2bca: "ER_AUDIT_LOG_EC_WRITER_FAILED_TO_CREATE_FILE", - 0x2bcb: "ER_AUDIT_LOG_RENAME_LOG_FILE_BEFORE_FLUSH", - 0x2bcc: "ER_AUDIT_LOG_FILTER_RESULT_MSG", - 0x2bcd: "ER_AUDIT_LOG_JSON_READER_FAILED_TO_PARSE", - 0x2bce: "ER_AUDIT_LOG_JSON_READER_BUF_TOO_SMALL", - 0x2bcf: "ER_AUDIT_LOG_JSON_READER_FAILED_TO_OPEN_FILE", - 0x2bd0: "ER_AUDIT_LOG_JSON_READER_FILE_PARSING_ERROR", - 0x2bd1: "ER_AUDIT_LOG_FILTER_INVALID_COLUMN_COUNT", - 0x2bd2: "ER_AUDIT_LOG_FILTER_INVALID_COLUMN_DEFINITION", - 0x2bd3: "ER_AUDIT_LOG_FILTER_FAILED_TO_STORE_TABLE_FLDS", - 0x2bd4: "ER_AUDIT_LOG_FILTER_FAILED_TO_UPDATE_TABLE", - 0x2bd5: "ER_AUDIT_LOG_FILTER_FAILED_TO_INSERT_INTO_TABLE", - 0x2bd6: "ER_AUDIT_LOG_FILTER_FAILED_TO_DELETE_FROM_TABLE", - 0x2bd7: "ER_AUDIT_LOG_FILTER_FAILED_TO_INIT_TABLE_FOR_READ", - 0x2bd8: "ER_AUDIT_LOG_FILTER_FAILED_TO_READ_TABLE", - 0x2bd9: "ER_AUDIT_LOG_FILTER_FAILED_TO_CLOSE_TABLE_AFTER_READING", - 0x2bda: "ER_AUDIT_LOG_FILTER_USER_AND_HOST_CANNOT_BE_EMPTY", - 0x2bdb: "ER_AUDIT_LOG_FILTER_FLD_FILTERNAME_CANNOT_BE_EMPTY", - 0x2bdc: "ER_VALIDATE_PWD_DICT_FILE_NOT_SPECIFIED", - 0x2bdd: "ER_VALIDATE_PWD_DICT_FILE_NOT_LOADED", - 0x2bde: "ER_VALIDATE_PWD_DICT_FILE_TOO_BIG", - 0x2bdf: "ER_VALIDATE_PWD_FAILED_TO_READ_DICT_FILE", - 0x2be0: "ER_VALIDATE_PWD_FAILED_TO_GET_FLD_FROM_SECURITY_CTX", - 0x2be1: "ER_VALIDATE_PWD_FAILED_TO_GET_SECURITY_CTX", - 0x2be2: "ER_VALIDATE_PWD_LENGTH_CHANGED", - 0x2be3: "ER_REWRITER_QUERY_ERROR_MSG", - 0x2be4: "ER_REWRITER_QUERY_FAILED", - 0x2be5: "ER_XPLUGIN_STARTUP_FAILED", - 0x2be6: "ER_XPLUGIN_SERVER_EXITING", - 0x2be7: "ER_XPLUGIN_SERVER_EXITED", - 0x2be8: "ER_XPLUGIN_USING_SSL_CONF_FROM_SERVER", - 0x2be9: "ER_XPLUGIN_USING_SSL_CONF_FROM_MYSQLX", - 0x2bea: "ER_XPLUGIN_FAILED_TO_USE_SSL_CONF", - 0x2beb: "ER_XPLUGIN_USING_SSL_FOR_TLS_CONNECTION", - 0x2bec: "ER_XPLUGIN_REFERENCE_TO_SECURE_CONN_WITH_XPLUGIN", - 0x2bed: "ER_XPLUGIN_ERROR_MSG", - 0x2bee: "ER_SHA_PWD_FAILED_TO_PARSE_AUTH_STRING", - 0x2bef: "ER_SHA_PWD_FAILED_TO_GENERATE_MULTI_ROUND_HASH", - 0x2bf0: "ER_SHA_PWD_AUTH_REQUIRES_RSA_OR_SSL", - 0x2bf1: "ER_SHA_PWD_RSA_KEY_TOO_LONG", - 0x2bf2: "ER_PLUGIN_COMMON_FAILED_TO_OPEN_FILTER_TABLES", - 0x2bf3: "ER_PLUGIN_COMMON_FAILED_TO_OPEN_TABLE", - 0x2bf4: "ER_AUTH_LDAP_ERROR_LOGGER_ERROR_MSG", - 0x2bf5: "ER_CONN_CONTROL_ERROR_MSG", - 0x2bf6: "ER_GRP_RPL_ERROR_MSG", - 0x2bf7: "ER_SHA_PWD_SALT_FOR_USER_CORRUPT", - 0x2bf8: "ER_SYS_VAR_COMPONENT_OOM", - 0x2bf9: "ER_SYS_VAR_COMPONENT_VARIABLE_SET_READ_ONLY", - 0x2bfa: "ER_SYS_VAR_COMPONENT_UNKNOWN_VARIABLE_TYPE", - 0x2bfb: "ER_SYS_VAR_COMPONENT_FAILED_TO_PARSE_VARIABLE_OPTIONS", - 0x2bfc: "ER_SYS_VAR_COMPONENT_FAILED_TO_MAKE_VARIABLE_PERSISTENT", - 0x2bfd: "ER_COMPONENT_FILTER_CONFUSED", - 0x2bfe: "ER_STOP_SLAVE_IO_THREAD_DISK_SPACE", - 0x2bff: "ER_LOG_FILE_CANNOT_OPEN", - 0x2c04: "ER_PERSIST_OPTION_STATUS", - 0x2c05: "ER_NOT_IMPLEMENTED_GET_TABLESPACE_STATISTICS", - 0x2c08: "ER_SSL_FIPS_MODE_ERROR", - 0x2c09: "ER_CONN_INIT_CONNECT_IGNORED", - 0x2c0a: "ER_UNSUPPORTED_SQL_MODE", - 0x2c0b: "ER_REWRITER_OOM", - 0x2c0c: "ER_REWRITER_TABLE_MALFORMED_ERROR", - 0x2c0d: "ER_REWRITER_LOAD_FAILED", - 0x2c0e: "ER_REWRITER_READ_FAILED", - 0x2c0f: "ER_CONN_CONTROL_EVENT_COORDINATOR_INIT_FAILED", - 0x2c10: "ER_CONN_CONTROL_STAT_CONN_DELAY_TRIGGERED_UPDATE_FAILED", - 0x2c11: "ER_CONN_CONTROL_STAT_CONN_DELAY_TRIGGERED_RESET_FAILED", - 0x2c12: "ER_CONN_CONTROL_INVALID_CONN_DELAY_TYPE", - 0x2c13: "ER_CONN_CONTROL_DELAY_ACTION_INIT_FAILED", - 0x2c14: "ER_CONN_CONTROL_FAILED_TO_SET_CONN_DELAY", - 0x2c15: "ER_CONN_CONTROL_FAILED_TO_UPDATE_CONN_DELAY_HASH", - 0x2c16: "ER_XPLUGIN_FORCE_STOP_CLIENT", - 0x2c17: "ER_XPLUGIN_MAX_AUTH_ATTEMPTS_REACHED", - 0x2c18: "ER_XPLUGIN_BUFFER_PAGE_ALLOC_FAILED", - 0x2c19: "ER_XPLUGIN_DETECTED_HANGING_CLIENTS", - 0x2c1a: "ER_XPLUGIN_FAILED_TO_ACCEPT_CLIENT", - 0x2c1b: "ER_XPLUGIN_FAILED_TO_SCHEDULE_CLIENT", - 0x2c1c: "ER_XPLUGIN_FAILED_TO_PREPARE_IO_INTERFACES", - 0x2c1d: "ER_XPLUGIN_SRV_SESSION_INIT_THREAD_FAILED", - 0x2c1e: "ER_XPLUGIN_UNABLE_TO_USE_USER_SESSION_ACCOUNT", - 0x2c1f: "ER_XPLUGIN_REFERENCE_TO_USER_ACCOUNT_DOC_SECTION", - 0x2c20: "ER_XPLUGIN_UNEXPECTED_EXCEPTION_DISPATCHING_CMD", - 0x2c21: "ER_XPLUGIN_EXCEPTION_IN_TASK_SCHEDULER", - 0x2c22: "ER_XPLUGIN_TASK_SCHEDULING_FAILED", - 0x2c23: "ER_XPLUGIN_EXCEPTION_IN_EVENT_LOOP", - 0x2c24: "ER_XPLUGIN_LISTENER_SETUP_FAILED", - 0x2c25: "ER_XPLUING_NET_STARTUP_FAILED", - 0x2c26: "ER_XPLUGIN_FAILED_AT_SSL_CONF", - 0x2c27: "ER_XPLUGIN_CLIENT_SSL_HANDSHAKE_FAILED", - 0x2c28: "ER_XPLUGIN_SSL_HANDSHAKE_WITH_SERVER_FAILED", - 0x2c29: "ER_XPLUGIN_FAILED_TO_CREATE_SESSION_FOR_CONN", - 0x2c2a: "ER_XPLUGIN_FAILED_TO_INITIALIZE_SESSION", - 0x2c2b: "ER_XPLUGIN_MESSAGE_TOO_LONG", - 0x2c2c: "ER_XPLUGIN_UNINITIALIZED_MESSAGE", - 0x2c2d: "ER_XPLUGIN_FAILED_TO_SET_MIN_NUMBER_OF_WORKERS", - 0x2c2e: "ER_XPLUGIN_UNABLE_TO_ACCEPT_CONNECTION", - 0x2c2f: "ER_XPLUGIN_ALL_IO_INTERFACES_DISABLED", - 0x2c30: "ER_XPLUGIN_INVALID_MSG_DURING_CLIENT_INIT", - 0x2c31: "ER_XPLUGIN_CLOSING_CLIENTS_ON_SHUTDOWN", - 0x2c32: "ER_XPLUGIN_ERROR_READING_SOCKET", - 0x2c33: "ER_XPLUGIN_PEER_DISCONNECTED_WHILE_READING_MSG_BODY", - 0x2c34: "ER_XPLUGIN_READ_FAILED_CLOSING_CONNECTION", - 0x2c35: "ER_XPLUGIN_INVALID_AUTH_METHOD", - 0x2c36: "ER_XPLUGIN_UNEXPECTED_MSG_DURING_AUTHENTICATION", - 0x2c37: "ER_XPLUGIN_ERROR_WRITING_TO_CLIENT", - 0x2c38: "ER_XPLUGIN_SCHEDULER_STARTED", - 0x2c39: "ER_XPLUGIN_SCHEDULER_STOPPED", - 0x2c3a: "ER_XPLUGIN_LISTENER_SYS_VARIABLE_ERROR", - 0x2c3b: "ER_XPLUGIN_LISTENER_STATUS_MSG", - 0x2c3c: "ER_XPLUGIN_RETRYING_BIND_ON_PORT", - 0x2c3d: "ER_XPLUGIN_SHUTDOWN_TRIGGERED", - 0x2c3e: "ER_XPLUGIN_USER_ACCOUNT_WITH_ALL_PERMISSIONS", - 0x2c3f: "ER_XPLUGIN_EXISTING_USER_ACCOUNT_WITH_INCOMPLETE_GRANTS", - 0x2c40: "ER_XPLUGIN_SERVER_STARTS_HANDLING_CONNECTIONS", - 0x2c41: "ER_XPLUGIN_SERVER_STOPPED_HANDLING_CONNECTIONS", - 0x2c42: "ER_XPLUGIN_FAILED_TO_INTERRUPT_SESSION", - 0x2c43: "ER_XPLUGIN_CLIENT_RELEASE_TRIGGERED", - 0x2c44: "ER_XPLUGIN_IPv6_AVAILABLE", - 0x2c45: "ER_XPLUGIN_UNIX_SOCKET_NOT_CONFIGURED", - 0x2c46: "ER_XPLUGIN_CLIENT_KILL_MSG", - 0x2c47: "ER_XPLUGIN_FAILED_TO_GET_SECURITY_CTX", - 0x2c48: "ER_XPLUGIN_FAILED_TO_SWITCH_SECURITY_CTX_TO_ROOT", - 0x2c49: "ER_XPLUGIN_FAILED_TO_CLOSE_SQL_SESSION", - 0x2c4a: "ER_XPLUGIN_FAILED_TO_EXECUTE_ADMIN_CMD", - 0x2c4b: "ER_XPLUGIN_EMPTY_ADMIN_CMD", - 0x2c4c: "ER_XPLUGIN_FAILED_TO_GET_SYS_VAR", - 0x2c4d: "ER_XPLUGIN_FAILED_TO_GET_CREATION_STMT", - 0x2c4e: "ER_XPLUGIN_FAILED_TO_GET_ENGINE_INFO", - 0x2c4f: "ER_XPLUGIN_FAIL_TO_GET_RESULT_DATA", - 0x2c50: "ER_XPLUGIN_CAPABILITY_EXPIRED_PASSWORD", - 0x2c51: "ER_XPLUGIN_FAILED_TO_SET_SO_REUSEADDR_FLAG", - 0x2c52: "ER_XPLUGIN_FAILED_TO_OPEN_INTERNAL_SESSION", - 0x2c53: "ER_XPLUGIN_FAILED_TO_SWITCH_CONTEXT", - 0x2c54: "ER_XPLUGIN_FAILED_TO_UNREGISTER_UDF", - 0x2c55: "ER_XPLUGIN_GET_PEER_ADDRESS_FAILED", - 0x2c56: "ER_XPLUGIN_CAPABILITY_CLIENT_INTERACTIVE_FAILED", - 0x2c57: "ER_XPLUGIN_FAILED_TO_RESET_IPV6_V6ONLY_FLAG", - 0x2c58: "ER_KEYRING_INVALID_KEY_TYPE", - 0x2c59: "ER_KEYRING_INVALID_KEY_LENGTH", - 0x2c5a: "ER_KEYRING_FAILED_TO_CREATE_KEYRING_DIR", - 0x2c5b: "ER_KEYRING_FILE_INIT_FAILED", - 0x2c5c: "ER_KEYRING_INTERNAL_EXCEPTION_FAILED_FILE_INIT", - 0x2c5d: "ER_KEYRING_FAILED_TO_GENERATE_KEY", - 0x2c5e: "ER_KEYRING_CHECK_KEY_FAILED_DUE_TO_INVALID_KEY", - 0x2c5f: "ER_KEYRING_CHECK_KEY_FAILED_DUE_TO_EMPTY_KEY_ID", - 0x2c60: "ER_KEYRING_OPERATION_FAILED_DUE_TO_INTERNAL_ERROR", - 0x2c61: "ER_KEYRING_INCORRECT_FILE", - 0x2c62: "ER_KEYRING_FOUND_MALFORMED_BACKUP_FILE", - 0x2c63: "ER_KEYRING_FAILED_TO_RESTORE_FROM_BACKUP_FILE", - 0x2c64: "ER_KEYRING_FAILED_TO_FLUSH_KEYRING_TO_FILE", - 0x2c65: "ER_KEYRING_FAILED_TO_GET_FILE_STAT", - 0x2c66: "ER_KEYRING_FAILED_TO_REMOVE_FILE", - 0x2c67: "ER_KEYRING_FAILED_TO_TRUNCATE_FILE", - 0x2c68: "ER_KEYRING_UNKNOWN_ERROR", - 0x2c69: "ER_KEYRING_FAILED_TO_SET_KEYRING_FILE_DATA", - 0x2c6a: "ER_KEYRING_FILE_IO_ERROR", - 0x2c6b: "ER_KEYRING_FAILED_TO_LOAD_KEYRING_CONTENT", - 0x2c6c: "ER_KEYRING_FAILED_TO_FLUSH_KEYS_TO_KEYRING", - 0x2c6d: "ER_KEYRING_FAILED_TO_FLUSH_KEYS_TO_KEYRING_BACKUP", - 0x2c6e: "ER_KEYRING_KEY_FETCH_FAILED_DUE_TO_EMPTY_KEY_ID", - 0x2c6f: "ER_KEYRING_FAILED_TO_REMOVE_KEY_DUE_TO_EMPTY_ID", - 0x2c70: "ER_KEYRING_OKV_INCORRECT_KEY_VAULT_CONFIGURED", - 0x2c71: "ER_KEYRING_OKV_INIT_FAILED_DUE_TO_INCORRECT_CONF", - 0x2c72: "ER_KEYRING_OKV_INIT_FAILED_DUE_TO_INTERNAL_ERROR", - 0x2c73: "ER_KEYRING_OKV_INVALID_KEY_TYPE", - 0x2c74: "ER_KEYRING_OKV_INVALID_KEY_LENGTH_FOR_CIPHER", - 0x2c75: "ER_KEYRING_OKV_FAILED_TO_GENERATE_KEY_DUE_TO_INTERNAL_ERROR", - 0x2c76: "ER_KEYRING_OKV_FAILED_TO_FIND_SERVER_ENTRY", - 0x2c77: "ER_KEYRING_OKV_FAILED_TO_FIND_STANDBY_SERVER_ENTRY", - 0x2c78: "ER_KEYRING_OKV_FAILED_TO_PARSE_CONF_FILE", - 0x2c79: "ER_KEYRING_OKV_FAILED_TO_LOAD_KEY_UID", - 0x2c7a: "ER_KEYRING_OKV_FAILED_TO_INIT_SSL_LAYER", - 0x2c7b: "ER_KEYRING_OKV_FAILED_TO_INIT_CLIENT", - 0x2c7c: "ER_KEYRING_OKV_CONNECTION_TO_SERVER_FAILED", - 0x2c7d: "ER_KEYRING_OKV_FAILED_TO_REMOVE_KEY", - 0x2c7e: "ER_KEYRING_OKV_FAILED_TO_ADD_ATTRIBUTE", - 0x2c7f: "ER_KEYRING_OKV_FAILED_TO_GENERATE_KEY", - 0x2c80: "ER_KEYRING_OKV_FAILED_TO_STORE_KEY", - 0x2c81: "ER_KEYRING_OKV_FAILED_TO_ACTIVATE_KEYS", - 0x2c82: "ER_KEYRING_OKV_FAILED_TO_FETCH_KEY", - 0x2c83: "ER_KEYRING_OKV_FAILED_TO_STORE_OR_GENERATE_KEY", - 0x2c84: "ER_KEYRING_OKV_FAILED_TO_RETRIEVE_KEY_SIGNATURE", - 0x2c85: "ER_KEYRING_OKV_FAILED_TO_RETRIEVE_KEY", - 0x2c86: "ER_KEYRING_OKV_FAILED_TO_LOAD_SSL_TRUST_STORE", - 0x2c87: "ER_KEYRING_OKV_FAILED_TO_SET_CERTIFICATE_FILE", - 0x2c88: "ER_KEYRING_OKV_FAILED_TO_SET_KEY_FILE", - 0x2c89: "ER_KEYRING_OKV_KEY_MISMATCH", - 0x2c8a: "ER_KEYRING_ENCRYPTED_FILE_INCORRECT_KEYRING_FILE", - 0x2c8b: "ER_KEYRING_ENCRYPTED_FILE_DECRYPTION_FAILED", - 0x2c8c: "ER_KEYRING_ENCRYPTED_FILE_FOUND_MALFORMED_BACKUP_FILE", - 0x2c8d: "ER_KEYRING_ENCRYPTED_FILE_FAILED_TO_RESTORE_KEYRING", - 0x2c8e: "ER_KEYRING_ENCRYPTED_FILE_FAILED_TO_FLUSH_KEYRING", - 0x2c8f: "ER_KEYRING_ENCRYPTED_FILE_ENCRYPTION_FAILED", - 0x2c90: "ER_KEYRING_ENCRYPTED_FILE_INVALID_KEYRING_DIR", - 0x2c91: "ER_KEYRING_ENCRYPTED_FILE_FAILED_TO_CREATE_KEYRING_DIR", - 0x2c92: "ER_KEYRING_ENCRYPTED_FILE_PASSWORD_IS_INVALID", - 0x2c93: "ER_KEYRING_ENCRYPTED_FILE_PASSWORD_IS_TOO_LONG", - 0x2c94: "ER_KEYRING_ENCRYPTED_FILE_INIT_FAILURE", - 0x2c95: "ER_KEYRING_ENCRYPTED_FILE_INIT_FAILED_DUE_TO_INTERNAL_ERROR", - 0x2c96: "ER_KEYRING_ENCRYPTED_FILE_GEN_KEY_FAILED_DUE_TO_INTERNAL_ERROR", - 0x2c97: "ER_KEYRING_AWS_FAILED_TO_SET_CMK_ID", - 0x2c98: "ER_KEYRING_AWS_FAILED_TO_SET_REGION", - 0x2c99: "ER_KEYRING_AWS_FAILED_TO_OPEN_CONF_FILE", - 0x2c9a: "ER_KEYRING_AWS_FAILED_TO_ACCESS_KEY_ID_FROM_CONF_FILE", - 0x2c9b: "ER_KEYRING_AWS_FAILED_TO_ACCESS_KEY_FROM_CONF_FILE", - 0x2c9c: "ER_KEYRING_AWS_INVALID_CONF_FILE_PATH", - 0x2c9d: "ER_KEYRING_AWS_INVALID_DATA_FILE_PATH", - 0x2c9e: "ER_KEYRING_AWS_FAILED_TO_ACCESS_OR_CREATE_KEYRING_DIR", - 0x2c9f: "ER_KEYRING_AWS_FAILED_TO_ACCESS_OR_CREATE_KEYRING_DATA_FILE", - 0x2ca0: "ER_KEYRING_AWS_FAILED_TO_INIT_DUE_TO_INTERNAL_ERROR", - 0x2ca1: "ER_KEYRING_AWS_FAILED_TO_ACCESS_DATA_FILE", - 0x2ca2: "ER_KEYRING_AWS_CMK_ID_NOT_SET", - 0x2ca3: "ER_KEYRING_AWS_FAILED_TO_GET_KMS_CREDENTIAL_FROM_CONF_FILE", - 0x2ca4: "ER_KEYRING_AWS_INIT_FAILURE", - 0x2ca5: "ER_KEYRING_AWS_FAILED_TO_INIT_DUE_TO_PLUGIN_INTERNAL_ERROR", - 0x2ca6: "ER_KEYRING_AWS_INVALID_KEY_LENGTH_FOR_CIPHER", - 0x2ca7: "ER_KEYRING_AWS_FAILED_TO_GENERATE_KEY_DUE_TO_INTERNAL_ERROR", - 0x2ca8: "ER_KEYRING_AWS_INCORRECT_FILE", - 0x2ca9: "ER_KEYRING_AWS_FOUND_MALFORMED_BACKUP_FILE", - 0x2caa: "ER_KEYRING_AWS_FAILED_TO_RESTORE_FROM_BACKUP_FILE", - 0x2cab: "ER_KEYRING_AWS_FAILED_TO_FLUSH_KEYRING_TO_FILE", - 0x2cac: "ER_KEYRING_AWS_INCORRECT_REGION", - 0x2cad: "ER_KEYRING_AWS_FAILED_TO_CONNECT_KMS", - 0x2cae: "ER_KEYRING_AWS_FAILED_TO_GENERATE_NEW_KEY", - 0x2caf: "ER_KEYRING_AWS_FAILED_TO_ENCRYPT_KEY", - 0x2cb0: "ER_KEYRING_AWS_FAILED_TO_RE_ENCRYPT_KEY", - 0x2cb1: "ER_KEYRING_AWS_FAILED_TO_DECRYPT_KEY", - 0x2cb2: "ER_KEYRING_AWS_FAILED_TO_ROTATE_CMK", - 0x2cb3: "ER_GRP_RPL_GTID_ALREADY_USED", - 0x2cb4: "ER_GRP_RPL_APPLIER_THD_KILLED", - 0x2cb5: "ER_GRP_RPL_EVENT_HANDLING_ERROR", - 0x2cb6: "ER_GRP_RPL_ERROR_GTID_EXECUTION_INFO", - 0x2cb7: "ER_GRP_RPL_CERTIFICATE_SIZE_ERROR", - 0x2cb8: "ER_GRP_RPL_CREATE_APPLIER_CACHE_ERROR", - 0x2cb9: "ER_GRP_RPL_UNBLOCK_WAITING_THD", - 0x2cba: "ER_GRP_RPL_APPLIER_PIPELINE_NOT_DISPOSED", - 0x2cbb: "ER_GRP_RPL_APPLIER_THD_EXECUTION_ABORTED", - 0x2cbc: "ER_GRP_RPL_APPLIER_EXECUTION_FATAL_ERROR", - 0x2cbd: "ER_GRP_RPL_ERROR_STOPPING_CHANNELS", - 0x2cbe: "ER_GRP_RPL_ERROR_SENDING_SINGLE_PRIMARY_MSSG", - 0x2cbf: "ER_GRP_RPL_UPDATE_TRANS_SNAPSHOT_VER_ERROR", - 0x2cc0: "ER_GRP_RPL_SIDNO_FETCH_ERROR", - 0x2cc1: "ER_GRP_RPL_BROADCAST_COMMIT_TRANS_MSSG_FAILED", - 0x2cc2: "ER_GRP_RPL_GROUP_NAME_PARSE_ERROR", - 0x2cc3: "ER_GRP_RPL_ADD_GRPSID_TO_GRPGTIDSID_MAP_ERROR", - 0x2cc4: "ER_GRP_RPL_UPDATE_GRPGTID_EXECUTED_ERROR", - 0x2cc5: "ER_GRP_RPL_DONOR_TRANS_INFO_ERROR", - 0x2cc6: "ER_GRP_RPL_SERVER_CONN_ERROR", - 0x2cc7: "ER_GRP_RPL_ERROR_FETCHING_GTID_EXECUTED_SET", - 0x2cc8: "ER_GRP_RPL_ADD_GTID_TO_GRPGTID_EXECUTED_ERROR", - 0x2cc9: "ER_GRP_RPL_ERROR_FETCHING_GTID_SET", - 0x2cca: "ER_GRP_RPL_ADD_RETRIEVED_SET_TO_GRP_GTID_EXECUTED_ERROR", - 0x2ccb: "ER_GRP_RPL_CERTIFICATION_INITIALIZATION_FAILURE", - 0x2ccc: "ER_GRP_RPL_UPDATE_LAST_CONFLICT_FREE_TRANS_ERROR", - 0x2ccd: "ER_GRP_RPL_UPDATE_TRANS_SNAPSHOT_REF_VER_ERROR", - 0x2cce: "ER_GRP_RPL_FETCH_TRANS_SIDNO_ERROR", - 0x2ccf: "ER_GRP_RPL_ERROR_VERIFYING_SIDNO", - 0x2cd0: "ER_GRP_RPL_CANT_GENERATE_GTID", - 0x2cd1: "ER_GRP_RPL_INVALID_GTID_SET", - 0x2cd2: "ER_GRP_RPL_UPDATE_GTID_SET_ERROR", - 0x2cd3: "ER_GRP_RPL_RECEIVED_SET_MISSING_GTIDS", - 0x2cd4: "ER_GRP_RPL_SKIP_COMPUTATION_TRANS_COMMITTED", - 0x2cd5: "ER_GRP_RPL_NULL_PACKET", - 0x2cd6: "ER_GRP_RPL_CANT_READ_GTID", - 0x2cd7: "ER_GRP_RPL_PROCESS_GTID_SET_ERROR", - 0x2cd8: "ER_GRP_RPL_PROCESS_INTERSECTION_GTID_SET_ERROR", - 0x2cd9: "ER_GRP_RPL_SET_STABLE_TRANS_ERROR", - 0x2cda: "ER_GRP_RPL_CANT_READ_GRP_GTID_EXTRACTED", - 0x2cdb: "ER_GRP_RPL_CANT_READ_WRITE_SET_ITEM", - 0x2cdc: "ER_GRP_RPL_INIT_CERTIFICATION_INFO_FAILURE", - 0x2cdd: "ER_GRP_RPL_CONFLICT_DETECTION_DISABLED", - 0x2cde: "ER_GRP_RPL_MSG_DISCARDED", - 0x2cdf: "ER_GRP_RPL_MISSING_GRP_RPL_APPLIER", - 0x2ce0: "ER_GRP_RPL_CERTIFIER_MSSG_PROCESS_ERROR", - 0x2ce1: "ER_GRP_RPL_SRV_NOT_ONLINE", - 0x2ce2: "ER_GRP_RPL_SRV_ONLINE", - 0x2ce3: "ER_GRP_RPL_DISABLE_SRV_READ_MODE_RESTRICTED", - 0x2ce4: "ER_GRP_RPL_MEM_ONLINE", - 0x2ce5: "ER_GRP_RPL_MEM_UNREACHABLE", - 0x2ce6: "ER_GRP_RPL_MEM_REACHABLE", - 0x2ce7: "ER_GRP_RPL_SRV_BLOCKED", - 0x2ce8: "ER_GRP_RPL_SRV_BLOCKED_FOR_SECS", - 0x2ce9: "ER_GRP_RPL_CHANGE_GRP_MEM_NOT_PROCESSED", - 0x2cea: "ER_GRP_RPL_MEMBER_CONTACT_RESTORED", - 0x2ceb: "ER_GRP_RPL_MEMBER_REMOVED", - 0x2cec: "ER_GRP_RPL_PRIMARY_MEMBER_LEFT_GRP", - 0x2ced: "ER_GRP_RPL_MEMBER_ADDED", - 0x2cee: "ER_GRP_RPL_MEMBER_EXIT_PLUGIN_ERROR", - 0x2cef: "ER_GRP_RPL_MEMBER_CHANGE", - 0x2cf0: "ER_GRP_RPL_MEMBER_LEFT_GRP", - 0x2cf1: "ER_GRP_RPL_MEMBER_EXPELLED", - 0x2cf2: "ER_GRP_RPL_SESSION_OPEN_FAILED", - 0x2cf3: "ER_GRP_RPL_NEW_PRIMARY_ELECTED", - 0x2cf4: "ER_GRP_RPL_DISABLE_READ_ONLY_FAILED", - 0x2cf5: "ER_GRP_RPL_ENABLE_READ_ONLY_FAILED", - 0x2cf6: "ER_GRP_RPL_SRV_PRIMARY_MEM", - 0x2cf7: "ER_GRP_RPL_SRV_SECONDARY_MEM", - 0x2cf8: "ER_GRP_RPL_NO_SUITABLE_PRIMARY_MEM", - 0x2cf9: "ER_GRP_RPL_SUPER_READ_ONLY_ACTIVATE_ERROR", - 0x2cfa: "ER_GRP_RPL_EXCEEDS_AUTO_INC_VALUE", - 0x2cfb: "ER_GRP_RPL_DATA_NOT_PROVIDED_BY_MEM", - 0x2cfc: "ER_GRP_RPL_MEMBER_ALREADY_EXISTS", - 0x2cfd: "ER_GRP_RPL_GRP_CHANGE_INFO_EXTRACT_ERROR", - 0x2cfe: "ER_GRP_RPL_GTID_EXECUTED_EXTRACT_ERROR", - 0x2cff: "ER_GRP_RPL_GTID_SET_EXTRACT_ERROR", - 0x2d00: "ER_GRP_RPL_START_FAILED", - 0x2d01: "ER_GRP_RPL_MEMBER_VER_INCOMPATIBLE", - 0x2d02: "ER_GRP_RPL_TRANS_NOT_PRESENT_IN_GRP", - 0x2d03: "ER_GRP_RPL_TRANS_GREATER_THAN_GRP", - 0x2d04: "ER_GRP_RPL_MEMBER_VERSION_LOWER_THAN_GRP", - 0x2d05: "ER_GRP_RPL_LOCAL_GTID_SETS_PROCESS_ERROR", - 0x2d06: "ER_GRP_RPL_MEMBER_TRANS_GREATER_THAN_GRP", - 0x2d07: "ER_GRP_RPL_BLOCK_SIZE_DIFF_FROM_GRP", - 0x2d08: "ER_GRP_RPL_TRANS_WRITE_SET_EXTRACT_DIFF_FROM_GRP", - 0x2d09: "ER_GRP_RPL_MEMBER_CFG_INCOMPATIBLE_WITH_GRP_CFG", - 0x2d0a: "ER_GRP_RPL_MEMBER_STOP_RPL_CHANNELS_ERROR", - 0x2d0b: "ER_GRP_RPL_PURGE_APPLIER_LOGS", - 0x2d0c: "ER_GRP_RPL_RESET_APPLIER_MODULE_LOGS_ERROR", - 0x2d0d: "ER_GRP_RPL_APPLIER_THD_SETUP_ERROR", - 0x2d0e: "ER_GRP_RPL_APPLIER_THD_START_ERROR", - 0x2d0f: "ER_GRP_RPL_APPLIER_THD_STOP_ERROR", - 0x2d10: "ER_GRP_RPL_FETCH_TRANS_DATA_FAILED", - 0x2d11: "ER_GRP_RPL_SLAVE_IO_THD_PRIMARY_UNKNOWN", - 0x2d12: "ER_GRP_RPL_SALVE_IO_THD_ON_SECONDARY_MEMBER", - 0x2d13: "ER_GRP_RPL_SLAVE_SQL_THD_PRIMARY_UNKNOWN", - 0x2d14: "ER_GRP_RPL_SLAVE_SQL_THD_ON_SECONDARY_MEMBER", - 0x2d15: "ER_GRP_RPL_NEEDS_INNODB_TABLE", - 0x2d16: "ER_GRP_RPL_PRIMARY_KEY_NOT_DEFINED", - 0x2d17: "ER_GRP_RPL_FK_WITH_CASCADE_UNSUPPORTED", - 0x2d18: "ER_GRP_RPL_AUTO_INC_RESET", - 0x2d19: "ER_GRP_RPL_AUTO_INC_OFFSET_RESET", - 0x2d1a: "ER_GRP_RPL_AUTO_INC_SET", - 0x2d1b: "ER_GRP_RPL_AUTO_INC_OFFSET_SET", - 0x2d1c: "ER_GRP_RPL_FETCH_TRANS_CONTEXT_FAILED", - 0x2d1d: "ER_GRP_RPL_FETCH_FORMAT_DESC_LOG_EVENT_FAILED", - 0x2d1e: "ER_GRP_RPL_FETCH_TRANS_CONTEXT_LOG_EVENT_FAILED", - 0x2d1f: "ER_GRP_RPL_FETCH_SNAPSHOT_VERSION_FAILED", - 0x2d20: "ER_GRP_RPL_FETCH_GTID_LOG_EVENT_FAILED", - 0x2d21: "ER_GRP_RPL_UPDATE_SERV_CERTIFICATE_FAILED", - 0x2d22: "ER_GRP_RPL_ADD_GTID_INFO_WITH_LOCAL_GTID_FAILED", - 0x2d23: "ER_GRP_RPL_ADD_GTID_INFO_WITHOUT_LOCAL_GTID_FAILED", - 0x2d24: "ER_GRP_RPL_NOTIFY_CERTIFICATION_OUTCOME_FAILED", - 0x2d25: "ER_GRP_RPL_ADD_GTID_INFO_WITH_REMOTE_GTID_FAILED", - 0x2d26: "ER_GRP_RPL_ADD_GTID_INFO_WITHOUT_REMOTE_GTID_FAILED", - 0x2d27: "ER_GRP_RPL_FETCH_VIEW_CHANGE_LOG_EVENT_FAILED", - 0x2d28: "ER_GRP_RPL_CONTACT_WITH_SRV_FAILED", - 0x2d29: "ER_GRP_RPL_SRV_WAIT_TIME_OUT", - 0x2d2a: "ER_GRP_RPL_FETCH_LOG_EVENT_FAILED", - 0x2d2b: "ER_GRP_RPL_START_GRP_RPL_FAILED", - 0x2d2c: "ER_GRP_RPL_CONN_INTERNAL_PLUGIN_FAIL", - 0x2d2d: "ER_GRP_RPL_SUPER_READ_ON", - 0x2d2e: "ER_GRP_RPL_SUPER_READ_OFF", - 0x2d2f: "ER_GRP_RPL_KILLED_SESSION_ID", - 0x2d30: "ER_GRP_RPL_KILLED_FAILED_ID", - 0x2d31: "ER_GRP_RPL_INTERNAL_QUERY", - 0x2d32: "ER_GRP_RPL_COPY_FROM_EMPTY_STRING", - 0x2d33: "ER_GRP_RPL_QUERY_FAIL", - 0x2d34: "ER_GRP_RPL_CREATE_SESSION_UNABLE", - 0x2d35: "ER_GRP_RPL_MEMBER_NOT_FOUND", - 0x2d36: "ER_GRP_RPL_MAXIMUM_CONNECTION_RETRIES_REACHED", - 0x2d37: "ER_GRP_RPL_ALL_DONORS_LEFT_ABORT_RECOVERY", - 0x2d38: "ER_GRP_RPL_ESTABLISH_RECOVERY_WITH_DONOR", - 0x2d39: "ER_GRP_RPL_ESTABLISH_RECOVERY_WITH_ANOTHER_DONOR", - 0x2d3a: "ER_GRP_RPL_NO_VALID_DONOR", - 0x2d3b: "ER_GRP_RPL_CONFIG_RECOVERY", - 0x2d3c: "ER_GRP_RPL_ESTABLISHING_CONN_GRP_REC_DONOR", - 0x2d3d: "ER_GRP_RPL_CREATE_GRP_RPL_REC_CHANNEL", - 0x2d3e: "ER_GRP_RPL_DONOR_SERVER_CONN", - 0x2d3f: "ER_GRP_RPL_CHECK_STATUS_TABLE", - 0x2d40: "ER_GRP_RPL_STARTING_GRP_REC", - 0x2d41: "ER_GRP_RPL_DONOR_CONN_TERMINATION", - 0x2d42: "ER_GRP_RPL_STOPPING_GRP_REC", - 0x2d43: "ER_GRP_RPL_PURGE_REC", - 0x2d44: "ER_GRP_RPL_UNABLE_TO_KILL_CONN_REC_DONOR_APPLIER", - 0x2d45: "ER_GRP_RPL_UNABLE_TO_KILL_CONN_REC_DONOR_FAILOVER", - 0x2d46: "ER_GRP_RPL_FAILED_TO_NOTIFY_GRP_MEMBERSHIP_EVENT", - 0x2d47: "ER_GRP_RPL_FAILED_TO_BROADCAST_GRP_MEMBERSHIP_NOTIFICATION", - 0x2d48: "ER_GRP_RPL_FAILED_TO_BROADCAST_MEMBER_STATUS_NOTIFICATION", - 0x2d49: "ER_GRP_RPL_OOM_FAILED_TO_GENERATE_IDENTIFICATION_HASH", - 0x2d4a: "ER_GRP_RPL_WRITE_IDENT_HASH_BASE64_ENCODING_FAILED", - 0x2d4b: "ER_GRP_RPL_INVALID_BINLOG_FORMAT", - 0x2d4c: "ER_GRP_RPL_BINLOG_CHECKSUM_SET", - 0x2d4d: "ER_GRP_RPL_TRANS_WRITE_SET_EXTRACTION_NOT_SET", - 0x2d4e: "ER_GRP_RPL_UNSUPPORTED_TRANS_ISOLATION", - 0x2d4f: "ER_GRP_RPL_CANNOT_EXECUTE_TRANS_WHILE_STOPPING", - 0x2d50: "ER_GRP_RPL_CANNOT_EXECUTE_TRANS_WHILE_RECOVERING", - 0x2d51: "ER_GRP_RPL_CANNOT_EXECUTE_TRANS_IN_ERROR_STATE", - 0x2d52: "ER_GRP_RPL_CANNOT_EXECUTE_TRANS_IN_OFFLINE_MODE", - 0x2d53: "ER_GRP_RPL_MULTIPLE_CACHE_TYPE_NOT_SUPPORTED_FOR_SESSION", - 0x2d54: "ER_GRP_RPL_FAILED_TO_REINIT_BINLOG_CACHE_FOR_READ", - 0x2d55: "ER_GRP_RPL_FAILED_TO_CREATE_TRANS_CONTEXT", - 0x2d56: "ER_GRP_RPL_FAILED_TO_EXTRACT_TRANS_WRITE_SET", - 0x2d57: "ER_GRP_RPL_FAILED_TO_GATHER_TRANS_WRITE_SET", - 0x2d58: "ER_GRP_RPL_TRANS_SIZE_EXCEEDS_LIMIT", - 0x2d59: "ER_GRP_RPL_REINIT_OF_INTERNAL_CACHE_FOR_READ_FAILED", - 0x2d5a: "ER_GRP_RPL_APPENDING_DATA_TO_INTERNAL_CACHE_FAILED", - 0x2d5b: "ER_GRP_RPL_WRITE_TO_BINLOG_CACHE_FAILED", - 0x2d5c: "ER_GRP_RPL_FAILED_TO_REGISTER_TRANS_OUTCOME_NOTIFICTION", - 0x2d5d: "ER_GRP_RPL_MSG_TOO_LONG_BROADCASTING_TRANS_FAILED", - 0x2d5e: "ER_GRP_RPL_BROADCASTING_TRANS_TO_GRP_FAILED", - 0x2d5f: "ER_GRP_RPL_ERROR_WHILE_WAITING_FOR_CONFLICT_DETECTION", - 0x2d60: "ER_GRP_RPL_REINIT_OF_INTERNAL_CACHE_FOR_WRITE_FAILED", - 0x2d61: "ER_GRP_RPL_FAILED_TO_CREATE_COMMIT_CACHE", - 0x2d62: "ER_GRP_RPL_REINIT_OF_COMMIT_CACHE_FOR_WRITE_FAILED", - 0x2d63: "ER_GRP_RPL_PREV_REC_SESSION_RUNNING", - 0x2d64: "ER_GRP_RPL_FATAL_REC_PROCESS", - 0x2d65: "ER_GRP_RPL_WHILE_STOPPING_REP_CHANNEL", - 0x2d66: "ER_GRP_RPL_UNABLE_TO_EVALUATE_APPLIER_STATUS", - 0x2d67: "ER_GRP_RPL_ONLY_ONE_SERVER_ALIVE", - 0x2d68: "ER_GRP_RPL_CERTIFICATION_REC_PROCESS", - 0x2d69: "ER_GRP_RPL_UNABLE_TO_ENSURE_EXECUTION_REC", - 0x2d6a: "ER_GRP_RPL_WHILE_SENDING_MSG_REC", - 0x2d6b: "ER_GRP_RPL_READ_UNABLE_FOR_SUPER_READ_ONLY", - 0x2d6c: "ER_GRP_RPL_READ_UNABLE_FOR_READ_ONLY_SUPER_READ_ONLY", - 0x2d6d: "ER_GRP_RPL_UNABLE_TO_RESET_SERVER_READ_MODE", - 0x2d6e: "ER_GRP_RPL_UNABLE_TO_CERTIFY_PLUGIN_TRANS", - 0x2d6f: "ER_GRP_RPL_UNBLOCK_CERTIFIED_TRANS", - 0x2d70: "ER_GRP_RPL_SERVER_WORKING_AS_SECONDARY", - 0x2d71: "ER_GRP_RPL_FAILED_TO_START_WITH_INVALID_SERVER_ID", - 0x2d72: "ER_GRP_RPL_FORCE_MEMBERS_MUST_BE_EMPTY", - 0x2d73: "ER_GRP_RPL_PLUGIN_STRUCT_INIT_NOT_POSSIBLE_ON_SERVER_START", - 0x2d74: "ER_GRP_RPL_FAILED_TO_ENABLE_SUPER_READ_ONLY_MODE", - 0x2d75: "ER_GRP_RPL_FAILED_TO_INIT_COMMUNICATION_ENGINE", - 0x2d76: "ER_GRP_RPL_FAILED_TO_START_ON_SECONDARY_WITH_ASYNC_CHANNELS", - 0x2d77: "ER_GRP_RPL_FAILED_TO_START_COMMUNICATION_ENGINE", - 0x2d78: "ER_GRP_RPL_TIMEOUT_ON_VIEW_AFTER_JOINING_GRP", - 0x2d79: "ER_GRP_RPL_FAILED_TO_CALL_GRP_COMMUNICATION_INTERFACE", - 0x2d7a: "ER_GRP_RPL_MEMBER_SERVER_UUID_IS_INCOMPATIBLE_WITH_GRP", - 0x2d7b: "ER_GRP_RPL_MEMBER_CONF_INFO", - 0x2d7c: "ER_GRP_RPL_FAILED_TO_CONFIRM_IF_SERVER_LEFT_GRP", - 0x2d7d: "ER_GRP_RPL_SERVER_IS_ALREADY_LEAVING", - 0x2d7e: "ER_GRP_RPL_SERVER_ALREADY_LEFT", - 0x2d7f: "ER_GRP_RPL_WAITING_FOR_VIEW_UPDATE", - 0x2d80: "ER_GRP_RPL_TIMEOUT_RECEIVING_VIEW_CHANGE_ON_SHUTDOWN", - 0x2d81: "ER_GRP_RPL_REQUESTING_NON_MEMBER_SERVER_TO_LEAVE", - 0x2d82: "ER_GRP_RPL_IS_STOPPING", - 0x2d83: "ER_GRP_RPL_IS_STOPPED", - 0x2d84: "ER_GRP_RPL_FAILED_TO_ENABLE_READ_ONLY_MODE_ON_SHUTDOWN", - 0x2d85: "ER_GRP_RPL_RECOVERY_MODULE_TERMINATION_TIMED_OUT_ON_SHUTDOWN", - 0x2d86: "ER_GRP_RPL_APPLIER_TERMINATION_TIMED_OUT_ON_SHUTDOWN", - 0x2d87: "ER_GRP_RPL_FAILED_TO_SHUTDOWN_REGISTRY_MODULE", - 0x2d88: "ER_GRP_RPL_FAILED_TO_INIT_HANDLER", - 0x2d89: "ER_GRP_RPL_FAILED_TO_REGISTER_SERVER_STATE_OBSERVER", - 0x2d8a: "ER_GRP_RPL_FAILED_TO_REGISTER_TRANS_STATE_OBSERVER", - 0x2d8b: "ER_GRP_RPL_FAILED_TO_REGISTER_BINLOG_STATE_OBSERVER", - 0x2d8c: "ER_GRP_RPL_FAILED_TO_START_ON_BOOT", - 0x2d8d: "ER_GRP_RPL_FAILED_TO_STOP_ON_PLUGIN_UNINSTALL", - 0x2d8e: "ER_GRP_RPL_FAILED_TO_UNREGISTER_SERVER_STATE_OBSERVER", - 0x2d8f: "ER_GRP_RPL_FAILED_TO_UNREGISTER_TRANS_STATE_OBSERVER", - 0x2d90: "ER_GRP_RPL_FAILED_TO_UNREGISTER_BINLOG_STATE_OBSERVER", - 0x2d91: "ER_GRP_RPL_ALL_OBSERVERS_UNREGISTERED", - 0x2d92: "ER_GRP_RPL_FAILED_TO_PARSE_THE_GRP_NAME", - 0x2d93: "ER_GRP_RPL_FAILED_TO_GENERATE_SIDNO_FOR_GRP", - 0x2d94: "ER_GRP_RPL_APPLIER_NOT_STARTED_DUE_TO_RUNNING_PREV_SHUTDOWN", - 0x2d95: "ER_GRP_RPL_FAILED_TO_INIT_APPLIER_MODULE", - 0x2d96: "ER_GRP_RPL_APPLIER_INITIALIZED", - 0x2d97: "ER_GRP_RPL_COMMUNICATION_SSL_CONF_INFO", - 0x2d98: "ER_GRP_RPL_ABORTS_AS_SSL_NOT_SUPPORTED_BY_MYSQLD", - 0x2d99: "ER_GRP_RPL_SSL_DISABLED", - 0x2d9a: "ER_GRP_RPL_UNABLE_TO_INIT_COMMUNICATION_ENGINE", - 0x2d9b: "ER_GRP_RPL_BINLOG_DISABLED", - 0x2d9c: "ER_GRP_RPL_GTID_MODE_OFF", - 0x2d9d: "ER_GRP_RPL_LOG_SLAVE_UPDATES_NOT_SET", - 0x2d9e: "ER_GRP_RPL_INVALID_TRANS_WRITE_SET_EXTRACTION_VALUE", - 0x2d9f: "ER_GRP_RPL_RELAY_LOG_INFO_REPO_MUST_BE_TABLE", - 0x2da0: "ER_GRP_RPL_MASTER_INFO_REPO_MUST_BE_TABLE", - 0x2da1: "ER_GRP_RPL_INCORRECT_TYPE_SET_FOR_PARALLEL_APPLIER", - 0x2da2: "ER_GRP_RPL_SLAVE_PRESERVE_COMMIT_ORDER_NOT_SET", - 0x2da3: "ER_GRP_RPL_SINGLE_PRIM_MODE_NOT_ALLOWED_WITH_UPDATE_EVERYWHERE", - 0x2da4: "ER_GRP_RPL_MODULE_TERMINATE_ERROR", - 0x2da5: "ER_GRP_RPL_GRP_NAME_OPTION_MANDATORY", - 0x2da6: "ER_GRP_RPL_GRP_NAME_IS_TOO_LONG", - 0x2da7: "ER_GRP_RPL_GRP_NAME_IS_NOT_VALID_UUID", - 0x2da8: "ER_GRP_RPL_FLOW_CTRL_MIN_QUOTA_GREATER_THAN_MAX_QUOTA", - 0x2da9: "ER_GRP_RPL_FLOW_CTRL_MIN_RECOVERY_QUOTA_GREATER_THAN_MAX_QUOTA", - 0x2daa: "ER_GRP_RPL_FLOW_CTRL_MAX_QUOTA_SMALLER_THAN_MIN_QUOTAS", - 0x2dab: "ER_GRP_RPL_INVALID_SSL_RECOVERY_STRING", - 0x2dac: "ER_GRP_RPL_SUPPORTS_ONLY_ONE_FORCE_MEMBERS_SET", - 0x2dad: "ER_GRP_RPL_FORCE_MEMBERS_SET_UPDATE_NOT_ALLOWED", - 0x2dae: "ER_GRP_RPL_GRP_COMMUNICATION_INIT_WITH_CONF", - 0x2daf: "ER_GRP_RPL_UNKNOWN_GRP_RPL_APPLIER_PIPELINE_REQUESTED", - 0x2db0: "ER_GRP_RPL_FAILED_TO_BOOTSTRAP_EVENT_HANDLING_INFRASTRUCTURE", - 0x2db1: "ER_GRP_RPL_APPLIER_HANDLER_NOT_INITIALIZED", - 0x2db2: "ER_GRP_RPL_APPLIER_HANDLER_IS_IN_USE", - 0x2db3: "ER_GRP_RPL_APPLIER_HANDLER_ROLE_IS_IN_USE", - 0x2db4: "ER_GRP_RPL_FAILED_TO_INIT_APPLIER_HANDLER", - 0x2db5: "ER_GRP_RPL_SQL_SERVICE_FAILED_TO_INIT_SESSION_THREAD", - 0x2db6: "ER_GRP_RPL_SQL_SERVICE_COMM_SESSION_NOT_INITIALIZED", - 0x2db7: "ER_GRP_RPL_SQL_SERVICE_SERVER_SESSION_KILLED", - 0x2db8: "ER_GRP_RPL_SQL_SERVICE_FAILED_TO_RUN_SQL_QUERY", - 0x2db9: "ER_GRP_RPL_SQL_SERVICE_SERVER_INTERNAL_FAILURE", - 0x2dba: "ER_GRP_RPL_SQL_SERVICE_RETRIES_EXCEEDED_ON_SESSION_STATE", - 0x2dbb: "ER_GRP_RPL_SQL_SERVICE_FAILED_TO_FETCH_SECURITY_CTX", - 0x2dbc: "ER_GRP_RPL_SQL_SERVICE_SERVER_ACCESS_DENIED_FOR_USER", - 0x2dbd: "ER_GRP_RPL_SQL_SERVICE_MAX_CONN_ERROR_FROM_SERVER", - 0x2dbe: "ER_GRP_RPL_SQL_SERVICE_SERVER_ERROR_ON_CONN", - 0x2dbf: "ER_GRP_RPL_UNREACHABLE_MAJORITY_TIMEOUT_FOR_MEMBER", - 0x2dc0: "ER_GRP_RPL_SERVER_SET_TO_READ_ONLY_DUE_TO_ERRORS", - 0x2dc1: "ER_GRP_RPL_GMS_LISTENER_FAILED_TO_LOG_NOTIFICATION", - 0x2dc2: "ER_GRP_RPL_GRP_COMMUNICATION_ENG_INIT_FAILED", - 0x2dc3: "ER_GRP_RPL_SET_GRP_COMMUNICATION_ENG_LOGGER_FAILED", - 0x2dc4: "ER_GRP_RPL_DEBUG_OPTIONS", - 0x2dc5: "ER_GRP_RPL_INVALID_DEBUG_OPTIONS", - 0x2dc6: "ER_GRP_RPL_EXIT_GRP_GCS_ERROR", - 0x2dc7: "ER_GRP_RPL_GRP_MEMBER_OFFLINE", - 0x2dc8: "ER_GRP_RPL_GCS_INTERFACE_ERROR", - 0x2dc9: "ER_GRP_RPL_FORCE_MEMBER_VALUE_SET_ERROR", - 0x2dca: "ER_GRP_RPL_FORCE_MEMBER_VALUE_SET", - 0x2dcb: "ER_GRP_RPL_FORCE_MEMBER_VALUE_TIME_OUT", - 0x2dcc: "ER_GRP_RPL_BROADCAST_COMMIT_MSSG_TOO_BIG", - 0x2dcd: "ER_GRP_RPL_SEND_STATS_ERROR", - 0x2dce: "ER_GRP_RPL_MEMBER_STATS_INFO", - 0x2dcf: "ER_GRP_RPL_FLOW_CONTROL_STATS", - 0x2dd0: "ER_GRP_RPL_UNABLE_TO_CONVERT_PACKET_TO_EVENT", - 0x2dd1: "ER_GRP_RPL_PIPELINE_CREATE_FAILED", - 0x2dd2: "ER_GRP_RPL_PIPELINE_REINIT_FAILED_WRITE", - 0x2dd3: "ER_GRP_RPL_UNABLE_TO_CONVERT_EVENT_TO_PACKET", - 0x2dd4: "ER_GRP_RPL_PIPELINE_FLUSH_FAIL", - 0x2dd5: "ER_GRP_RPL_PIPELINE_REINIT_FAILED_READ", - 0x2dd6: "ER_GRP_RPL_STOP_REP_CHANNEL", - 0x2dd7: "ER_GRP_RPL_GCS_GR_ERROR_MSG", - 0x2dd8: "ER_GRP_RPL_SLAVE_IO_THREAD_UNBLOCKED", - 0x2dd9: "ER_GRP_RPL_SLAVE_IO_THREAD_ERROR_OUT", - 0x2dda: "ER_GRP_RPL_SLAVE_APPLIER_THREAD_UNBLOCKED", - 0x2ddb: "ER_GRP_RPL_SLAVE_APPLIER_THREAD_ERROR_OUT", - 0x2ddc: "ER_LDAP_AUTH_FAILED_TO_CREATE_OR_GET_CONNECTION", - 0x2ddd: "ER_LDAP_AUTH_DEINIT_FAILED", - 0x2dde: "ER_LDAP_AUTH_SKIPPING_USER_GROUP_SEARCH", - 0x2ddf: "ER_LDAP_AUTH_POOL_DISABLE_MAX_SIZE_ZERO", - 0x2de0: "ER_LDAP_AUTH_FAILED_TO_CREATE_LDAP_OBJECT_CREATOR", - 0x2de1: "ER_LDAP_AUTH_FAILED_TO_CREATE_LDAP_OBJECT", - 0x2de2: "ER_LDAP_AUTH_TLS_CONF", - 0x2de3: "ER_LDAP_AUTH_TLS_CONNECTION", - 0x2de4: "ER_LDAP_AUTH_CONN_POOL_NOT_CREATED", - 0x2de5: "ER_LDAP_AUTH_CONN_POOL_INITIALIZING", - 0x2de6: "ER_LDAP_AUTH_CONN_POOL_DEINITIALIZING", - 0x2de7: "ER_LDAP_AUTH_ZERO_MAX_POOL_SIZE_UNCHANGED", - 0x2de8: "ER_LDAP_AUTH_POOL_REINITIALIZING", - 0x2de9: "ER_LDAP_AUTH_FAILED_TO_WRITE_PACKET", - 0x2dea: "ER_LDAP_AUTH_SETTING_USERNAME", - 0x2deb: "ER_LDAP_AUTH_USER_AUTH_DATA", - 0x2dec: "ER_LDAP_AUTH_INFO_FOR_USER", - 0x2ded: "ER_LDAP_AUTH_USER_GROUP_SEARCH_INFO", - 0x2dee: "ER_LDAP_AUTH_GRP_SEARCH_SPECIAL_HDL", - 0x2def: "ER_LDAP_AUTH_GRP_IS_FULL_DN", - 0x2df0: "ER_LDAP_AUTH_USER_NOT_FOUND_IN_ANY_GRP", - 0x2df1: "ER_LDAP_AUTH_USER_FOUND_IN_MANY_GRPS", - 0x2df2: "ER_LDAP_AUTH_USER_HAS_MULTIPLE_GRP_NAMES", - 0x2df3: "ER_LDAP_AUTH_SEARCHED_USER_GRP_NAME", - 0x2df4: "ER_LDAP_AUTH_OBJECT_CREATE_TIMESTAMP", - 0x2df5: "ER_LDAP_AUTH_CERTIFICATE_NAME", - 0x2df6: "ER_LDAP_AUTH_FAILED_TO_POOL_DEINIT", - 0x2df7: "ER_LDAP_AUTH_FAILED_TO_INITIALIZE_POOL_IN_RECONSTRUCTING", - 0x2df8: "ER_LDAP_AUTH_FAILED_TO_INITIALIZE_POOL_IN_INIT_STATE", - 0x2df9: "ER_LDAP_AUTH_FAILED_TO_INITIALIZE_POOL_IN_DEINIT_STATE", - 0x2dfa: "ER_LDAP_AUTH_FAILED_TO_DEINITIALIZE_POOL_IN_RECONSTRUCT_STATE", - 0x2dfb: "ER_LDAP_AUTH_FAILED_TO_DEINITIALIZE_NOT_READY_POOL", - 0x2dfc: "ER_LDAP_AUTH_FAILED_TO_GET_CONNECTION_AS_PLUGIN_NOT_READY", - 0x2dfd: "ER_LDAP_AUTH_CONNECTION_POOL_INIT_FAILED", - 0x2dfe: "ER_LDAP_AUTH_MAX_ALLOWED_CONNECTION_LIMIT_HIT", - 0x2dff: "ER_LDAP_AUTH_MAX_POOL_SIZE_SET_FAILED", - 0x2e00: "ER_LDAP_AUTH_PLUGIN_FAILED_TO_READ_PACKET", - 0x2e01: "ER_LDAP_AUTH_CREATING_LDAP_CONNECTION", - 0x2e02: "ER_LDAP_AUTH_GETTING_CONNECTION_FROM_POOL", - 0x2e03: "ER_LDAP_AUTH_RETURNING_CONNECTION_TO_POOL", - 0x2e04: "ER_LDAP_AUTH_SEARCH_USER_GROUP_ATTR_NOT_FOUND", - 0x2e05: "ER_LDAP_AUTH_LDAP_INFO_NULL", - 0x2e06: "ER_LDAP_AUTH_FREEING_CONNECTION", - 0x2e07: "ER_LDAP_AUTH_CONNECTION_PUSHED_TO_POOL", - 0x2e08: "ER_LDAP_AUTH_CONNECTION_CREATOR_ENTER", - 0x2e09: "ER_LDAP_AUTH_STARTING_TLS", - 0x2e0a: "ER_LDAP_AUTH_CONNECTION_GET_LDAP_INFO_NULL", - 0x2e0b: "ER_LDAP_AUTH_DELETING_CONNECTION_KEY", - 0x2e0c: "ER_LDAP_AUTH_POOLED_CONNECTION_KEY", - 0x2e0d: "ER_LDAP_AUTH_CREATE_CONNECTION_KEY", - 0x2e0e: "ER_LDAP_AUTH_COMMUNICATION_HOST_INFO", - 0x2e0f: "ER_LDAP_AUTH_METHOD_TO_CLIENT", - 0x2e10: "ER_LDAP_AUTH_SASL_REQUEST_FROM_CLIENT", - 0x2e11: "ER_LDAP_AUTH_SASL_PROCESS_SASL", - 0x2e12: "ER_LDAP_AUTH_SASL_BIND_SUCCESS_INFO", - 0x2e13: "ER_LDAP_AUTH_STARTED_FOR_USER", - 0x2e14: "ER_LDAP_AUTH_DISTINGUISHED_NAME", - 0x2e15: "ER_LDAP_AUTH_INIT_FAILED", - 0x2e16: "ER_LDAP_AUTH_OR_GROUP_RETRIEVAL_FAILED", - 0x2e17: "ER_LDAP_AUTH_USER_GROUP_SEARCH_FAILED", - 0x2e18: "ER_LDAP_AUTH_USER_BIND_FAILED", - 0x2e19: "ER_LDAP_AUTH_POOL_GET_FAILED_TO_CREATE_CONNECTION", - 0x2e1a: "ER_LDAP_AUTH_FAILED_TO_CREATE_LDAP_CONNECTION", - 0x2e1b: "ER_LDAP_AUTH_FAILED_TO_ESTABLISH_TLS_CONNECTION", - 0x2e1c: "ER_LDAP_AUTH_FAILED_TO_SEARCH_DN", - 0x2e1d: "ER_LDAP_AUTH_CONNECTION_POOL_REINIT_ENTER", - 0x2e1e: "ER_SYSTEMD_NOTIFY_PATH_TOO_LONG", - 0x2e1f: "ER_SYSTEMD_NOTIFY_CONNECT_FAILED", - 0x2e20: "ER_SYSTEMD_NOTIFY_WRITE_FAILED", - 0x2e21: "ER_FOUND_MISSING_GTIDS", - 0x2e22: "ER_PID_FILE_PRIV_DIRECTORY_INSECURE", - 0x2e23: "ER_CANT_CHECK_PID_PATH", - 0x2e24: "ER_VALIDATE_PWD_STATUS_VAR_REGISTRATION_FAILED", - 0x2e25: "ER_VALIDATE_PWD_STATUS_VAR_UNREGISTRATION_FAILED", - 0x2e26: "ER_VALIDATE_PWD_DICT_FILE_OPEN_FAILED", - 0x2e27: "ER_VALIDATE_PWD_COULD_BE_NULL", - 0x2e28: "ER_VALIDATE_PWD_STRING_CONV_TO_LOWERCASE_FAILED", - 0x2e29: "ER_VALIDATE_PWD_STRING_CONV_TO_BUFFER_FAILED", - 0x2e2a: "ER_VALIDATE_PWD_STRING_HANDLER_MEM_ALLOCATION_FAILED", - 0x2e2b: "ER_VALIDATE_PWD_STRONG_POLICY_DICT_FILE_UNSPECIFIED", - 0x2e2c: "ER_VALIDATE_PWD_CONVERT_TO_BUFFER_FAILED", - 0x2e2d: "ER_VALIDATE_PWD_VARIABLE_REGISTRATION_FAILED", - 0x2e2e: "ER_VALIDATE_PWD_VARIABLE_UNREGISTRATION_FAILED", - 0x2e2f: "ER_KEYRING_MIGRATION_EXTRA_OPTIONS", - 0x2e31: "ER_IB_MSG_0", - 0x2e32: "ER_IB_MSG_1", - 0x2e33: "ER_IB_MSG_2", - 0x2e34: "ER_IB_MSG_3", - 0x2e35: "ER_IB_MSG_4", - 0x2e36: "ER_IB_MSG_5", - 0x2e37: "ER_IB_MSG_6", - 0x2e38: "ER_IB_MSG_7", - 0x2e39: "ER_IB_MSG_8", - 0x2e3a: "ER_IB_MSG_9", - 0x2e3b: "ER_IB_MSG_10", - 0x2e3c: "ER_IB_MSG_11", - 0x2e3d: "ER_IB_MSG_12", - 0x2e3e: "ER_IB_MSG_13", - 0x2e3f: "ER_IB_MSG_14", - 0x2e40: "ER_IB_MSG_15", - 0x2e41: "ER_IB_MSG_16", - 0x2e42: "ER_IB_MSG_17", - 0x2e43: "ER_IB_MSG_18", - 0x2e44: "ER_IB_MSG_19", - 0x2e45: "ER_IB_MSG_20", - 0x2e46: "ER_IB_MSG_21", - 0x2e47: "ER_IB_MSG_22", - 0x2e48: "ER_IB_MSG_23", - 0x2e49: "ER_IB_MSG_24", - 0x2e4a: "ER_IB_MSG_25", - 0x2e4b: "ER_IB_MSG_26", - 0x2e4c: "ER_IB_MSG_27", - 0x2e4d: "ER_IB_MSG_28", - 0x2e4e: "ER_IB_MSG_29", - 0x2e4f: "ER_IB_MSG_30", - 0x2e50: "ER_IB_MSG_31", - 0x2e51: "ER_IB_MSG_32", - 0x2e52: "ER_IB_MSG_33", - 0x2e53: "ER_IB_MSG_34", - 0x2e54: "ER_IB_MSG_35", - 0x2e55: "ER_IB_MSG_36", - 0x2e56: "ER_IB_MSG_37", - 0x2e57: "ER_IB_MSG_38", - 0x2e58: "ER_IB_MSG_39", - 0x2e59: "ER_IB_MSG_40", - 0x2e5a: "ER_IB_MSG_41", - 0x2e5b: "ER_IB_MSG_42", - 0x2e5c: "ER_IB_MSG_43", - 0x2e5d: "ER_IB_MSG_44", - 0x2e5e: "ER_IB_MSG_45", - 0x2e5f: "ER_IB_MSG_46", - 0x2e60: "ER_IB_MSG_47", - 0x2e61: "ER_IB_MSG_48", - 0x2e62: "ER_IB_MSG_49", - 0x2e63: "ER_IB_MSG_50", - 0x2e64: "ER_IB_MSG_51", - 0x2e65: "ER_IB_MSG_52", - 0x2e66: "ER_IB_MSG_53", - 0x2e67: "ER_IB_MSG_54", - 0x2e68: "ER_IB_MSG_55", - 0x2e69: "ER_IB_MSG_56", - 0x2e6a: "ER_IB_MSG_57", - 0x2e6b: "ER_IB_MSG_58", - 0x2e6c: "ER_IB_MSG_59", - 0x2e6d: "ER_IB_MSG_60", - 0x2e6e: "ER_IB_MSG_61", - 0x2e6f: "ER_IB_MSG_62", - 0x2e70: "ER_IB_MSG_63", - 0x2e71: "ER_IB_MSG_64", - 0x2e72: "ER_IB_MSG_65", - 0x2e73: "ER_IB_MSG_66", - 0x2e74: "ER_IB_MSG_67", - 0x2e75: "ER_IB_MSG_68", - 0x2e76: "ER_IB_MSG_69", - 0x2e77: "ER_IB_MSG_70", - 0x2e78: "ER_IB_MSG_71", - 0x2e79: "ER_IB_MSG_72", - 0x2e7a: "ER_IB_MSG_73", - 0x2e7b: "ER_IB_MSG_74", - 0x2e7c: "ER_IB_MSG_75", - 0x2e7d: "ER_IB_MSG_76", - 0x2e7e: "ER_IB_MSG_77", - 0x2e7f: "ER_IB_MSG_78", - 0x2e80: "ER_IB_MSG_79", - 0x2e81: "ER_IB_MSG_80", - 0x2e82: "ER_IB_MSG_81", - 0x2e83: "ER_IB_MSG_82", - 0x2e84: "ER_IB_MSG_83", - 0x2e85: "ER_IB_MSG_84", - 0x2e86: "ER_IB_MSG_85", - 0x2e87: "ER_IB_MSG_86", - 0x2e88: "ER_IB_MSG_87", - 0x2e89: "ER_IB_MSG_88", - 0x2e8a: "ER_IB_MSG_89", - 0x2e8b: "ER_IB_MSG_90", - 0x2e8c: "ER_IB_MSG_91", - 0x2e8d: "ER_IB_MSG_92", - 0x2e8e: "ER_IB_MSG_93", - 0x2e8f: "ER_IB_MSG_94", - 0x2e90: "ER_IB_MSG_95", - 0x2e91: "ER_IB_MSG_96", - 0x2e92: "ER_IB_MSG_97", - 0x2e93: "ER_IB_MSG_98", - 0x2e94: "ER_IB_MSG_99", - 0x2e95: "ER_IB_MSG_100", - 0x2e96: "ER_IB_MSG_101", - 0x2e97: "ER_IB_MSG_102", - 0x2e98: "ER_IB_MSG_103", - 0x2e99: "ER_IB_MSG_104", - 0x2e9a: "ER_IB_MSG_105", - 0x2e9b: "ER_IB_MSG_106", - 0x2e9c: "ER_IB_MSG_107", - 0x2e9d: "ER_IB_MSG_108", - 0x2e9e: "ER_IB_MSG_109", - 0x2e9f: "ER_IB_MSG_110", - 0x2ea0: "ER_IB_MSG_111", - 0x2ea1: "ER_IB_MSG_112", - 0x2ea2: "ER_IB_MSG_113", - 0x2ea3: "ER_IB_MSG_114", - 0x2ea4: "ER_IB_MSG_115", - 0x2ea5: "ER_IB_MSG_116", - 0x2ea6: "ER_IB_MSG_117", - 0x2ea7: "ER_IB_MSG_118", - 0x2ea8: "ER_IB_MSG_119", - 0x2ea9: "ER_IB_MSG_120", - 0x2eaa: "ER_IB_MSG_121", - 0x2eab: "ER_IB_MSG_122", - 0x2eac: "ER_IB_MSG_123", - 0x2ead: "ER_IB_MSG_124", - 0x2eae: "ER_IB_MSG_125", - 0x2eaf: "ER_IB_MSG_126", - 0x2eb0: "ER_IB_MSG_127", - 0x2eb1: "ER_IB_MSG_128", - 0x2eb2: "ER_IB_MSG_129", - 0x2eb3: "ER_IB_MSG_130", - 0x2eb4: "ER_IB_MSG_131", - 0x2eb5: "ER_IB_MSG_132", - 0x2eb6: "ER_IB_MSG_133", - 0x2eb7: "ER_IB_MSG_134", - 0x2eb8: "ER_IB_MSG_135", - 0x2eb9: "ER_IB_MSG_136", - 0x2eba: "ER_IB_MSG_137", - 0x2ebb: "ER_IB_MSG_138", - 0x2ebc: "ER_IB_MSG_139", - 0x2ebd: "ER_IB_MSG_140", - 0x2ebe: "ER_IB_MSG_141", - 0x2ebf: "ER_IB_MSG_142", - 0x2ec0: "ER_IB_MSG_143", - 0x2ec1: "ER_IB_MSG_144", - 0x2ec2: "ER_IB_MSG_145", - 0x2ec3: "ER_IB_MSG_146", - 0x2ec4: "ER_IB_MSG_147", - 0x2ec5: "ER_IB_MSG_148", - 0x2ec6: "ER_IB_MSG_149", - 0x2ec7: "ER_IB_MSG_150", - 0x2ec8: "ER_IB_MSG_151", - 0x2ec9: "ER_IB_MSG_152", - 0x2eca: "ER_IB_MSG_153", - 0x2ecb: "ER_IB_MSG_154", - 0x2ecc: "ER_IB_MSG_155", - 0x2ecd: "ER_IB_MSG_156", - 0x2ece: "ER_IB_MSG_157", - 0x2ecf: "ER_IB_MSG_158", - 0x2ed0: "ER_IB_MSG_159", - 0x2ed1: "ER_IB_MSG_160", - 0x2ed2: "ER_IB_MSG_161", - 0x2ed3: "ER_IB_MSG_162", - 0x2ed4: "ER_IB_MSG_163", - 0x2ed5: "ER_IB_MSG_164", - 0x2ed6: "ER_IB_MSG_165", - 0x2ed7: "ER_IB_MSG_166", - 0x2ed8: "ER_IB_MSG_167", - 0x2ed9: "ER_IB_MSG_168", - 0x2eda: "ER_IB_MSG_169", - 0x2edb: "ER_IB_MSG_170", - 0x2edc: "ER_IB_MSG_171", - 0x2edd: "ER_IB_MSG_172", - 0x2ede: "ER_IB_MSG_173", - 0x2edf: "ER_IB_MSG_174", - 0x2ee0: "ER_IB_MSG_175", - 0x2ee1: "ER_IB_MSG_176", - 0x2ee2: "ER_IB_MSG_177", - 0x2ee3: "ER_IB_MSG_178", - 0x2ee4: "ER_IB_MSG_179", - 0x2ee5: "ER_IB_MSG_180", - 0x2ee6: "ER_IB_MSG_181", - 0x2ee7: "ER_IB_MSG_182", - 0x2ee8: "ER_IB_MSG_183", - 0x2ee9: "ER_IB_MSG_184", - 0x2eea: "ER_IB_MSG_185", - 0x2eeb: "ER_IB_MSG_186", - 0x2eec: "ER_IB_MSG_187", - 0x2eed: "ER_IB_MSG_188", - 0x2eee: "ER_IB_MSG_189", - 0x2eef: "ER_IB_MSG_190", - 0x2ef0: "ER_IB_MSG_191", - 0x2ef1: "ER_IB_MSG_192", - 0x2ef2: "ER_IB_MSG_193", - 0x2ef3: "ER_IB_MSG_194", - 0x2ef4: "ER_IB_MSG_195", - 0x2ef5: "ER_IB_MSG_196", - 0x2ef6: "ER_IB_MSG_197", - 0x2ef7: "ER_IB_MSG_198", - 0x2ef8: "ER_IB_MSG_199", - 0x2ef9: "ER_IB_MSG_200", - 0x2efa: "ER_IB_MSG_201", - 0x2efb: "ER_IB_MSG_202", - 0x2efc: "ER_IB_MSG_203", - 0x2efd: "ER_IB_MSG_204", - 0x2efe: "ER_IB_MSG_205", - 0x2eff: "ER_IB_MSG_206", - 0x2f00: "ER_IB_MSG_207", - 0x2f01: "ER_IB_MSG_208", - 0x2f02: "ER_IB_MSG_209", - 0x2f03: "ER_IB_MSG_210", - 0x2f04: "ER_IB_MSG_211", - 0x2f05: "ER_IB_MSG_212", - 0x2f06: "ER_IB_MSG_213", - 0x2f07: "ER_IB_MSG_214", - 0x2f08: "ER_IB_MSG_215", - 0x2f09: "ER_IB_MSG_216", - 0x2f0a: "ER_IB_MSG_217", - 0x2f0b: "ER_IB_MSG_218", - 0x2f0c: "ER_IB_MSG_219", - 0x2f0d: "ER_IB_MSG_220", - 0x2f0e: "ER_IB_MSG_221", - 0x2f0f: "ER_IB_MSG_222", - 0x2f10: "ER_IB_MSG_223", - 0x2f11: "ER_IB_MSG_224", - 0x2f12: "ER_IB_MSG_225", - 0x2f13: "ER_IB_MSG_226", - 0x2f14: "ER_IB_MSG_227", - 0x2f15: "ER_IB_MSG_228", - 0x2f16: "ER_IB_MSG_229", - 0x2f17: "ER_IB_MSG_230", - 0x2f18: "ER_IB_MSG_231", - 0x2f19: "ER_IB_MSG_232", - 0x2f1a: "ER_IB_MSG_233", - 0x2f1b: "ER_IB_MSG_234", - 0x2f1c: "ER_IB_MSG_235", - 0x2f1d: "ER_IB_MSG_236", - 0x2f1e: "ER_IB_MSG_237", - 0x2f1f: "ER_IB_MSG_238", - 0x2f20: "ER_IB_MSG_239", - 0x2f21: "ER_IB_MSG_240", - 0x2f22: "ER_IB_MSG_241", - 0x2f23: "ER_IB_MSG_242", - 0x2f24: "ER_IB_MSG_243", - 0x2f25: "ER_IB_MSG_244", - 0x2f26: "ER_IB_MSG_245", - 0x2f27: "ER_IB_MSG_246", - 0x2f28: "ER_IB_MSG_247", - 0x2f29: "ER_IB_MSG_248", - 0x2f2a: "ER_IB_MSG_249", - 0x2f2b: "ER_IB_MSG_250", - 0x2f2c: "ER_IB_MSG_251", - 0x2f2d: "ER_IB_MSG_252", - 0x2f2e: "ER_IB_MSG_253", - 0x2f2f: "ER_IB_MSG_254", - 0x2f30: "ER_IB_MSG_255", - 0x2f31: "ER_IB_MSG_256", - 0x2f32: "ER_IB_MSG_257", - 0x2f33: "ER_IB_MSG_258", - 0x2f34: "ER_IB_MSG_259", - 0x2f35: "ER_IB_MSG_260", - 0x2f36: "ER_IB_MSG_261", - 0x2f37: "ER_IB_MSG_262", - 0x2f38: "ER_IB_MSG_263", - 0x2f39: "ER_IB_MSG_264", - 0x2f3a: "ER_IB_MSG_265", - 0x2f3b: "ER_IB_MSG_266", - 0x2f3c: "ER_IB_MSG_267", - 0x2f3d: "ER_IB_MSG_268", - 0x2f3e: "ER_IB_MSG_269", - 0x2f3f: "ER_IB_MSG_270", - 0x2f40: "ER_IB_MSG_271", - 0x2f41: "ER_IB_MSG_272", - 0x2f42: "ER_IB_MSG_273", - 0x2f43: "ER_IB_MSG_274", - 0x2f44: "ER_IB_MSG_275", - 0x2f45: "ER_IB_MSG_276", - 0x2f46: "ER_IB_MSG_277", - 0x2f47: "ER_IB_MSG_278", - 0x2f48: "ER_IB_MSG_279", - 0x2f49: "ER_IB_MSG_280", - 0x2f4a: "ER_IB_MSG_281", - 0x2f4b: "ER_IB_MSG_282", - 0x2f4c: "ER_IB_MSG_283", - 0x2f4d: "ER_IB_MSG_284", - 0x2f4e: "ER_IB_MSG_285", - 0x2f4f: "ER_IB_MSG_286", - 0x2f50: "ER_IB_MSG_287", - 0x2f51: "ER_IB_MSG_288", - 0x2f52: "ER_IB_MSG_289", - 0x2f53: "ER_IB_MSG_290", - 0x2f54: "ER_IB_MSG_291", - 0x2f55: "ER_IB_MSG_292", - 0x2f56: "ER_IB_MSG_293", - 0x2f57: "ER_IB_MSG_294", - 0x2f58: "ER_IB_MSG_295", - 0x2f59: "ER_IB_MSG_296", - 0x2f5a: "ER_IB_MSG_297", - 0x2f5b: "ER_IB_MSG_298", - 0x2f5c: "ER_IB_MSG_299", - 0x2f5d: "ER_IB_MSG_300", - 0x2f5e: "ER_IB_MSG_301", - 0x2f5f: "ER_IB_MSG_302", - 0x2f60: "ER_IB_MSG_303", - 0x2f61: "ER_IB_MSG_304", - 0x2f62: "ER_IB_MSG_305", - 0x2f63: "ER_IB_MSG_306", - 0x2f64: "ER_IB_MSG_307", - 0x2f65: "ER_IB_MSG_308", - 0x2f66: "ER_IB_MSG_309", - 0x2f67: "ER_IB_MSG_310", - 0x2f68: "ER_IB_MSG_311", - 0x2f69: "ER_IB_MSG_312", - 0x2f6a: "ER_IB_MSG_313", - 0x2f6b: "ER_IB_MSG_314", - 0x2f6c: "ER_IB_MSG_315", - 0x2f6d: "ER_IB_MSG_316", - 0x2f6e: "ER_IB_MSG_317", - 0x2f6f: "ER_IB_MSG_318", - 0x2f70: "ER_IB_MSG_319", - 0x2f71: "ER_IB_MSG_320", - 0x2f72: "ER_IB_MSG_321", - 0x2f73: "ER_IB_MSG_322", - 0x2f74: "ER_IB_MSG_323", - 0x2f75: "ER_IB_MSG_324", - 0x2f76: "ER_IB_MSG_325", - 0x2f77: "ER_IB_MSG_326", - 0x2f78: "ER_IB_MSG_327", - 0x2f79: "ER_IB_MSG_328", - 0x2f7a: "ER_IB_MSG_329", - 0x2f7b: "ER_IB_MSG_330", - 0x2f7c: "ER_IB_MSG_331", - 0x2f7d: "ER_IB_MSG_332", - 0x2f7e: "ER_IB_MSG_333", - 0x2f7f: "ER_IB_MSG_334", - 0x2f80: "ER_IB_MSG_335", - 0x2f81: "ER_IB_MSG_336", - 0x2f82: "ER_IB_MSG_337", - 0x2f83: "ER_IB_MSG_338", - 0x2f84: "ER_IB_MSG_339", - 0x2f85: "ER_IB_MSG_340", - 0x2f86: "ER_IB_MSG_341", - 0x2f87: "ER_IB_MSG_342", - 0x2f88: "ER_IB_MSG_343", - 0x2f89: "ER_IB_MSG_344", - 0x2f8a: "ER_IB_MSG_345", - 0x2f8b: "ER_IB_MSG_346", - 0x2f8c: "ER_IB_MSG_347", - 0x2f8d: "ER_IB_MSG_348", - 0x2f8e: "ER_IB_MSG_349", - 0x2f8f: "ER_IB_MSG_350", - 0x2f90: "ER_IB_MSG_351", - 0x2f91: "ER_IB_MSG_352", - 0x2f92: "ER_IB_MSG_353", - 0x2f93: "ER_IB_MSG_354", - 0x2f94: "ER_IB_MSG_355", - 0x2f95: "ER_IB_MSG_356", - 0x2f96: "ER_IB_MSG_357", - 0x2f97: "ER_IB_MSG_358", - 0x2f98: "ER_IB_MSG_359", - 0x2f99: "ER_IB_MSG_360", - 0x2f9a: "ER_IB_MSG_361", - 0x2f9b: "ER_IB_MSG_362", - 0x2f9c: "ER_IB_MSG_363", - 0x2f9d: "ER_IB_MSG_364", - 0x2f9e: "ER_IB_MSG_365", - 0x2f9f: "ER_IB_MSG_366", - 0x2fa0: "ER_IB_MSG_367", - 0x2fa1: "ER_IB_MSG_368", - 0x2fa2: "ER_IB_MSG_369", - 0x2fa3: "ER_IB_MSG_370", - 0x2fa4: "ER_IB_MSG_371", - 0x2fa5: "ER_IB_MSG_372", - 0x2fa6: "ER_IB_MSG_373", - 0x2fa7: "ER_IB_MSG_374", - 0x2fa8: "ER_IB_MSG_375", - 0x2fa9: "ER_IB_MSG_376", - 0x2faa: "ER_IB_MSG_377", - 0x2fab: "ER_IB_MSG_378", - 0x2fac: "ER_IB_MSG_379", - 0x2fad: "ER_IB_MSG_380", - 0x2fae: "ER_IB_MSG_381", - 0x2faf: "ER_IB_MSG_382", - 0x2fb0: "ER_IB_MSG_383", - 0x2fb1: "ER_IB_MSG_384", - 0x2fb2: "ER_IB_MSG_385", - 0x2fb3: "ER_IB_MSG_386", - 0x2fb4: "ER_IB_MSG_387", - 0x2fb5: "ER_IB_MSG_388", - 0x2fb6: "ER_IB_MSG_389", - 0x2fb7: "ER_IB_MSG_390", - 0x2fb8: "ER_IB_MSG_391", - 0x2fb9: "ER_IB_MSG_392", - 0x2fba: "ER_IB_MSG_393", - 0x2fbb: "ER_IB_MSG_394", - 0x2fbc: "ER_IB_MSG_395", - 0x2fbd: "ER_IB_MSG_396", - 0x2fbe: "ER_IB_MSG_397", - 0x2fbf: "ER_IB_MSG_398", - 0x2fc0: "ER_IB_MSG_399", - 0x2fc1: "ER_IB_MSG_400", - 0x2fc2: "ER_IB_MSG_401", - 0x2fc3: "ER_IB_MSG_402", - 0x2fc4: "ER_IB_MSG_403", - 0x2fc5: "ER_IB_MSG_404", - 0x2fc6: "ER_IB_MSG_405", - 0x2fc7: "ER_IB_MSG_406", - 0x2fc8: "ER_IB_MSG_407", - 0x2fc9: "ER_IB_MSG_408", - 0x2fca: "ER_IB_MSG_409", - 0x2fcb: "ER_IB_MSG_410", - 0x2fcc: "ER_IB_MSG_411", - 0x2fcd: "ER_IB_MSG_412", - 0x2fce: "ER_IB_MSG_413", - 0x2fcf: "ER_IB_MSG_414", - 0x2fd0: "ER_IB_MSG_415", - 0x2fd1: "ER_IB_MSG_416", - 0x2fd2: "ER_IB_MSG_417", - 0x2fd3: "ER_IB_MSG_418", - 0x2fd4: "ER_IB_MSG_419", - 0x2fd5: "ER_IB_MSG_420", - 0x2fd6: "ER_IB_MSG_421", - 0x2fd7: "ER_IB_MSG_422", - 0x2fd8: "ER_IB_MSG_423", - 0x2fd9: "ER_IB_MSG_424", - 0x2fda: "ER_IB_MSG_425", - 0x2fdb: "ER_IB_MSG_426", - 0x2fdc: "ER_IB_MSG_427", - 0x2fdd: "ER_IB_MSG_428", - 0x2fde: "ER_IB_MSG_429", - 0x2fdf: "ER_IB_MSG_430", - 0x2fe0: "ER_IB_MSG_431", - 0x2fe1: "ER_IB_MSG_432", - 0x2fe2: "ER_IB_MSG_433", - 0x2fe3: "ER_IB_MSG_434", - 0x2fe4: "ER_IB_MSG_435", - 0x2fe5: "ER_IB_MSG_436", - 0x2fe6: "ER_IB_MSG_437", - 0x2fe7: "ER_IB_MSG_438", - 0x2fe8: "ER_IB_MSG_439", - 0x2fe9: "ER_IB_MSG_440", - 0x2fea: "ER_IB_MSG_441", - 0x2feb: "ER_IB_MSG_442", - 0x2fec: "ER_IB_MSG_443", - 0x2fed: "ER_IB_MSG_444", - 0x2fee: "ER_IB_MSG_445", - 0x2fef: "ER_IB_MSG_446", - 0x2ff0: "ER_IB_MSG_447", - 0x2ff1: "ER_IB_MSG_448", - 0x2ff2: "ER_IB_MSG_449", - 0x2ff3: "ER_IB_MSG_450", - 0x2ff4: "ER_IB_MSG_451", - 0x2ff5: "ER_IB_MSG_452", - 0x2ff6: "ER_IB_MSG_453", - 0x2ff7: "ER_IB_MSG_454", - 0x2ff8: "ER_IB_MSG_455", - 0x2ff9: "ER_IB_MSG_456", - 0x2ffa: "ER_IB_MSG_457", - 0x2ffb: "ER_IB_MSG_458", - 0x2ffc: "ER_IB_MSG_459", - 0x2ffd: "ER_IB_MSG_460", - 0x2ffe: "ER_IB_MSG_461", - 0x2fff: "ER_IB_MSG_462", - 0x3000: "ER_IB_MSG_463", - 0x3001: "ER_IB_MSG_464", - 0x3002: "ER_IB_MSG_465", - 0x3003: "ER_IB_MSG_466", - 0x3004: "ER_IB_MSG_467", - 0x3005: "ER_IB_MSG_468", - 0x3006: "ER_IB_MSG_469", - 0x3007: "ER_IB_MSG_470", - 0x3008: "ER_IB_MSG_471", - 0x3009: "ER_IB_MSG_472", - 0x300a: "ER_IB_MSG_473", - 0x300b: "ER_IB_MSG_474", - 0x300c: "ER_IB_MSG_475", - 0x300d: "ER_IB_MSG_476", - 0x300e: "ER_IB_MSG_477", - 0x300f: "ER_IB_MSG_478", - 0x3010: "ER_IB_MSG_479", - 0x3011: "ER_IB_MSG_480", - 0x3012: "ER_IB_MSG_481", - 0x3013: "ER_IB_MSG_482", - 0x3014: "ER_IB_MSG_483", - 0x3015: "ER_IB_MSG_484", - 0x3016: "ER_IB_MSG_485", - 0x3017: "ER_IB_MSG_486", - 0x3018: "ER_IB_MSG_487", - 0x3019: "ER_IB_MSG_488", - 0x301a: "ER_IB_MSG_489", - 0x301b: "ER_IB_MSG_490", - 0x301c: "ER_IB_MSG_491", - 0x301d: "ER_IB_MSG_492", - 0x301e: "ER_IB_MSG_493", - 0x301f: "ER_IB_MSG_494", - 0x3020: "ER_IB_MSG_495", - 0x3021: "ER_IB_MSG_496", - 0x3022: "ER_IB_MSG_497", - 0x3023: "ER_IB_MSG_498", - 0x3024: "ER_IB_MSG_499", - 0x3025: "ER_IB_MSG_500", - 0x3026: "ER_IB_MSG_501", - 0x3027: "ER_IB_MSG_502", - 0x3028: "ER_IB_MSG_503", - 0x3029: "ER_IB_MSG_504", - 0x302a: "ER_IB_MSG_505", - 0x302b: "ER_IB_MSG_506", - 0x302c: "ER_IB_MSG_507", - 0x302d: "ER_IB_MSG_508", - 0x302e: "ER_IB_MSG_509", - 0x302f: "ER_IB_MSG_510", - 0x3030: "ER_IB_MSG_511", - 0x3031: "ER_IB_MSG_512", - 0x3032: "ER_IB_MSG_513", - 0x3033: "ER_IB_MSG_514", - 0x3034: "ER_IB_MSG_515", - 0x3035: "ER_IB_MSG_516", - 0x3036: "ER_IB_MSG_517", - 0x3037: "ER_IB_MSG_518", - 0x3038: "ER_IB_MSG_519", - 0x3039: "ER_IB_MSG_520", - 0x303a: "ER_IB_MSG_521", - 0x303b: "ER_IB_MSG_522", - 0x303c: "ER_IB_MSG_523", - 0x303d: "ER_IB_MSG_524", - 0x303e: "ER_IB_MSG_525", - 0x303f: "ER_IB_MSG_526", - 0x3040: "ER_IB_MSG_527", - 0x3041: "ER_IB_MSG_528", - 0x3042: "ER_IB_MSG_529", - 0x3043: "ER_IB_MSG_530", - 0x3044: "ER_IB_MSG_531", - 0x3045: "ER_IB_MSG_532", - 0x3046: "ER_IB_MSG_533", - 0x3047: "ER_IB_MSG_534", - 0x3048: "ER_IB_MSG_535", - 0x3049: "ER_IB_MSG_536", - 0x304a: "ER_IB_MSG_537", - 0x304b: "ER_IB_MSG_538", - 0x304c: "ER_IB_MSG_539", - 0x304d: "ER_IB_MSG_540", - 0x304e: "ER_IB_MSG_541", - 0x304f: "ER_IB_MSG_542", - 0x3050: "ER_IB_MSG_543", - 0x3051: "ER_IB_MSG_544", - 0x3052: "ER_IB_MSG_545", - 0x3053: "ER_IB_MSG_546", - 0x3054: "ER_IB_MSG_547", - 0x3055: "ER_IB_MSG_548", - 0x3056: "ER_IB_MSG_549", - 0x3057: "ER_IB_MSG_550", - 0x3058: "ER_IB_MSG_551", - 0x3059: "ER_IB_MSG_552", - 0x305a: "ER_IB_MSG_553", - 0x305b: "ER_IB_MSG_554", - 0x305c: "ER_IB_MSG_555", - 0x305d: "ER_IB_MSG_556", - 0x305e: "ER_IB_MSG_557", - 0x305f: "ER_IB_MSG_558", - 0x3060: "ER_IB_MSG_559", - 0x3061: "ER_IB_MSG_560", - 0x3062: "ER_IB_MSG_561", - 0x3063: "ER_IB_MSG_562", - 0x3064: "ER_IB_MSG_563", - 0x3065: "ER_IB_MSG_564", - 0x3066: "ER_IB_MSG_565", - 0x3067: "ER_IB_MSG_566", - 0x3068: "ER_IB_MSG_567", - 0x3069: "ER_IB_MSG_568", - 0x306a: "ER_IB_MSG_569", - 0x306b: "ER_IB_MSG_570", - 0x306c: "ER_IB_MSG_571", - 0x306d: "ER_IB_MSG_572", - 0x306e: "ER_IB_MSG_573", - 0x306f: "ER_IB_MSG_574", - 0x3070: "ER_IB_MSG_575", - 0x3071: "ER_IB_MSG_576", - 0x3072: "ER_IB_MSG_577", - 0x3073: "ER_IB_MSG_578", - 0x3074: "ER_IB_MSG_579", - 0x3075: "ER_IB_MSG_580", - 0x3076: "ER_IB_MSG_581", - 0x3077: "ER_IB_MSG_582", - 0x3078: "ER_IB_MSG_583", - 0x3079: "ER_IB_MSG_584", - 0x307a: "ER_IB_MSG_585", - 0x307b: "ER_IB_MSG_586", - 0x307c: "ER_IB_MSG_587", - 0x307d: "ER_IB_MSG_588", - 0x307e: "ER_IB_MSG_589", - 0x307f: "ER_IB_MSG_590", - 0x3080: "ER_IB_MSG_591", - 0x3081: "ER_IB_MSG_592", - 0x3082: "ER_IB_MSG_593", - 0x3083: "ER_IB_MSG_594", - 0x3084: "ER_IB_MSG_595", - 0x3085: "ER_IB_MSG_596", - 0x3086: "ER_IB_MSG_597", - 0x3087: "ER_IB_MSG_598", - 0x3088: "ER_IB_MSG_599", - 0x3089: "ER_IB_MSG_600", - 0x308a: "ER_IB_MSG_601", - 0x308b: "ER_IB_MSG_602", - 0x308c: "ER_IB_MSG_603", - 0x308d: "ER_IB_MSG_604", - 0x308e: "ER_IB_MSG_605", - 0x308f: "ER_IB_MSG_606", - 0x3090: "ER_IB_MSG_607", - 0x3091: "ER_IB_MSG_608", - 0x3092: "ER_IB_MSG_609", - 0x3093: "ER_IB_MSG_610", - 0x3094: "ER_IB_MSG_611", - 0x3095: "ER_IB_MSG_612", - 0x3096: "ER_IB_MSG_613", - 0x3097: "ER_IB_MSG_614", - 0x3098: "ER_IB_MSG_615", - 0x3099: "ER_IB_MSG_616", - 0x309a: "ER_IB_MSG_617", - 0x309b: "ER_IB_MSG_618", - 0x309c: "ER_IB_MSG_619", - 0x309d: "ER_IB_MSG_620", - 0x309e: "ER_IB_MSG_621", - 0x309f: "ER_IB_MSG_622", - 0x30a0: "ER_IB_MSG_623", - 0x30a1: "ER_IB_MSG_624", - 0x30a2: "ER_IB_MSG_625", - 0x30a3: "ER_IB_MSG_626", - 0x30a4: "ER_IB_MSG_627", - 0x30a5: "ER_IB_MSG_628", - 0x30a6: "ER_IB_MSG_629", - 0x30a7: "ER_IB_MSG_630", - 0x30a8: "ER_IB_MSG_631", - 0x30a9: "ER_IB_MSG_632", - 0x30aa: "ER_IB_MSG_633", - 0x30ab: "ER_IB_MSG_634", - 0x30ac: "ER_IB_MSG_635", - 0x30ad: "ER_IB_MSG_636", - 0x30ae: "ER_IB_MSG_637", - 0x30af: "ER_IB_MSG_638", - 0x30b0: "ER_IB_MSG_639", - 0x30b1: "ER_IB_MSG_640", - 0x30b2: "ER_IB_MSG_641", - 0x30b3: "ER_IB_MSG_642", - 0x30b4: "ER_IB_MSG_643", - 0x30b5: "ER_IB_MSG_644", - 0x30b6: "ER_IB_MSG_645", - 0x30b7: "ER_IB_MSG_646", - 0x30b8: "ER_IB_MSG_647", - 0x30b9: "ER_IB_MSG_648", - 0x30ba: "ER_IB_MSG_649", - 0x30bb: "ER_IB_MSG_650", - 0x30bc: "ER_IB_MSG_651", - 0x30bd: "ER_IB_MSG_652", - 0x30be: "ER_IB_MSG_653", - 0x30bf: "ER_IB_MSG_654", - 0x30c0: "ER_IB_MSG_655", - 0x30c1: "ER_IB_MSG_656", - 0x30c2: "ER_IB_MSG_657", - 0x30c3: "ER_IB_MSG_658", - 0x30c4: "ER_IB_MSG_659", - 0x30c5: "ER_IB_MSG_660", - 0x30c6: "ER_IB_MSG_661", - 0x30c7: "ER_IB_MSG_662", - 0x30c8: "ER_IB_MSG_663", - 0x30c9: "ER_IB_MSG_664", - 0x30ca: "ER_IB_MSG_665", - 0x30cb: "ER_IB_MSG_666", - 0x30cc: "ER_IB_MSG_667", - 0x30cd: "ER_IB_MSG_668", - 0x30ce: "ER_IB_MSG_669", - 0x30cf: "ER_IB_MSG_670", - 0x30d0: "ER_IB_MSG_671", - 0x30d1: "ER_IB_MSG_672", - 0x30d2: "ER_IB_MSG_673", - 0x30d3: "ER_IB_MSG_674", - 0x30d4: "ER_IB_MSG_675", - 0x30d5: "ER_IB_MSG_676", - 0x30d6: "ER_IB_MSG_677", - 0x30d7: "ER_IB_MSG_678", - 0x30d8: "ER_IB_MSG_679", - 0x30d9: "ER_IB_MSG_680", - 0x30da: "ER_IB_MSG_681", - 0x30db: "ER_IB_MSG_682", - 0x30dc: "ER_IB_MSG_683", - 0x30dd: "ER_IB_MSG_684", - 0x30de: "ER_IB_MSG_685", - 0x30df: "ER_IB_MSG_686", - 0x30e0: "ER_IB_MSG_687", - 0x30e1: "ER_IB_MSG_688", - 0x30e2: "ER_IB_MSG_689", - 0x30e3: "ER_IB_MSG_690", - 0x30e4: "ER_IB_MSG_691", - 0x30e5: "ER_IB_MSG_692", - 0x30e6: "ER_IB_MSG_693", - 0x30e7: "ER_IB_MSG_694", - 0x30e8: "ER_IB_MSG_695", - 0x30e9: "ER_IB_MSG_696", - 0x30ea: "ER_IB_MSG_697", - 0x30eb: "ER_IB_MSG_698", - 0x30ec: "ER_IB_MSG_699", - 0x30ed: "ER_IB_MSG_700", - 0x30ee: "ER_IB_MSG_701", - 0x30ef: "ER_IB_MSG_702", - 0x30f0: "ER_IB_MSG_703", - 0x30f1: "ER_IB_MSG_704", - 0x30f2: "ER_IB_MSG_705", - 0x30f3: "ER_IB_MSG_706", - 0x30f4: "ER_IB_MSG_707", - 0x30f5: "ER_IB_MSG_708", - 0x30f6: "ER_IB_MSG_709", - 0x30f7: "ER_IB_MSG_710", - 0x30f8: "ER_IB_MSG_711", - 0x30f9: "ER_IB_MSG_712", - 0x30fa: "ER_IB_MSG_713", - 0x30fb: "ER_IB_MSG_714", - 0x30fc: "ER_IB_MSG_715", - 0x30fd: "ER_IB_MSG_716", - 0x30fe: "ER_IB_MSG_717", - 0x30ff: "ER_IB_MSG_718", - 0x3100: "ER_IB_MSG_719", - 0x3101: "ER_IB_MSG_720", - 0x3102: "ER_IB_MSG_721", - 0x3103: "ER_IB_MSG_722", - 0x3104: "ER_IB_MSG_723", - 0x3105: "ER_IB_MSG_724", - 0x3106: "ER_IB_MSG_725", - 0x3107: "ER_IB_MSG_726", - 0x3108: "ER_IB_MSG_727", - 0x3109: "ER_IB_MSG_728", - 0x310a: "ER_IB_MSG_729", - 0x310b: "ER_IB_MSG_730", - 0x310c: "ER_IB_MSG_731", - 0x310d: "ER_IB_MSG_732", - 0x310e: "ER_IB_MSG_733", - 0x310f: "ER_IB_MSG_734", - 0x3110: "ER_IB_MSG_735", - 0x3111: "ER_IB_MSG_736", - 0x3112: "ER_IB_MSG_737", - 0x3113: "ER_IB_MSG_738", - 0x3114: "ER_IB_MSG_739", - 0x3115: "ER_IB_MSG_740", - 0x3116: "ER_IB_MSG_741", - 0x3117: "ER_IB_MSG_742", - 0x3118: "ER_IB_MSG_743", - 0x3119: "ER_IB_MSG_744", - 0x311a: "ER_IB_MSG_745", - 0x311b: "ER_IB_MSG_746", - 0x311c: "ER_IB_MSG_747", - 0x311d: "ER_IB_MSG_748", - 0x311e: "ER_IB_MSG_749", - 0x311f: "ER_IB_MSG_750", - 0x3120: "ER_IB_MSG_751", - 0x3121: "ER_IB_MSG_752", - 0x3122: "ER_IB_MSG_753", - 0x3123: "ER_IB_MSG_754", - 0x3124: "ER_IB_MSG_755", - 0x3125: "ER_IB_MSG_756", - 0x3126: "ER_IB_MSG_757", - 0x3127: "ER_IB_MSG_758", - 0x3128: "ER_IB_MSG_759", - 0x3129: "ER_IB_MSG_760", - 0x312a: "ER_IB_MSG_761", - 0x312b: "ER_IB_MSG_762", - 0x312c: "ER_IB_MSG_763", - 0x312d: "ER_IB_MSG_764", - 0x312e: "ER_IB_MSG_765", - 0x312f: "ER_IB_MSG_766", - 0x3130: "ER_IB_MSG_767", - 0x3131: "ER_IB_MSG_768", - 0x3132: "ER_IB_MSG_769", - 0x3133: "ER_IB_MSG_770", - 0x3134: "ER_IB_MSG_771", - 0x3135: "ER_IB_MSG_772", - 0x3136: "ER_IB_MSG_773", - 0x3137: "ER_IB_MSG_774", - 0x3138: "ER_IB_MSG_775", - 0x3139: "ER_IB_MSG_776", - 0x313a: "ER_IB_MSG_777", - 0x313b: "ER_IB_MSG_778", - 0x313c: "ER_IB_MSG_779", - 0x313d: "ER_IB_MSG_780", - 0x313e: "ER_IB_MSG_781", - 0x313f: "ER_IB_MSG_782", - 0x3140: "ER_IB_MSG_783", - 0x3141: "ER_IB_MSG_784", - 0x3142: "ER_IB_MSG_785", - 0x3143: "ER_IB_MSG_786", - 0x3144: "ER_IB_MSG_787", - 0x3145: "ER_IB_MSG_788", - 0x3146: "ER_IB_MSG_789", - 0x3147: "ER_IB_MSG_790", - 0x3148: "ER_IB_MSG_791", - 0x3149: "ER_IB_MSG_792", - 0x314a: "ER_IB_MSG_793", - 0x314b: "ER_IB_MSG_794", - 0x314c: "ER_IB_MSG_795", - 0x314d: "ER_IB_MSG_796", - 0x314e: "ER_IB_MSG_797", - 0x314f: "ER_IB_MSG_798", - 0x3150: "ER_IB_MSG_799", - 0x3151: "ER_IB_MSG_800", - 0x3152: "ER_IB_MSG_801", - 0x3153: "ER_IB_MSG_802", - 0x3154: "ER_IB_MSG_803", - 0x3155: "ER_IB_MSG_804", - 0x3156: "ER_IB_MSG_805", - 0x3157: "ER_IB_MSG_806", - 0x3158: "ER_IB_MSG_807", - 0x3159: "ER_IB_MSG_808", - 0x315a: "ER_IB_MSG_809", - 0x315b: "ER_IB_MSG_810", - 0x315c: "ER_IB_MSG_811", - 0x315d: "ER_IB_MSG_812", - 0x315e: "ER_IB_MSG_813", - 0x315f: "ER_IB_MSG_814", - 0x3160: "ER_IB_MSG_815", - 0x3161: "ER_IB_MSG_816", - 0x3162: "ER_IB_MSG_817", - 0x3163: "ER_IB_MSG_818", - 0x3164: "ER_IB_MSG_819", - 0x3165: "ER_IB_MSG_820", - 0x3166: "ER_IB_MSG_821", - 0x3167: "ER_IB_MSG_822", - 0x3168: "ER_IB_MSG_823", - 0x3169: "ER_IB_MSG_824", - 0x316a: "ER_IB_MSG_825", - 0x316b: "ER_IB_MSG_826", - 0x316c: "ER_IB_MSG_827", - 0x316d: "ER_IB_MSG_828", - 0x316e: "ER_IB_MSG_829", - 0x316f: "ER_IB_MSG_830", - 0x3170: "ER_IB_MSG_831", - 0x3171: "ER_IB_MSG_832", - 0x3172: "ER_IB_MSG_833", - 0x3173: "ER_IB_MSG_834", - 0x3174: "ER_IB_MSG_835", - 0x3175: "ER_IB_MSG_836", - 0x3176: "ER_IB_MSG_837", - 0x3177: "ER_IB_MSG_838", - 0x3178: "ER_IB_MSG_839", - 0x3179: "ER_IB_MSG_840", - 0x317a: "ER_IB_MSG_841", - 0x317b: "ER_IB_MSG_842", - 0x317c: "ER_IB_MSG_843", - 0x317d: "ER_IB_MSG_844", - 0x317e: "ER_IB_MSG_845", - 0x317f: "ER_IB_MSG_846", - 0x3180: "ER_IB_MSG_847", - 0x3181: "ER_IB_MSG_848", - 0x3182: "ER_IB_MSG_849", - 0x3183: "ER_IB_MSG_850", - 0x3184: "ER_IB_MSG_851", - 0x3185: "ER_IB_MSG_852", - 0x3186: "ER_IB_MSG_853", - 0x3187: "ER_IB_MSG_854", - 0x3188: "ER_IB_MSG_855", - 0x3189: "ER_IB_MSG_856", - 0x318a: "ER_IB_MSG_857", - 0x318b: "ER_IB_MSG_858", - 0x318c: "ER_IB_MSG_859", - 0x318d: "ER_IB_MSG_860", - 0x318e: "ER_IB_MSG_861", - 0x318f: "ER_IB_MSG_862", - 0x3190: "ER_IB_MSG_863", - 0x3191: "ER_IB_MSG_864", - 0x3192: "ER_IB_MSG_865", - 0x3193: "ER_IB_MSG_866", - 0x3194: "ER_IB_MSG_867", - 0x3195: "ER_IB_MSG_868", - 0x3196: "ER_IB_MSG_869", - 0x3197: "ER_IB_MSG_870", - 0x3198: "ER_IB_MSG_871", - 0x3199: "ER_IB_MSG_872", - 0x319a: "ER_IB_MSG_873", - 0x319b: "ER_IB_MSG_874", - 0x319c: "ER_IB_MSG_875", - 0x319d: "ER_IB_MSG_876", - 0x319e: "ER_IB_MSG_877", - 0x319f: "ER_IB_MSG_878", - 0x31a0: "ER_IB_MSG_879", - 0x31a1: "ER_IB_MSG_880", - 0x31a2: "ER_IB_MSG_881", - 0x31a3: "ER_IB_MSG_882", - 0x31a4: "ER_IB_MSG_883", - 0x31a5: "ER_IB_MSG_884", - 0x31a6: "ER_IB_MSG_885", - 0x31a7: "ER_IB_MSG_886", - 0x31a8: "ER_IB_MSG_887", - 0x31a9: "ER_IB_MSG_888", - 0x31aa: "ER_IB_MSG_889", - 0x31ab: "ER_IB_MSG_890", - 0x31ac: "ER_IB_MSG_891", - 0x31ad: "ER_IB_MSG_892", - 0x31ae: "ER_IB_MSG_893", - 0x31af: "ER_IB_MSG_894", - 0x31b0: "ER_IB_MSG_895", - 0x31b1: "ER_IB_MSG_896", - 0x31b2: "ER_IB_MSG_897", - 0x31b3: "ER_IB_MSG_898", - 0x31b4: "ER_IB_MSG_899", - 0x31b5: "ER_IB_MSG_900", - 0x31b6: "ER_IB_MSG_901", - 0x31b7: "ER_IB_MSG_902", - 0x31b8: "ER_IB_MSG_903", - 0x31b9: "ER_IB_MSG_904", - 0x31ba: "ER_IB_MSG_905", - 0x31bb: "ER_IB_MSG_906", - 0x31bc: "ER_IB_MSG_907", - 0x31bd: "ER_IB_MSG_908", - 0x31be: "ER_IB_MSG_909", - 0x31bf: "ER_IB_MSG_910", - 0x31c0: "ER_IB_MSG_911", - 0x31c1: "ER_IB_MSG_912", - 0x31c2: "ER_IB_MSG_913", - 0x31c3: "ER_IB_MSG_914", - 0x31c4: "ER_IB_MSG_915", - 0x31c5: "ER_IB_MSG_916", - 0x31c6: "ER_IB_MSG_917", - 0x31c7: "ER_IB_MSG_918", - 0x31c8: "ER_IB_MSG_919", - 0x31c9: "ER_IB_MSG_920", - 0x31ca: "ER_IB_MSG_921", - 0x31cb: "ER_IB_MSG_922", - 0x31cc: "ER_IB_MSG_923", - 0x31cd: "ER_IB_MSG_924", - 0x31ce: "ER_IB_MSG_925", - 0x31cf: "ER_IB_MSG_926", - 0x31d0: "ER_IB_MSG_927", - 0x31d1: "ER_IB_MSG_928", - 0x31d2: "ER_IB_MSG_929", - 0x31d3: "ER_IB_MSG_930", - 0x31d4: "ER_IB_MSG_931", - 0x31d5: "ER_IB_MSG_932", - 0x31d6: "ER_IB_MSG_933", - 0x31d7: "ER_IB_MSG_934", - 0x31d8: "ER_IB_MSG_935", - 0x31d9: "ER_IB_MSG_936", - 0x31da: "ER_IB_MSG_937", - 0x31db: "ER_IB_MSG_938", - 0x31dc: "ER_IB_MSG_939", - 0x31dd: "ER_IB_MSG_940", - 0x31de: "ER_IB_MSG_941", - 0x31df: "ER_IB_MSG_942", - 0x31e0: "ER_IB_MSG_943", - 0x31e1: "ER_IB_MSG_944", - 0x31e2: "ER_IB_MSG_945", - 0x31e3: "ER_IB_MSG_946", - 0x31e4: "ER_IB_MSG_947", - 0x31e5: "ER_IB_MSG_948", - 0x31e6: "ER_IB_MSG_949", - 0x31e7: "ER_IB_MSG_950", - 0x31e8: "ER_IB_MSG_951", - 0x31e9: "ER_IB_MSG_952", - 0x31ea: "ER_IB_MSG_953", - 0x31eb: "ER_IB_MSG_954", - 0x31ec: "ER_IB_MSG_955", - 0x31ed: "ER_IB_MSG_956", - 0x31ee: "ER_IB_MSG_957", - 0x31ef: "ER_IB_MSG_958", - 0x31f0: "ER_IB_MSG_959", - 0x31f1: "ER_IB_MSG_960", - 0x31f2: "ER_IB_MSG_961", - 0x31f3: "ER_IB_MSG_962", - 0x31f4: "ER_IB_MSG_963", - 0x31f5: "ER_IB_MSG_964", - 0x31f6: "ER_IB_MSG_965", - 0x31f7: "ER_IB_MSG_966", - 0x31f8: "ER_IB_MSG_967", - 0x31f9: "ER_IB_MSG_968", - 0x31fa: "ER_IB_MSG_969", - 0x31fb: "ER_IB_MSG_970", - 0x31fc: "ER_IB_MSG_971", - 0x31fd: "ER_IB_MSG_972", - 0x31fe: "ER_IB_MSG_973", - 0x31ff: "ER_IB_MSG_974", - 0x3200: "ER_IB_MSG_975", - 0x3201: "ER_IB_MSG_976", - 0x3202: "ER_IB_MSG_977", - 0x3203: "ER_IB_MSG_978", - 0x3204: "ER_IB_MSG_979", - 0x3205: "ER_IB_MSG_980", - 0x3206: "ER_IB_MSG_981", - 0x3207: "ER_IB_MSG_982", - 0x3208: "ER_IB_MSG_983", - 0x3209: "ER_IB_MSG_984", - 0x320a: "ER_IB_MSG_985", - 0x320b: "ER_IB_MSG_986", - 0x320c: "ER_IB_MSG_987", - 0x320d: "ER_IB_MSG_988", - 0x320e: "ER_IB_MSG_989", - 0x320f: "ER_IB_MSG_990", - 0x3210: "ER_IB_MSG_991", - 0x3211: "ER_IB_MSG_992", - 0x3212: "ER_IB_MSG_993", - 0x3213: "ER_IB_MSG_994", - 0x3214: "ER_IB_MSG_995", - 0x3215: "ER_IB_MSG_996", - 0x3216: "ER_IB_MSG_997", - 0x3217: "ER_IB_MSG_998", - 0x3218: "ER_IB_MSG_999", - 0x3219: "ER_IB_MSG_1000", - 0x321a: "ER_IB_MSG_1001", - 0x321b: "ER_IB_MSG_1002", - 0x321c: "ER_IB_MSG_1003", - 0x321d: "ER_IB_MSG_1004", - 0x321e: "ER_IB_MSG_1005", - 0x321f: "ER_IB_MSG_1006", - 0x3220: "ER_IB_MSG_1007", - 0x3221: "ER_IB_MSG_1008", - 0x3222: "ER_IB_MSG_1009", - 0x3223: "ER_IB_MSG_1010", - 0x3224: "ER_IB_MSG_1011", - 0x3225: "ER_IB_MSG_1012", - 0x3226: "ER_IB_MSG_1013", - 0x3227: "ER_IB_MSG_1014", - 0x3228: "ER_IB_MSG_1015", - 0x3229: "ER_IB_MSG_1016", - 0x322a: "ER_IB_MSG_1017", - 0x322b: "ER_IB_MSG_1018", - 0x322c: "ER_IB_MSG_1019", - 0x322d: "ER_IB_MSG_1020", - 0x322e: "ER_IB_MSG_1021", - 0x322f: "ER_IB_MSG_1022", - 0x3230: "ER_IB_MSG_1023", - 0x3231: "ER_IB_MSG_1024", - 0x3232: "ER_IB_MSG_1025", - 0x3233: "ER_IB_MSG_1026", - 0x3234: "ER_IB_MSG_1027", - 0x3235: "ER_IB_MSG_1028", - 0x3236: "ER_IB_MSG_1029", - 0x3237: "ER_IB_MSG_1030", - 0x3238: "ER_IB_MSG_1031", - 0x3239: "ER_IB_MSG_1032", - 0x323a: "ER_IB_MSG_1033", - 0x323b: "ER_IB_MSG_1034", - 0x323c: "ER_IB_MSG_1035", - 0x323d: "ER_IB_MSG_1036", - 0x323e: "ER_IB_MSG_1037", - 0x323f: "ER_IB_MSG_1038", - 0x3240: "ER_IB_MSG_1039", - 0x3241: "ER_IB_MSG_1040", - 0x3242: "ER_IB_MSG_1041", - 0x3243: "ER_IB_MSG_1042", - 0x3244: "ER_IB_MSG_1043", - 0x3245: "ER_IB_MSG_1044", - 0x3246: "ER_IB_MSG_1045", - 0x3247: "ER_IB_MSG_1046", - 0x3248: "ER_IB_MSG_1047", - 0x3249: "ER_IB_MSG_1048", - 0x324a: "ER_IB_MSG_1049", - 0x324b: "ER_IB_MSG_1050", - 0x324c: "ER_IB_MSG_1051", - 0x324d: "ER_IB_MSG_1052", - 0x324e: "ER_IB_MSG_1053", - 0x324f: "ER_IB_MSG_1054", - 0x3250: "ER_IB_MSG_1055", - 0x3251: "ER_IB_MSG_1056", - 0x3252: "ER_IB_MSG_1057", - 0x3253: "ER_IB_MSG_1058", - 0x3254: "ER_IB_MSG_1059", - 0x3255: "ER_IB_MSG_1060", - 0x3256: "ER_IB_MSG_1061", - 0x3257: "ER_IB_MSG_1062", - 0x3258: "ER_IB_MSG_1063", - 0x3259: "ER_IB_MSG_1064", - 0x325a: "ER_IB_MSG_1065", - 0x325b: "ER_IB_MSG_1066", - 0x325c: "ER_IB_MSG_1067", - 0x325d: "ER_IB_MSG_1068", - 0x325e: "ER_IB_MSG_1069", - 0x325f: "ER_IB_MSG_1070", - 0x3260: "ER_IB_MSG_1071", - 0x3261: "ER_IB_MSG_1072", - 0x3262: "ER_IB_MSG_1073", - 0x3263: "ER_IB_MSG_1074", - 0x3264: "ER_IB_MSG_1075", - 0x3265: "ER_IB_MSG_1076", - 0x3266: "ER_IB_MSG_1077", - 0x3267: "ER_IB_MSG_1078", - 0x3268: "ER_IB_MSG_1079", - 0x3269: "ER_IB_MSG_1080", - 0x326a: "ER_IB_MSG_1081", - 0x326b: "ER_IB_MSG_1082", - 0x326c: "ER_IB_MSG_1083", - 0x326d: "ER_IB_MSG_1084", - 0x326e: "ER_IB_MSG_1085", - 0x326f: "ER_IB_MSG_1086", - 0x3270: "ER_IB_MSG_1087", - 0x3271: "ER_IB_MSG_1088", - 0x3272: "ER_IB_MSG_1089", - 0x3273: "ER_IB_MSG_1090", - 0x3274: "ER_IB_MSG_1091", - 0x3275: "ER_IB_MSG_1092", - 0x3276: "ER_IB_MSG_1093", - 0x3277: "ER_IB_MSG_1094", - 0x3278: "ER_IB_MSG_1095", - 0x3279: "ER_IB_MSG_1096", - 0x327a: "ER_IB_MSG_1097", - 0x327b: "ER_IB_MSG_1098", - 0x327c: "ER_IB_MSG_1099", - 0x327d: "ER_IB_MSG_1100", - 0x327e: "ER_IB_MSG_1101", - 0x327f: "ER_IB_MSG_1102", - 0x3280: "ER_IB_MSG_1103", - 0x3281: "ER_IB_MSG_1104", - 0x3282: "ER_IB_MSG_1105", - 0x3283: "ER_IB_MSG_1106", - 0x3284: "ER_IB_MSG_1107", - 0x3285: "ER_IB_MSG_1108", - 0x3286: "ER_IB_MSG_1109", - 0x3287: "ER_IB_MSG_1110", - 0x3288: "ER_IB_MSG_1111", - 0x3289: "ER_IB_MSG_1112", - 0x328a: "ER_IB_MSG_1113", - 0x328b: "ER_IB_MSG_1114", - 0x328c: "ER_IB_MSG_1115", - 0x328d: "ER_IB_MSG_1116", - 0x328e: "ER_IB_MSG_1117", - 0x328f: "ER_IB_MSG_1118", - 0x3290: "ER_IB_MSG_1119", - 0x3291: "ER_IB_MSG_1120", - 0x3292: "ER_IB_MSG_1121", - 0x3293: "ER_IB_MSG_1122", - 0x3294: "ER_IB_MSG_1123", - 0x3295: "ER_IB_MSG_1124", - 0x3296: "ER_IB_MSG_1125", - 0x3297: "ER_IB_MSG_1126", - 0x3298: "ER_IB_MSG_1127", - 0x3299: "ER_IB_MSG_1128", - 0x329a: "ER_IB_MSG_1129", - 0x329b: "ER_IB_MSG_1130", - 0x329c: "ER_IB_MSG_1131", - 0x329d: "ER_IB_MSG_1132", - 0x329e: "ER_IB_MSG_1133", - 0x329f: "ER_IB_MSG_1134", - 0x32a0: "ER_IB_MSG_1135", - 0x32a1: "ER_IB_MSG_1136", - 0x32a2: "ER_IB_MSG_1137", - 0x32a3: "ER_IB_MSG_1138", - 0x32a4: "ER_IB_MSG_1139", - 0x32a5: "ER_IB_MSG_1140", - 0x32a6: "ER_IB_MSG_1141", - 0x32a7: "ER_IB_MSG_1142", - 0x32a8: "ER_IB_MSG_1143", - 0x32a9: "ER_IB_MSG_1144", - 0x32aa: "ER_IB_MSG_1145", - 0x32ab: "ER_IB_MSG_1146", - 0x32ac: "ER_IB_MSG_1147", - 0x32ad: "ER_IB_MSG_1148", - 0x32ae: "ER_IB_MSG_1149", - 0x32af: "ER_IB_MSG_1150", - 0x32b0: "ER_IB_MSG_1151", - 0x32b1: "ER_IB_MSG_1152", - 0x32b2: "ER_IB_MSG_1153", - 0x32b3: "ER_IB_MSG_1154", - 0x32b4: "ER_IB_MSG_1155", - 0x32b5: "ER_IB_MSG_1156", - 0x32b6: "ER_IB_MSG_1157", - 0x32b7: "ER_IB_MSG_1158", - 0x32b8: "ER_IB_MSG_1159", - 0x32b9: "ER_IB_MSG_1160", - 0x32ba: "ER_IB_MSG_1161", - 0x32bb: "ER_IB_MSG_1162", - 0x32bc: "ER_IB_MSG_1163", - 0x32bd: "ER_IB_MSG_1164", - 0x32be: "ER_IB_MSG_1165", - 0x32bf: "ER_IB_MSG_1166", - 0x32c0: "ER_IB_MSG_1167", - 0x32c1: "ER_IB_MSG_1168", - 0x32c2: "ER_IB_MSG_1169", - 0x32c3: "ER_IB_MSG_1170", - 0x32c4: "ER_IB_MSG_1171", - 0x32c5: "ER_IB_MSG_1172", - 0x32c6: "ER_IB_MSG_1173", - 0x32c7: "ER_IB_MSG_1174", - 0x32c8: "ER_IB_MSG_1175", - 0x32c9: "ER_IB_MSG_1176", - 0x32ca: "ER_IB_MSG_1177", - 0x32cb: "ER_IB_MSG_1178", - 0x32cc: "ER_IB_MSG_1179", - 0x32cd: "ER_IB_MSG_1180", - 0x32ce: "ER_IB_MSG_1181", - 0x32cf: "ER_IB_MSG_1182", - 0x32d0: "ER_IB_MSG_1183", - 0x32d1: "ER_IB_MSG_1184", - 0x32d2: "ER_IB_MSG_1185", - 0x32d3: "ER_IB_MSG_1186", - 0x32d4: "ER_IB_MSG_1187", - 0x32d5: "ER_IB_MSG_1188", - 0x32d6: "ER_IB_MSG_1189", - 0x32d7: "ER_IB_MSG_1190", - 0x32d8: "ER_IB_MSG_1191", - 0x32d9: "ER_IB_MSG_1192", - 0x32da: "ER_IB_MSG_1193", - 0x32db: "ER_IB_MSG_1194", - 0x32dc: "ER_IB_MSG_1195", - 0x32dd: "ER_IB_MSG_1196", - 0x32de: "ER_IB_MSG_1197", - 0x32df: "ER_IB_MSG_1198", - 0x32e0: "ER_IB_MSG_1199", - 0x32e1: "ER_IB_MSG_1200", - 0x32e2: "ER_IB_MSG_1201", - 0x32e3: "ER_IB_MSG_1202", - 0x32e4: "ER_IB_MSG_1203", - 0x32e5: "ER_IB_MSG_1204", - 0x32e6: "ER_IB_MSG_1205", - 0x32e7: "ER_IB_MSG_1206", - 0x32e8: "ER_IB_MSG_1207", - 0x32e9: "ER_IB_MSG_1208", - 0x32ea: "ER_IB_MSG_1209", - 0x32eb: "ER_IB_MSG_1210", - 0x32ec: "ER_IB_MSG_1211", - 0x32ed: "ER_IB_MSG_1212", - 0x32ee: "ER_IB_MSG_1213", - 0x32ef: "ER_IB_MSG_1214", - 0x32f0: "ER_IB_MSG_1215", - 0x32f1: "ER_IB_MSG_1216", - 0x32f2: "ER_IB_MSG_1217", - 0x32f3: "ER_IB_MSG_1218", - 0x32f4: "ER_IB_MSG_1219", - 0x32f5: "ER_IB_MSG_1220", - 0x32f6: "ER_IB_MSG_1221", - 0x32f7: "ER_IB_MSG_1222", - 0x32f8: "ER_IB_MSG_1223", - 0x32f9: "ER_IB_MSG_1224", - 0x32fa: "ER_IB_MSG_1225", - 0x32fb: "ER_IB_MSG_1226", - 0x32fc: "ER_IB_MSG_1227", - 0x32fd: "ER_IB_MSG_1228", - 0x32fe: "ER_IB_MSG_1229", - 0x32ff: "ER_IB_MSG_1230", - 0x3300: "ER_IB_MSG_1231", - 0x3301: "ER_IB_MSG_1232", - 0x3302: "ER_IB_MSG_1233", - 0x3303: "ER_IB_MSG_1234", - 0x3304: "ER_IB_MSG_1235", - 0x3305: "ER_IB_MSG_1236", - 0x3306: "ER_IB_MSG_1237", - 0x3307: "ER_IB_MSG_1238", - 0x3308: "ER_IB_MSG_1239", - 0x3309: "ER_IB_MSG_1240", - 0x330a: "ER_IB_MSG_1241", - 0x330b: "ER_IB_MSG_1242", - 0x330c: "ER_IB_MSG_1243", - 0x330d: "ER_IB_MSG_1244", - 0x330e: "ER_IB_MSG_1245", - 0x330f: "ER_IB_MSG_1246", - 0x3310: "ER_IB_MSG_1247", - 0x3311: "ER_IB_MSG_1248", - 0x3312: "ER_IB_MSG_1249", - 0x3313: "ER_IB_MSG_1250", - 0x3314: "ER_IB_MSG_1251", - 0x3315: "ER_IB_MSG_1252", - 0x3316: "ER_IB_MSG_1253", - 0x3317: "ER_IB_MSG_1254", - 0x3318: "ER_IB_MSG_1255", - 0x3319: "ER_IB_MSG_1256", - 0x331a: "ER_IB_MSG_1257", - 0x331b: "ER_IB_MSG_1258", - 0x331c: "ER_IB_MSG_1259", - 0x331d: "ER_IB_MSG_1260", - 0x331e: "ER_IB_MSG_1261", - 0x331f: "ER_IB_MSG_1262", - 0x3320: "ER_IB_MSG_1263", - 0x3321: "ER_IB_MSG_1264", - 0x3322: "ER_IB_MSG_1265", - 0x3323: "ER_IB_MSG_1266", - 0x3324: "ER_IB_MSG_1267", - 0x3325: "ER_IB_MSG_1268", - 0x3326: "ER_IB_MSG_1269", - 0x3327: "ER_IB_MSG_1270", - 0x3328: "ER_RPL_SLAVE_SQL_THREAD_STOP_CMD_EXEC_TIMEOUT", - 0x3329: "ER_RPL_SLAVE_IO_THREAD_STOP_CMD_EXEC_TIMEOUT", - 0x332a: "ER_RPL_GTID_UNSAFE_STMT_ON_NON_TRANS_TABLE", - 0x332b: "ER_RPL_GTID_UNSAFE_STMT_CREATE_SELECT", - 0x332c: "ER_RPL_GTID_UNSAFE_STMT_ON_TEMPORARY_TABLE", - 0x332d: "ER_BINLOG_ROW_VALUE_OPTION_IGNORED", - 0x332e: "ER_BINLOG_USE_V1_ROW_EVENTS_IGNORED", - 0x332f: "ER_BINLOG_ROW_VALUE_OPTION_USED_ONLY_FOR_AFTER_IMAGES", - 0x3330: "ER_CONNECTION_ABORTED", - 0x3331: "ER_NORMAL_SERVER_SHUTDOWN", - 0x3332: "ER_KEYRING_MIGRATE_FAILED", - 0x3333: "ER_GRP_RPL_LOWER_CASE_TABLE_NAMES_DIFF_FROM_GRP", - 0x3334: "ER_OOM_SAVE_GTIDS", - 0x3335: "ER_LCTN_NOT_FOUND", - 0x3336: "ER_REGEXP_INVALID_CAPTURE_GROUP_NAME", - 0x3337: "ER_COMPONENT_FILTER_WRONG_VALUE", - 0x3338: "ER_XPLUGIN_FAILED_TO_STOP_SERVICES", - 0x3339: "ER_INCONSISTENT_ERROR", - 0x333a: "ER_SERVER_MASTER_FATAL_ERROR_READING_BINLOG", - 0x333b: "ER_NETWORK_READ_EVENT_CHECKSUM_FAILURE", - 0x333c: "ER_SLAVE_CREATE_EVENT_FAILURE", - 0x333d: "ER_SLAVE_FATAL_ERROR", - 0x333e: "ER_SLAVE_HEARTBEAT_FAILURE", - 0x333f: "ER_SLAVE_INCIDENT", - 0x3340: "ER_SLAVE_MASTER_COM_FAILURE", - 0x3341: "ER_SLAVE_RELAY_LOG_READ_FAILURE", - 0x3342: "ER_SLAVE_RELAY_LOG_WRITE_FAILURE", - 0x3343: "ER_SERVER_SLAVE_MI_INIT_REPOSITORY", - 0x3344: "ER_SERVER_SLAVE_RLI_INIT_REPOSITORY", - 0x3345: "ER_SERVER_NET_PACKET_TOO_LARGE", - 0x3346: "ER_SERVER_NO_SYSTEM_TABLE_ACCESS", - 0x3347: "ER_SERVER_UNKNOWN_ERROR", - 0x3348: "ER_SERVER_UNKNOWN_SYSTEM_VARIABLE", - 0x3349: "ER_SERVER_NO_SESSION_TO_SEND_TO", - 0x334a: "ER_SERVER_NEW_ABORTING_CONNECTION", - 0x334b: "ER_SERVER_OUT_OF_SORTMEMORY", - 0x334c: "ER_SERVER_RECORD_FILE_FULL", - 0x334d: "ER_SERVER_DISK_FULL_NOWAIT", - 0x334e: "ER_SERVER_HANDLER_ERROR", - 0x334f: "ER_SERVER_NOT_FORM_FILE", - 0x3350: "ER_SERVER_CANT_OPEN_FILE", - 0x3351: "ER_SERVER_FILE_NOT_FOUND", - 0x3352: "ER_SERVER_FILE_USED", - 0x3353: "ER_SERVER_CANNOT_LOAD_FROM_TABLE_V2", - 0x3354: "ER_ERROR_INFO_FROM_DA", - 0x3355: "ER_SERVER_TABLE_CHECK_FAILED", - 0x3356: "ER_SERVER_COL_COUNT_DOESNT_MATCH_PLEASE_UPDATE_V2", - 0x3357: "ER_SERVER_COL_COUNT_DOESNT_MATCH_CORRUPTED_V2", - 0x3358: "ER_SERVER_ACL_TABLE_ERROR", - 0x3359: "ER_SERVER_SLAVE_INIT_QUERY_FAILED", - 0x335a: "ER_SERVER_SLAVE_CONVERSION_FAILED", - 0x335b: "ER_SERVER_SLAVE_IGNORED_TABLE", - 0x335c: "ER_CANT_REPLICATE_ANONYMOUS_WITH_AUTO_POSITION", - 0x335d: "ER_CANT_REPLICATE_ANONYMOUS_WITH_GTID_MODE_ON", - 0x335e: "ER_CANT_REPLICATE_GTID_WITH_GTID_MODE_OFF", - 0x335f: "ER_SERVER_TEST_MESSAGE", - 0x3360: "ER_AUDIT_LOG_JSON_FILTER_PARSING_ERROR", - 0x3361: "ER_AUDIT_LOG_JSON_FILTERING_NOT_ENABLED", - 0x3362: "ER_PLUGIN_FAILED_TO_OPEN_TABLES", - 0x3363: "ER_PLUGIN_FAILED_TO_OPEN_TABLE", - 0x3364: "ER_AUDIT_LOG_JSON_FILTER_NAME_CANNOT_BE_EMPTY", - 0x3365: "ER_AUDIT_LOG_USER_NAME_INVALID_CHARACTER", - 0x3366: "ER_AUDIT_LOG_UDF_INSUFFICIENT_PRIVILEGE", - 0x3367: "ER_AUDIT_LOG_NO_KEYRING_PLUGIN_INSTALLED", - 0x3368: "ER_AUDIT_LOG_HOST_NAME_INVALID_CHARACTER", - 0x3369: "ER_AUDIT_LOG_ENCRYPTION_PASSWORD_HAS_NOT_BEEN_SET", - 0x336a: "ER_AUDIT_LOG_COULD_NOT_CREATE_AES_KEY", - 0x336b: "ER_AUDIT_LOG_ENCRYPTION_PASSWORD_CANNOT_BE_FETCHED", - 0x336c: "ER_COULD_NOT_REINITIALIZE_AUDIT_LOG_FILTERS", - 0x336d: "ER_AUDIT_LOG_JSON_USER_NAME_CANNOT_BE_EMPTY", - 0x336e: "ER_AUDIT_LOG_USER_FIRST_CHARACTER_MUST_BE_ALPHANUMERIC", - 0x336f: "ER_AUDIT_LOG_JSON_FILTER_DOES_NOT_EXIST", - 0x3370: "ER_IB_MSG_1271", - 0x3371: "ER_STARTING_INIT", - 0x3372: "ER_ENDING_INIT", - 0x3373: "ER_IB_MSG_1272", - 0x3374: "ER_SERVER_SHUTDOWN_INFO", - 0x3375: "ER_GRP_RPL_PLUGIN_ABORT", - 0x3376: "ER_REGEXP_INVALID_FLAG", - 0x3377: "ER_XA_REPLICATION_FILTERS", - 0x3378: "ER_UPDATE_GTID_PURGED_WITH_GR", - 0x3379: "ER_AUDIT_LOG_TABLE_DEFINITION_NOT_UPDATED", - 0x337a: "ER_NO_PATH_FOR_SHARED_LIBRARY", - 0x337b: "ER_UDF_ALREADY_EXISTS", - 0x337c: "ER_SET_EVENT_FAILED", - 0x337d: "ER_FAILED_TO_ALLOCATE_SSL_BIO", - 0x337e: "ER_IB_MSG_1273", - 0x337f: "ER_PID_FILEPATH_LOCATIONS_INACCESSIBLE", - 0x3380: "ER_UNKNOWN_VARIABLE_IN_PERSISTED_CONFIG_FILE", - 0x3381: "ER_FAILED_TO_HANDLE_DEFAULTS_FILE", - 0x3382: "ER_DUPLICATE_SYS_VAR", - 0x3383: "ER_FAILED_TO_INIT_SYS_VAR", - 0x3384: "ER_SYS_VAR_NOT_FOUND", +var ErrorCodes = map[uint16]string{ + 0x03e8: "ER_HASHCHK", + 0x03e9: "ER_NISAMCHK", + 0x03ea: "ER_NO", + 0x03eb: "ER_YES", + 0x03ec: "ER_CANT_CREATE_FILE", + 0x03ed: "ER_CANT_CREATE_TABLE", + 0x03ee: "ER_CANT_CREATE_DB", + 0x03ef: "ER_DB_CREATE_EXISTS", + 0x03f0: "ER_DB_DROP_EXISTS", + 0x03f1: "ER_DB_DROP_DELETE", + 0x03f2: "ER_DB_DROP_RMDIR", + 0x03f3: "ER_CANT_DELETE_FILE", + 0x03f4: "ER_CANT_FIND_SYSTEM_REC", + 0x03f5: "ER_CANT_GET_STAT", + 0x03f6: "ER_CANT_GET_WD", + 0x03f7: "ER_CANT_LOCK", + 0x03f8: "ER_CANT_OPEN_FILE", + 0x03f9: "ER_FILE_NOT_FOUND", + 0x03fa: "ER_CANT_READ_DIR", + 0x03fb: "ER_CANT_SET_WD", + 0x03fc: "ER_CHECKREAD", + 0x03fd: "ER_DISK_FULL", + 0x03fe: "ER_DUP_KEY", + 0x03ff: "ER_ERROR_ON_CLOSE", + 0x0400: "ER_ERROR_ON_READ", + 0x0401: "ER_ERROR_ON_RENAME", + 0x0402: "ER_ERROR_ON_WRITE", + 0x0403: "ER_FILE_USED", + 0x0404: "ER_FILSORT_ABORT", + 0x0405: "ER_FORM_NOT_FOUND", + 0x0406: "ER_GET_ERRNO", + 0x0407: "ER_ILLEGAL_HA", + 0x0408: "ER_KEY_NOT_FOUND", + 0x0409: "ER_NOT_FORM_FILE", + 0x040a: "ER_NOT_KEYFILE", + 0x040b: "ER_OLD_KEYFILE", + 0x040c: "ER_OPEN_AS_READONLY", + 0x040d: "ER_OUTOFMEMORY", + 0x040e: "ER_OUT_OF_SORTMEMORY", + 0x040f: "ER_UNEXPECTED_EOF", + 0x0410: "ER_CON_COUNT_ERROR", + 0x0411: "ER_OUT_OF_RESOURCES", + 0x0412: "ER_BAD_HOST_ERROR", + 0x0413: "ER_HANDSHAKE_ERROR", + 0x0414: "ER_DBACCESS_DENIED_ERROR", + 0x0415: "ER_ACCESS_DENIED_ERROR", + 0x0416: "ER_NO_DB_ERROR", + 0x0417: "ER_UNKNOWN_COM_ERROR", + 0x0418: "ER_BAD_NULL_ERROR", + 0x0419: "ER_BAD_DB_ERROR", + 0x041a: "ER_TABLE_EXISTS_ERROR", + 0x041b: "ER_BAD_TABLE_ERROR", + 0x041c: "ER_NON_UNIQ_ERROR", + 0x041d: "ER_SERVER_SHUTDOWN", + 0x041e: "ER_BAD_FIELD_ERROR", + 0x041f: "ER_WRONG_FIELD_WITH_GROUP", + 0x0420: "ER_WRONG_GROUP_FIELD", + 0x0421: "ER_WRONG_SUM_SELECT", + 0x0422: "ER_WRONG_VALUE_COUNT", + 0x0423: "ER_TOO_LONG_IDENT", + 0x0424: "ER_DUP_FIELDNAME", + 0x0425: "ER_DUP_KEYNAME", + 0x0426: "ER_DUP_ENTRY", + 0x0427: "ER_WRONG_FIELD_SPEC", + 0x0428: "ER_PARSE_ERROR", + 0x0429: "ER_EMPTY_QUERY", + 0x042a: "ER_NONUNIQ_TABLE", + 0x042b: "ER_INVALID_DEFAULT", + 0x042c: "ER_MULTIPLE_PRI_KEY", + 0x042d: "ER_TOO_MANY_KEYS", + 0x042e: "ER_TOO_MANY_KEY_PARTS", + 0x042f: "ER_TOO_LONG_KEY", + 0x0430: "ER_KEY_COLUMN_DOES_NOT_EXITS", + 0x0431: "ER_BLOB_USED_AS_KEY", + 0x0432: "ER_TOO_BIG_FIELDLENGTH", + 0x0433: "ER_WRONG_AUTO_KEY", + 0x0434: "ER_READY", + 0x0435: "ER_NORMAL_SHUTDOWN", + 0x0436: "ER_GOT_SIGNAL", + 0x0437: "ER_SHUTDOWN_COMPLETE", + 0x0438: "ER_FORCING_CLOSE", + 0x0439: "ER_IPSOCK_ERROR", + 0x043a: "ER_NO_SUCH_INDEX", + 0x043b: "ER_WRONG_FIELD_TERMINATORS", + 0x043c: "ER_BLOBS_AND_NO_TERMINATED", + 0x043d: "ER_TEXTFILE_NOT_READABLE", + 0x043e: "ER_FILE_EXISTS_ERROR", + 0x043f: "ER_LOAD_INFO", + 0x0440: "ER_ALTER_INFO", + 0x0441: "ER_WRONG_SUB_KEY", + 0x0442: "ER_CANT_REMOVE_ALL_FIELDS", + 0x0443: "ER_CANT_DROP_FIELD_OR_KEY", + 0x0444: "ER_INSERT_INFO", + 0x0445: "ER_UPDATE_TABLE_USED", + 0x0446: "ER_NO_SUCH_THREAD", + 0x0447: "ER_KILL_DENIED_ERROR", + 0x0448: "ER_NO_TABLES_USED", + 0x0449: "ER_TOO_BIG_SET", + 0x044a: "ER_NO_UNIQUE_LOGFILE", + 0x044b: "ER_TABLE_NOT_LOCKED_FOR_WRITE", + 0x044c: "ER_TABLE_NOT_LOCKED", + 0x044d: "ER_BLOB_CANT_HAVE_DEFAULT", + 0x044e: "ER_WRONG_DB_NAME", + 0x044f: "ER_WRONG_TABLE_NAME", + 0x0450: "ER_TOO_BIG_SELECT", + 0x0451: "ER_UNKNOWN_ERROR", + 0x0452: "ER_UNKNOWN_PROCEDURE", + 0x0453: "ER_WRONG_PARAMCOUNT_TO_PROCEDURE", + 0x0454: "ER_WRONG_PARAMETERS_TO_PROCEDURE", + 0x0455: "ER_UNKNOWN_TABLE", + 0x0456: "ER_FIELD_SPECIFIED_TWICE", + 0x0457: "ER_INVALID_GROUP_FUNC_USE", + 0x0458: "ER_UNSUPPORTED_EXTENSION", + 0x0459: "ER_TABLE_MUST_HAVE_COLUMNS", + 0x045a: "ER_RECORD_FILE_FULL", + 0x045b: "ER_UNKNOWN_CHARACTER_SET", + 0x045c: "ER_TOO_MANY_TABLES", + 0x045d: "ER_TOO_MANY_FIELDS", + 0x045e: "ER_TOO_BIG_ROWSIZE", + 0x045f: "ER_STACK_OVERRUN", + 0x0460: "ER_WRONG_OUTER_JOIN_UNUSED", + 0x0461: "ER_NULL_COLUMN_IN_INDEX", + 0x0462: "ER_CANT_FIND_UDF", + 0x0463: "ER_CANT_INITIALIZE_UDF", + 0x0464: "ER_UDF_NO_PATHS", + 0x0465: "ER_UDF_EXISTS", + 0x0466: "ER_CANT_OPEN_LIBRARY", + 0x0467: "ER_CANT_FIND_DL_ENTRY", + 0x0468: "ER_FUNCTION_NOT_DEFINED", + 0x0469: "ER_HOST_IS_BLOCKED", + 0x046a: "ER_HOST_NOT_PRIVILEGED", + 0x046b: "ER_PASSWORD_ANONYMOUS_USER", + 0x046c: "ER_PASSWORD_NOT_ALLOWED", + 0x046d: "ER_PASSWORD_NO_MATCH", + 0x046e: "ER_UPDATE_INFO", + 0x046f: "ER_CANT_CREATE_THREAD", + 0x0470: "ER_WRONG_VALUE_COUNT_ON_ROW", + 0x0471: "ER_CANT_REOPEN_TABLE", + 0x0472: "ER_INVALID_USE_OF_NULL", + 0x0473: "ER_REGEXP_ERROR", + 0x0474: "ER_MIX_OF_GROUP_FUNC_AND_FIELDS", + 0x0475: "ER_NONEXISTING_GRANT", + 0x0476: "ER_TABLEACCESS_DENIED_ERROR", + 0x0477: "ER_COLUMNACCESS_DENIED_ERROR", + 0x0478: "ER_ILLEGAL_GRANT_FOR_TABLE", + 0x0479: "ER_GRANT_WRONG_HOST_OR_USER", + 0x047a: "ER_NO_SUCH_TABLE", + 0x047b: "ER_NONEXISTING_TABLE_GRANT", + 0x047c: "ER_NOT_ALLOWED_COMMAND", + 0x047d: "ER_SYNTAX_ERROR", + 0x047e: "ER_UNUSED1", + 0x047f: "ER_UNUSED2", + 0x0480: "ER_ABORTING_CONNECTION", + 0x0481: "ER_NET_PACKET_TOO_LARGE", + 0x0482: "ER_NET_READ_ERROR_FROM_PIPE", + 0x0483: "ER_NET_FCNTL_ERROR", + 0x0484: "ER_NET_PACKETS_OUT_OF_ORDER", + 0x0485: "ER_NET_UNCOMPRESS_ERROR", + 0x0486: "ER_NET_READ_ERROR", + 0x0487: "ER_NET_READ_INTERRUPTED", + 0x0488: "ER_NET_ERROR_ON_WRITE", + 0x0489: "ER_NET_WRITE_INTERRUPTED", + 0x048a: "ER_TOO_LONG_STRING", + 0x048b: "ER_TABLE_CANT_HANDLE_BLOB", + 0x048c: "ER_TABLE_CANT_HANDLE_AUTO_INCREMENT", + 0x048d: "ER_UNUSED3", + 0x048e: "ER_WRONG_COLUMN_NAME", + 0x048f: "ER_WRONG_KEY_COLUMN", + 0x0490: "ER_WRONG_MRG_TABLE", + 0x0491: "ER_DUP_UNIQUE", + 0x0492: "ER_BLOB_KEY_WITHOUT_LENGTH", + 0x0493: "ER_PRIMARY_CANT_HAVE_NULL", + 0x0494: "ER_TOO_MANY_ROWS", + 0x0495: "ER_REQUIRES_PRIMARY_KEY", + 0x0496: "ER_NO_RAID_COMPILED", + 0x0497: "ER_UPDATE_WITHOUT_KEY_IN_SAFE_MODE", + 0x0498: "ER_KEY_DOES_NOT_EXITS", + 0x0499: "ER_CHECK_NO_SUCH_TABLE", + 0x049a: "ER_CHECK_NOT_IMPLEMENTED", + 0x049b: "ER_CANT_DO_THIS_DURING_AN_TRANSACTION", + 0x049c: "ER_ERROR_DURING_COMMIT", + 0x049d: "ER_ERROR_DURING_ROLLBACK", + 0x049e: "ER_ERROR_DURING_FLUSH_LOGS", + 0x049f: "ER_ERROR_DURING_CHECKPOINT", + 0x04a0: "ER_NEW_ABORTING_CONNECTION", + 0x04a1: "ER_DUMP_NOT_IMPLEMENTED", + 0x04a2: "ER_FLUSH_MASTER_BINLOG_CLOSED", + 0x04a3: "ER_INDEX_REBUILD", + 0x04a4: "ER_MASTER", + 0x04a5: "ER_MASTER_NET_READ", + 0x04a6: "ER_MASTER_NET_WRITE", + 0x04a7: "ER_FT_MATCHING_KEY_NOT_FOUND", + 0x04a8: "ER_LOCK_OR_ACTIVE_TRANSACTION", + 0x04a9: "ER_UNKNOWN_SYSTEM_VARIABLE", + 0x04aa: "ER_CRASHED_ON_USAGE", + 0x04ab: "ER_CRASHED_ON_REPAIR", + 0x04ac: "ER_WARNING_NOT_COMPLETE_ROLLBACK", + 0x04ad: "ER_TRANS_CACHE_FULL", + 0x04ae: "ER_SLAVE_MUST_STOP", + 0x04af: "ER_SLAVE_NOT_RUNNING", + 0x04b0: "ER_BAD_SLAVE", + 0x04b1: "ER_MASTER_INFO", + 0x04b2: "ER_SLAVE_THREAD", + 0x04b3: "ER_TOO_MANY_USER_CONNECTIONS", + 0x04b4: "ER_SET_CONSTANTS_ONLY", + 0x04b5: "ER_LOCK_WAIT_TIMEOUT", + 0x04b6: "ER_LOCK_TABLE_FULL", + 0x04b7: "ER_READ_ONLY_TRANSACTION", + 0x04b8: "ER_DROP_DB_WITH_READ_LOCK", + 0x04b9: "ER_CREATE_DB_WITH_READ_LOCK", + 0x04ba: "ER_WRONG_ARGUMENTS", + 0x04bb: "ER_NO_PERMISSION_TO_CREATE_USER", + 0x04bc: "ER_UNION_TABLES_IN_DIFFERENT_DIR", + 0x04bd: "ER_LOCK_DEADLOCK", + 0x04be: "ER_TABLE_CANT_HANDLE_FT", + 0x04bf: "ER_CANNOT_ADD_FOREIGN", + 0x04c0: "ER_NO_REFERENCED_ROW", + 0x04c1: "ER_ROW_IS_REFERENCED", + 0x04c2: "ER_CONNECT_TO_MASTER", + 0x04c3: "ER_QUERY_ON_MASTER", + 0x04c4: "ER_ERROR_WHEN_EXECUTING_COMMAND", + 0x04c5: "ER_WRONG_USAGE", + 0x04c6: "ER_WRONG_NUMBER_OF_COLUMNS_IN_SELECT", + 0x04c7: "ER_CANT_UPDATE_WITH_READLOCK", + 0x04c8: "ER_MIXING_NOT_ALLOWED", + 0x04c9: "ER_DUP_ARGUMENT", + 0x04ca: "ER_USER_LIMIT_REACHED", + 0x04cb: "ER_SPECIFIC_ACCESS_DENIED_ERROR", + 0x04cc: "ER_LOCAL_VARIABLE", + 0x04cd: "ER_GLOBAL_VARIABLE", + 0x04ce: "ER_NO_DEFAULT", + 0x04cf: "ER_WRONG_VALUE_FOR_VAR", + 0x04d0: "ER_WRONG_TYPE_FOR_VAR", + 0x04d1: "ER_VAR_CANT_BE_READ", + 0x04d2: "ER_CANT_USE_OPTION_HERE", + 0x04d3: "ER_NOT_SUPPORTED_YET", + 0x04d4: "ER_MASTER_FATAL_ERROR_READING_BINLOG", + 0x04d5: "ER_SLAVE_IGNORED_TABLE", + 0x04d6: "ER_INCORRECT_GLOBAL_LOCAL_VAR", + 0x04d7: "ER_WRONG_FK_DEF", + 0x04d8: "ER_KEY_REF_DO_NOT_MATCH_TABLE_REF", + 0x04d9: "ER_OPERAND_COLUMNS", + 0x04da: "ER_SUBQUERY_NO_1_ROW", + 0x04db: "ER_UNKNOWN_STMT_HANDLER", + 0x04dc: "ER_CORRUPT_HELP_DB", + 0x04dd: "ER_CYCLIC_REFERENCE", + 0x04de: "ER_AUTO_CONVERT", + 0x04df: "ER_ILLEGAL_REFERENCE", + 0x04e0: "ER_DERIVED_MUST_HAVE_ALIAS", + 0x04e1: "ER_SELECT_REDUCED", + 0x04e2: "ER_TABLENAME_NOT_ALLOWED_HERE", + 0x04e3: "ER_NOT_SUPPORTED_AUTH_MODE", + 0x04e4: "ER_SPATIAL_CANT_HAVE_NULL", + 0x04e5: "ER_COLLATION_CHARSET_MISMATCH", + 0x04e6: "ER_SLAVE_WAS_RUNNING", + 0x04e7: "ER_SLAVE_WAS_NOT_RUNNING", + 0x04e8: "ER_TOO_BIG_FOR_UNCOMPRESS", + 0x04e9: "ER_ZLIB_Z_MEM_ERROR", + 0x04ea: "ER_ZLIB_Z_BUF_ERROR", + 0x04eb: "ER_ZLIB_Z_DATA_ERROR", + 0x04ec: "ER_CUT_VALUE_GROUP_CONCAT", + 0x04ed: "ER_WARN_TOO_FEW_RECORDS", + 0x04ee: "ER_WARN_TOO_MANY_RECORDS", + 0x04ef: "ER_WARN_NULL_TO_NOTNULL", + 0x04f0: "ER_WARN_DATA_OUT_OF_RANGE", + 0x04f1: "WARN_DATA_TRUNCATED", + 0x04f2: "ER_WARN_USING_OTHER_HANDLER", + 0x04f3: "ER_CANT_AGGREGATE_2COLLATIONS", + 0x04f4: "ER_DROP_USER", + 0x04f5: "ER_REVOKE_GRANTS", + 0x04f6: "ER_CANT_AGGREGATE_3COLLATIONS", + 0x04f7: "ER_CANT_AGGREGATE_NCOLLATIONS", + 0x04f8: "ER_VARIABLE_IS_NOT_STRUCT", + 0x04f9: "ER_UNKNOWN_COLLATION", + 0x04fa: "ER_SLAVE_IGNORED_SSL_PARAMS", + 0x04fb: "ER_SERVER_IS_IN_SECURE_AUTH_MODE", + 0x04fc: "ER_WARN_FIELD_RESOLVED", + 0x04fd: "ER_BAD_SLAVE_UNTIL_COND", + 0x04fe: "ER_MISSING_SKIP_SLAVE", + 0x04ff: "ER_UNTIL_COND_IGNORED", + 0x0500: "ER_WRONG_NAME_FOR_INDEX", + 0x0501: "ER_WRONG_NAME_FOR_CATALOG", + 0x0502: "ER_WARN_QC_RESIZE", + 0x0503: "ER_BAD_FT_COLUMN", + 0x0504: "ER_UNKNOWN_KEY_CACHE", + 0x0505: "ER_WARN_HOSTNAME_WONT_WORK", + 0x0506: "ER_UNKNOWN_STORAGE_ENGINE", + 0x0507: "ER_WARN_DEPRECATED_SYNTAX", + 0x0508: "ER_NON_UPDATABLE_TABLE", + 0x0509: "ER_FEATURE_DISABLED", + 0x050a: "ER_OPTION_PREVENTS_STATEMENT", + 0x050b: "ER_DUPLICATED_VALUE_IN_TYPE", + 0x050c: "ER_TRUNCATED_WRONG_VALUE", + 0x050d: "ER_TOO_MUCH_AUTO_TIMESTAMP_COLS", + 0x050e: "ER_INVALID_ON_UPDATE", + 0x050f: "ER_UNSUPPORTED_PS", + 0x0510: "ER_GET_ERRMSG", + 0x0511: "ER_GET_TEMPORARY_ERRMSG", + 0x0512: "ER_UNKNOWN_TIME_ZONE", + 0x0513: "ER_WARN_INVALID_TIMESTAMP", + 0x0514: "ER_INVALID_CHARACTER_STRING", + 0x0515: "ER_WARN_ALLOWED_PACKET_OVERFLOWED", + 0x0516: "ER_CONFLICTING_DECLARATIONS", + 0x0517: "ER_SP_NO_RECURSIVE_CREATE", + 0x0518: "ER_SP_ALREADY_EXISTS", + 0x0519: "ER_SP_DOES_NOT_EXIST", + 0x051a: "ER_SP_DROP_FAILED", + 0x051b: "ER_SP_STORE_FAILED", + 0x051c: "ER_SP_LILABEL_MISMATCH", + 0x051d: "ER_SP_LABEL_REDEFINE", + 0x051e: "ER_SP_LABEL_MISMATCH", + 0x051f: "ER_SP_UNINIT_VAR", + 0x0520: "ER_SP_BADSELECT", + 0x0521: "ER_SP_BADRETURN", + 0x0522: "ER_SP_BADSTATEMENT", + 0x0523: "ER_UPDATE_LOG_DEPRECATED_IGNORED", + 0x0524: "ER_UPDATE_LOG_DEPRECATED_TRANSLATED", + 0x0525: "ER_QUERY_INTERRUPTED", + 0x0526: "ER_SP_WRONG_NO_OF_ARGS", + 0x0527: "ER_SP_COND_MISMATCH", + 0x0528: "ER_SP_NORETURN", + 0x0529: "ER_SP_NORETURNEND", + 0x052a: "ER_SP_BAD_CURSOR_QUERY", + 0x052b: "ER_SP_BAD_CURSOR_SELECT", + 0x052c: "ER_SP_CURSOR_MISMATCH", + 0x052d: "ER_SP_CURSOR_ALREADY_OPEN", + 0x052e: "ER_SP_CURSOR_NOT_OPEN", + 0x052f: "ER_SP_UNDECLARED_VAR", + 0x0530: "ER_SP_WRONG_NO_OF_FETCH_ARGS", + 0x0531: "ER_SP_FETCH_NO_DATA", + 0x0532: "ER_SP_DUP_PARAM", + 0x0533: "ER_SP_DUP_VAR", + 0x0534: "ER_SP_DUP_COND", + 0x0535: "ER_SP_DUP_CURS", + 0x0536: "ER_SP_CANT_ALTER", + 0x0537: "ER_SP_SUBSELECT_NYI", + 0x0538: "ER_STMT_NOT_ALLOWED_IN_SF_OR_TRG", + 0x0539: "ER_SP_VARCOND_AFTER_CURSHNDLR", + 0x053a: "ER_SP_CURSOR_AFTER_HANDLER", + 0x053b: "ER_SP_CASE_NOT_FOUND", + 0x053c: "ER_FPARSER_TOO_BIG_FILE", + 0x053d: "ER_FPARSER_BAD_HEADER", + 0x053e: "ER_FPARSER_EOF_IN_COMMENT", + 0x053f: "ER_FPARSER_ERROR_IN_PARAMETER", + 0x0540: "ER_FPARSER_EOF_IN_UNKNOWN_PARAMETER", + 0x0541: "ER_VIEW_NO_EXPLAIN", + 0x0542: "ER_FRM_UNKNOWN_TYPE", + 0x0543: "ER_WRONG_OBJECT", + 0x0544: "ER_NONUPDATEABLE_COLUMN", + 0x0545: "ER_VIEW_SELECT_DERIVED_UNUSED", + 0x0546: "ER_VIEW_SELECT_CLAUSE", + 0x0547: "ER_VIEW_SELECT_VARIABLE", + 0x0548: "ER_VIEW_SELECT_TMPTABLE", + 0x0549: "ER_VIEW_WRONG_LIST", + 0x054a: "ER_WARN_VIEW_MERGE", + 0x054b: "ER_WARN_VIEW_WITHOUT_KEY", + 0x054c: "ER_VIEW_INVALID", + 0x054d: "ER_SP_NO_DROP_SP", + 0x054e: "ER_SP_GOTO_IN_HNDLR", + 0x054f: "ER_TRG_ALREADY_EXISTS", + 0x0550: "ER_TRG_DOES_NOT_EXIST", + 0x0551: "ER_TRG_ON_VIEW_OR_TEMP_TABLE", + 0x0552: "ER_TRG_CANT_CHANGE_ROW", + 0x0553: "ER_TRG_NO_SUCH_ROW_IN_TRG", + 0x0554: "ER_NO_DEFAULT_FOR_FIELD", + 0x0555: "ER_DIVISION_BY_ZERO", + 0x0556: "ER_TRUNCATED_WRONG_VALUE_FOR_FIELD", + 0x0557: "ER_ILLEGAL_VALUE_FOR_TYPE", + 0x0558: "ER_VIEW_NONUPD_CHECK", + 0x0559: "ER_VIEW_CHECK_FAILED", + 0x055a: "ER_PROCACCESS_DENIED_ERROR", + 0x055b: "ER_RELAY_LOG_FAIL", + 0x055c: "ER_PASSWD_LENGTH", + 0x055d: "ER_UNKNOWN_TARGET_BINLOG", + 0x055e: "ER_IO_ERR_LOG_INDEX_READ", + 0x055f: "ER_BINLOG_PURGE_PROHIBITED", + 0x0560: "ER_FSEEK_FAIL", + 0x0561: "ER_BINLOG_PURGE_FATAL_ERR", + 0x0562: "ER_LOG_IN_USE", + 0x0563: "ER_LOG_PURGE_UNKNOWN_ERR", + 0x0564: "ER_RELAY_LOG_INIT", + 0x0565: "ER_NO_BINARY_LOGGING", + 0x0566: "ER_RESERVED_SYNTAX", + 0x0567: "ER_WSAS_FAILED", + 0x0568: "ER_DIFF_GROUPS_PROC", + 0x0569: "ER_NO_GROUP_FOR_PROC", + 0x056a: "ER_ORDER_WITH_PROC", + 0x056b: "ER_LOGGING_PROHIBIT_CHANGING_OF", + 0x056c: "ER_NO_FILE_MAPPING", + 0x056d: "ER_WRONG_MAGIC", + 0x056e: "ER_PS_MANY_PARAM", + 0x056f: "ER_KEY_PART_0", + 0x0570: "ER_VIEW_CHECKSUM", + 0x0571: "ER_VIEW_MULTIUPDATE", + 0x0572: "ER_VIEW_NO_INSERT_FIELD_LIST", + 0x0573: "ER_VIEW_DELETE_MERGE_VIEW", + 0x0574: "ER_CANNOT_USER", + 0x0575: "ER_XAER_NOTA", + 0x0576: "ER_XAER_INVAL", + 0x0577: "ER_XAER_RMFAIL", + 0x0578: "ER_XAER_OUTSIDE", + 0x0579: "ER_XAER_RMERR", + 0x057a: "ER_XA_RBROLLBACK", + 0x057b: "ER_NONEXISTING_PROC_GRANT", + 0x057c: "ER_PROC_AUTO_GRANT_FAIL", + 0x057d: "ER_PROC_AUTO_REVOKE_FAIL", + 0x057e: "ER_DATA_TOO_LONG", + 0x057f: "ER_SP_BAD_SQLSTATE", + 0x0580: "ER_STARTUP", + 0x0581: "ER_LOAD_FROM_FIXED_SIZE_ROWS_TO_VAR", + 0x0582: "ER_CANT_CREATE_USER_WITH_GRANT", + 0x0583: "ER_WRONG_VALUE_FOR_TYPE", + 0x0584: "ER_TABLE_DEF_CHANGED", + 0x0585: "ER_SP_DUP_HANDLER", + 0x0586: "ER_SP_NOT_VAR_ARG", + 0x0587: "ER_SP_NO_RETSET", + 0x0588: "ER_CANT_CREATE_GEOMETRY_OBJECT", + 0x0589: "ER_FAILED_ROUTINE_BREAK_BINLOG", + 0x058a: "ER_BINLOG_UNSAFE_ROUTINE", + 0x058b: "ER_BINLOG_CREATE_ROUTINE_NEED_SUPER", + 0x058c: "ER_EXEC_STMT_WITH_OPEN_CURSOR", + 0x058d: "ER_STMT_HAS_NO_OPEN_CURSOR", + 0x058e: "ER_COMMIT_NOT_ALLOWED_IN_SF_OR_TRG", + 0x058f: "ER_NO_DEFAULT_FOR_VIEW_FIELD", + 0x0590: "ER_SP_NO_RECURSION", + 0x0591: "ER_TOO_BIG_SCALE", + 0x0592: "ER_TOO_BIG_PRECISION", + 0x0593: "ER_M_BIGGER_THAN_D", + 0x0594: "ER_WRONG_LOCK_OF_SYSTEM_TABLE", + 0x0595: "ER_CONNECT_TO_FOREIGN_DATA_SOURCE", + 0x0596: "ER_QUERY_ON_FOREIGN_DATA_SOURCE", + 0x0597: "ER_FOREIGN_DATA_SOURCE_DOESNT_EXIST", + 0x0598: "ER_FOREIGN_DATA_STRING_INVALID_CANT_CREATE", + 0x0599: "ER_FOREIGN_DATA_STRING_INVALID", + 0x059a: "ER_CANT_CREATE_FEDERATED_TABLE", + 0x059b: "ER_TRG_IN_WRONG_SCHEMA", + 0x059c: "ER_STACK_OVERRUN_NEED_MORE", + 0x059d: "ER_TOO_LONG_BODY", + 0x059e: "ER_WARN_CANT_DROP_DEFAULT_KEYCACHE", + 0x059f: "ER_TOO_BIG_DISPLAYWIDTH", + 0x05a0: "ER_XAER_DUPID", + 0x05a1: "ER_DATETIME_FUNCTION_OVERFLOW", + 0x05a2: "ER_CANT_UPDATE_USED_TABLE_IN_SF_OR_TRG", + 0x05a3: "ER_VIEW_PREVENT_UPDATE", + 0x05a4: "ER_PS_NO_RECURSION", + 0x05a5: "ER_SP_CANT_SET_AUTOCOMMIT", + 0x05a6: "ER_MALFORMED_DEFINER", + 0x05a7: "ER_VIEW_FRM_NO_USER", + 0x05a8: "ER_VIEW_OTHER_USER", + 0x05a9: "ER_NO_SUCH_USER", + 0x05aa: "ER_FORBID_SCHEMA_CHANGE", + 0x05ab: "ER_ROW_IS_REFERENCED_2", + 0x05ac: "ER_NO_REFERENCED_ROW_2", + 0x05ad: "ER_SP_BAD_VAR_SHADOW", + 0x05ae: "ER_TRG_NO_DEFINER", + 0x05af: "ER_OLD_FILE_FORMAT", + 0x05b0: "ER_SP_RECURSION_LIMIT", + 0x05b1: "ER_SP_PROC_TABLE_CORRUPT", + 0x05b2: "ER_SP_WRONG_NAME", + 0x05b3: "ER_TABLE_NEEDS_UPGRADE", + 0x05b4: "ER_SP_NO_AGGREGATE", + 0x05b5: "ER_MAX_PREPARED_STMT_COUNT_REACHED", + 0x05b6: "ER_VIEW_RECURSIVE", + 0x05b7: "ER_NON_GROUPING_FIELD_USED", + 0x05b8: "ER_TABLE_CANT_HANDLE_SPKEYS", + 0x05b9: "ER_NO_TRIGGERS_ON_SYSTEM_SCHEMA", + 0x05ba: "ER_REMOVED_SPACES", + 0x05bb: "ER_AUTOINC_READ_FAILED", + 0x05bc: "ER_USERNAME", + 0x05bd: "ER_HOSTNAME", + 0x05be: "ER_WRONG_STRING_LENGTH", + 0x05bf: "ER_NON_INSERTABLE_TABLE", + 0x05c0: "ER_ADMIN_WRONG_MRG_TABLE", + 0x05c1: "ER_TOO_HIGH_LEVEL_OF_NESTING_FOR_SELECT", + 0x05c2: "ER_NAME_BECOMES_EMPTY", + 0x05c3: "ER_AMBIGUOUS_FIELD_TERM", + 0x05c4: "ER_FOREIGN_SERVER_EXISTS", + 0x05c5: "ER_FOREIGN_SERVER_DOESNT_EXIST", + 0x05c6: "ER_ILLEGAL_HA_CREATE_OPTION", + 0x05c7: "ER_PARTITION_REQUIRES_VALUES_ERROR", + 0x05c8: "ER_PARTITION_WRONG_VALUES_ERROR", + 0x05c9: "ER_PARTITION_MAXVALUE_ERROR", + 0x05ca: "ER_PARTITION_SUBPARTITION_ERROR", + 0x05cb: "ER_PARTITION_SUBPART_MIX_ERROR", + 0x05cc: "ER_PARTITION_WRONG_NO_PART_ERROR", + 0x05cd: "ER_PARTITION_WRONG_NO_SUBPART_ERROR", + 0x05ce: "ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR", + 0x05cf: "ER_NO_CONST_EXPR_IN_RANGE_OR_LIST_ERROR", + 0x05d0: "ER_FIELD_NOT_FOUND_PART_ERROR", + 0x05d1: "ER_LIST_OF_FIELDS_ONLY_IN_HASH_ERROR", + 0x05d2: "ER_INCONSISTENT_PARTITION_INFO_ERROR", + 0x05d3: "ER_PARTITION_FUNC_NOT_ALLOWED_ERROR", + 0x05d4: "ER_PARTITIONS_MUST_BE_DEFINED_ERROR", + 0x05d5: "ER_RANGE_NOT_INCREASING_ERROR", + 0x05d6: "ER_INCONSISTENT_TYPE_OF_FUNCTIONS_ERROR", + 0x05d7: "ER_MULTIPLE_DEF_CONST_IN_LIST_PART_ERROR", + 0x05d8: "ER_PARTITION_ENTRY_ERROR", + 0x05d9: "ER_MIX_HANDLER_ERROR", + 0x05da: "ER_PARTITION_NOT_DEFINED_ERROR", + 0x05db: "ER_TOO_MANY_PARTITIONS_ERROR", + 0x05dc: "ER_SUBPARTITION_ERROR", + 0x05dd: "ER_CANT_CREATE_HANDLER_FILE", + 0x05de: "ER_BLOB_FIELD_IN_PART_FUNC_ERROR", + 0x05df: "ER_UNIQUE_KEY_NEED_ALL_FIELDS_IN_PF", + 0x05e0: "ER_NO_PARTS_ERROR", + 0x05e1: "ER_PARTITION_MGMT_ON_NONPARTITIONED", + 0x05e2: "ER_FOREIGN_KEY_ON_PARTITIONED", + 0x05e3: "ER_DROP_PARTITION_NON_EXISTENT", + 0x05e4: "ER_DROP_LAST_PARTITION", + 0x05e5: "ER_COALESCE_ONLY_ON_HASH_PARTITION", + 0x05e6: "ER_REORG_HASH_ONLY_ON_SAME_NO", + 0x05e7: "ER_REORG_NO_PARAM_ERROR", + 0x05e8: "ER_ONLY_ON_RANGE_LIST_PARTITION", + 0x05e9: "ER_ADD_PARTITION_SUBPART_ERROR", + 0x05ea: "ER_ADD_PARTITION_NO_NEW_PARTITION", + 0x05eb: "ER_COALESCE_PARTITION_NO_PARTITION", + 0x05ec: "ER_REORG_PARTITION_NOT_EXIST", + 0x05ed: "ER_SAME_NAME_PARTITION", + 0x05ee: "ER_NO_BINLOG_ERROR", + 0x05ef: "ER_CONSECUTIVE_REORG_PARTITIONS", + 0x05f0: "ER_REORG_OUTSIDE_RANGE", + 0x05f1: "ER_PARTITION_FUNCTION_FAILURE", + 0x05f2: "ER_PART_STATE_ERROR", + 0x05f3: "ER_LIMITED_PART_RANGE", + 0x05f4: "ER_PLUGIN_IS_NOT_LOADED", + 0x05f5: "ER_WRONG_VALUE", + 0x05f6: "ER_NO_PARTITION_FOR_GIVEN_VALUE", + 0x05f7: "ER_FILEGROUP_OPTION_ONLY_ONCE", + 0x05f8: "ER_CREATE_FILEGROUP_FAILED", + 0x05f9: "ER_DROP_FILEGROUP_FAILED", + 0x05fa: "ER_TABLESPACE_AUTO_EXTEND_ERROR", + 0x05fb: "ER_WRONG_SIZE_NUMBER", + 0x05fc: "ER_SIZE_OVERFLOW_ERROR", + 0x05fd: "ER_ALTER_FILEGROUP_FAILED", + 0x05fe: "ER_BINLOG_ROW_LOGGING_FAILED", + 0x05ff: "ER_BINLOG_ROW_WRONG_TABLE_DEF", + 0x0600: "ER_BINLOG_ROW_RBR_TO_SBR", + 0x0601: "ER_EVENT_ALREADY_EXISTS", + 0x0602: "ER_EVENT_STORE_FAILED", + 0x0603: "ER_EVENT_DOES_NOT_EXIST", + 0x0604: "ER_EVENT_CANT_ALTER", + 0x0605: "ER_EVENT_DROP_FAILED", + 0x0606: "ER_EVENT_INTERVAL_NOT_POSITIVE_OR_TOO_BIG", + 0x0607: "ER_EVENT_ENDS_BEFORE_STARTS", + 0x0608: "ER_EVENT_EXEC_TIME_IN_THE_PAST", + 0x0609: "ER_EVENT_OPEN_TABLE_FAILED", + 0x060a: "ER_EVENT_NEITHER_M_EXPR_NOR_M_AT", + 0x060b: "ER_OBSOLETE_COL_COUNT_DOESNT_MATCH_CORRUPTED", + 0x060c: "ER_OBSOLETE_CANNOT_LOAD_FROM_TABLE", + 0x060d: "ER_EVENT_CANNOT_DELETE", + 0x060e: "ER_EVENT_COMPILE_ERROR", + 0x060f: "ER_EVENT_SAME_NAME", + 0x0610: "ER_EVENT_DATA_TOO_LONG", + 0x0611: "ER_DROP_INDEX_FK", + 0x0612: "ER_WARN_DEPRECATED_SYNTAX_WITH_VER", + 0x0613: "ER_CANT_WRITE_LOCK_LOG_TABLE", + 0x0614: "ER_CANT_LOCK_LOG_TABLE", + 0x0615: "ER_FOREIGN_DUPLICATE_KEY_OLD_UNUSED", + 0x0616: "ER_COL_COUNT_DOESNT_MATCH_PLEASE_UPDATE", + 0x0617: "ER_TEMP_TABLE_PREVENTS_SWITCH_OUT_OF_RBR", + 0x0618: "ER_STORED_FUNCTION_PREVENTS_SWITCH_BINLOG_FORMAT", + 0x0619: "ER_NDB_CANT_SWITCH_BINLOG_FORMAT", + 0x061a: "ER_PARTITION_NO_TEMPORARY", + 0x061b: "ER_PARTITION_CONST_DOMAIN_ERROR", + 0x061c: "ER_PARTITION_FUNCTION_IS_NOT_ALLOWED", + 0x061d: "ER_DDL_LOG_ERROR", + 0x061e: "ER_NULL_IN_VALUES_LESS_THAN", + 0x061f: "ER_WRONG_PARTITION_NAME", + 0x0620: "ER_CANT_CHANGE_TX_CHARACTERISTICS", + 0x0621: "ER_DUP_ENTRY_AUTOINCREMENT_CASE", + 0x0622: "ER_EVENT_MODIFY_QUEUE_ERROR", + 0x0623: "ER_EVENT_SET_VAR_ERROR", + 0x0624: "ER_PARTITION_MERGE_ERROR", + 0x0625: "ER_CANT_ACTIVATE_LOG", + 0x0626: "ER_RBR_NOT_AVAILABLE", + 0x0627: "ER_BASE64_DECODE_ERROR", + 0x0628: "ER_EVENT_RECURSION_FORBIDDEN", + 0x0629: "ER_EVENTS_DB_ERROR", + 0x062a: "ER_ONLY_INTEGERS_ALLOWED", + 0x062b: "ER_UNSUPORTED_LOG_ENGINE", + 0x062c: "ER_BAD_LOG_STATEMENT", + 0x062d: "ER_CANT_RENAME_LOG_TABLE", + 0x062e: "ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT", + 0x062f: "ER_WRONG_PARAMETERS_TO_NATIVE_FCT", + 0x0630: "ER_WRONG_PARAMETERS_TO_STORED_FCT", + 0x0631: "ER_NATIVE_FCT_NAME_COLLISION", + 0x0632: "ER_DUP_ENTRY_WITH_KEY_NAME", + 0x0633: "ER_BINLOG_PURGE_EMFILE", + 0x0634: "ER_EVENT_CANNOT_CREATE_IN_THE_PAST", + 0x0635: "ER_EVENT_CANNOT_ALTER_IN_THE_PAST", + 0x0636: "ER_SLAVE_INCIDENT", + 0x0637: "ER_NO_PARTITION_FOR_GIVEN_VALUE_SILENT", + 0x0638: "ER_BINLOG_UNSAFE_STATEMENT", + 0x0639: "ER_BINLOG_FATAL_ERROR", + 0x063a: "ER_SLAVE_RELAY_LOG_READ_FAILURE", + 0x063b: "ER_SLAVE_RELAY_LOG_WRITE_FAILURE", + 0x063c: "ER_SLAVE_CREATE_EVENT_FAILURE", + 0x063d: "ER_SLAVE_MASTER_COM_FAILURE", + 0x063e: "ER_BINLOG_LOGGING_IMPOSSIBLE", + 0x063f: "ER_VIEW_NO_CREATION_CTX", + 0x0640: "ER_VIEW_INVALID_CREATION_CTX", + 0x0641: "ER_SR_INVALID_CREATION_CTX", + 0x0642: "ER_TRG_CORRUPTED_FILE", + 0x0643: "ER_TRG_NO_CREATION_CTX", + 0x0644: "ER_TRG_INVALID_CREATION_CTX", + 0x0645: "ER_EVENT_INVALID_CREATION_CTX", + 0x0646: "ER_TRG_CANT_OPEN_TABLE", + 0x0647: "ER_CANT_CREATE_SROUTINE", + 0x0648: "ER_NEVER_USED", + 0x0649: "ER_NO_FORMAT_DESCRIPTION_EVENT_BEFORE_BINLOG_STATEMENT", + 0x064a: "ER_SLAVE_CORRUPT_EVENT", + 0x064b: "ER_LOAD_DATA_INVALID_COLUMN_UNUSED", + 0x064c: "ER_LOG_PURGE_NO_FILE", + 0x064d: "ER_XA_RBTIMEOUT", + 0x064e: "ER_XA_RBDEADLOCK", + 0x064f: "ER_NEED_REPREPARE", + 0x0650: "ER_DELAYED_NOT_SUPPORTED", + 0x0651: "WARN_NO_MASTER_INFO", + 0x0652: "WARN_OPTION_IGNORED", + 0x0653: "ER_PLUGIN_DELETE_BUILTIN", + 0x0654: "WARN_PLUGIN_BUSY", + 0x0655: "ER_VARIABLE_IS_READONLY", + 0x0656: "ER_WARN_ENGINE_TRANSACTION_ROLLBACK", + 0x0657: "ER_SLAVE_HEARTBEAT_FAILURE", + 0x0658: "ER_SLAVE_HEARTBEAT_VALUE_OUT_OF_RANGE", + 0x0659: "ER_NDB_REPLICATION_SCHEMA_ERROR", + 0x065a: "ER_CONFLICT_FN_PARSE_ERROR", + 0x065b: "ER_EXCEPTIONS_WRITE_ERROR", + 0x065c: "ER_TOO_LONG_TABLE_COMMENT", + 0x065d: "ER_TOO_LONG_FIELD_COMMENT", + 0x065e: "ER_FUNC_INEXISTENT_NAME_COLLISION", + 0x065f: "ER_DATABASE_NAME", + 0x0660: "ER_TABLE_NAME", + 0x0661: "ER_PARTITION_NAME", + 0x0662: "ER_SUBPARTITION_NAME", + 0x0663: "ER_TEMPORARY_NAME", + 0x0664: "ER_RENAMED_NAME", + 0x0665: "ER_TOO_MANY_CONCURRENT_TRXS", + 0x0666: "WARN_NON_ASCII_SEPARATOR_NOT_IMPLEMENTED", + 0x0667: "ER_DEBUG_SYNC_TIMEOUT", + 0x0668: "ER_DEBUG_SYNC_HIT_LIMIT", + 0x0669: "ER_DUP_SIGNAL_SET", + 0x066a: "ER_SIGNAL_WARN", + 0x066b: "ER_SIGNAL_NOT_FOUND", + 0x066c: "ER_SIGNAL_EXCEPTION", + 0x066d: "ER_RESIGNAL_WITHOUT_ACTIVE_HANDLER", + 0x066e: "ER_SIGNAL_BAD_CONDITION_TYPE", + 0x066f: "WARN_COND_ITEM_TRUNCATED", + 0x0670: "ER_COND_ITEM_TOO_LONG", + 0x0671: "ER_UNKNOWN_LOCALE", + 0x0672: "ER_SLAVE_IGNORE_SERVER_IDS", + 0x0673: "ER_QUERY_CACHE_DISABLED", + 0x0674: "ER_SAME_NAME_PARTITION_FIELD", + 0x0675: "ER_PARTITION_COLUMN_LIST_ERROR", + 0x0676: "ER_WRONG_TYPE_COLUMN_VALUE_ERROR", + 0x0677: "ER_TOO_MANY_PARTITION_FUNC_FIELDS_ERROR", + 0x0678: "ER_MAXVALUE_IN_VALUES_IN", + 0x0679: "ER_TOO_MANY_VALUES_ERROR", + 0x067a: "ER_ROW_SINGLE_PARTITION_FIELD_ERROR", + 0x067b: "ER_FIELD_TYPE_NOT_ALLOWED_AS_PARTITION_FIELD", + 0x067c: "ER_PARTITION_FIELDS_TOO_LONG", + 0x067d: "ER_BINLOG_ROW_ENGINE_AND_STMT_ENGINE", + 0x067e: "ER_BINLOG_ROW_MODE_AND_STMT_ENGINE", + 0x067f: "ER_BINLOG_UNSAFE_AND_STMT_ENGINE", + 0x0680: "ER_BINLOG_ROW_INJECTION_AND_STMT_ENGINE", + 0x0681: "ER_BINLOG_STMT_MODE_AND_ROW_ENGINE", + 0x0682: "ER_BINLOG_ROW_INJECTION_AND_STMT_MODE", + 0x0683: "ER_BINLOG_MULTIPLE_ENGINES_AND_SELF_LOGGING_ENGINE", + 0x0684: "ER_BINLOG_UNSAFE_LIMIT", + 0x0685: "ER_UNUSED4", + 0x0686: "ER_BINLOG_UNSAFE_SYSTEM_TABLE", + 0x0687: "ER_BINLOG_UNSAFE_AUTOINC_COLUMNS", + 0x0688: "ER_BINLOG_UNSAFE_UDF", + 0x0689: "ER_BINLOG_UNSAFE_SYSTEM_VARIABLE", + 0x068a: "ER_BINLOG_UNSAFE_SYSTEM_FUNCTION", + 0x068b: "ER_BINLOG_UNSAFE_NONTRANS_AFTER_TRANS", + 0x068c: "ER_MESSAGE_AND_STATEMENT", + 0x068d: "ER_SLAVE_CONVERSION_FAILED", + 0x068e: "ER_SLAVE_CANT_CREATE_CONVERSION", + 0x068f: "ER_INSIDE_TRANSACTION_PREVENTS_SWITCH_BINLOG_FORMAT", + 0x0690: "ER_PATH_LENGTH", + 0x0691: "ER_WARN_DEPRECATED_SYNTAX_NO_REPLACEMENT", + 0x0692: "ER_WRONG_NATIVE_TABLE_STRUCTURE", + 0x0693: "ER_WRONG_PERFSCHEMA_USAGE", + 0x0694: "ER_WARN_I_S_SKIPPED_TABLE", + 0x0695: "ER_INSIDE_TRANSACTION_PREVENTS_SWITCH_BINLOG_DIRECT", + 0x0696: "ER_STORED_FUNCTION_PREVENTS_SWITCH_BINLOG_DIRECT", + 0x0697: "ER_SPATIAL_MUST_HAVE_GEOM_COL", + 0x0698: "ER_TOO_LONG_INDEX_COMMENT", + 0x0699: "ER_LOCK_ABORTED", + 0x069a: "ER_DATA_OUT_OF_RANGE", + 0x069b: "ER_WRONG_SPVAR_TYPE_IN_LIMIT", + 0x069c: "ER_BINLOG_UNSAFE_MULTIPLE_ENGINES_AND_SELF_LOGGING_ENGINE", + 0x069d: "ER_BINLOG_UNSAFE_MIXED_STATEMENT", + 0x069e: "ER_INSIDE_TRANSACTION_PREVENTS_SWITCH_SQL_LOG_BIN", + 0x069f: "ER_STORED_FUNCTION_PREVENTS_SWITCH_SQL_LOG_BIN", + 0x06a0: "ER_FAILED_READ_FROM_PAR_FILE", + 0x06a1: "ER_VALUES_IS_NOT_INT_TYPE_ERROR", + 0x06a2: "ER_ACCESS_DENIED_NO_PASSWORD_ERROR", + 0x06a3: "ER_SET_PASSWORD_AUTH_PLUGIN", + 0x06a4: "ER_GRANT_PLUGIN_USER_EXISTS", + 0x06a5: "ER_TRUNCATE_ILLEGAL_FK", + 0x06a6: "ER_PLUGIN_IS_PERMANENT", + 0x06a7: "ER_SLAVE_HEARTBEAT_VALUE_OUT_OF_RANGE_MIN", + 0x06a8: "ER_SLAVE_HEARTBEAT_VALUE_OUT_OF_RANGE_MAX", + 0x06a9: "ER_STMT_CACHE_FULL", + 0x06aa: "ER_MULTI_UPDATE_KEY_CONFLICT", + 0x06ab: "ER_TABLE_NEEDS_REBUILD", + 0x06ac: "WARN_OPTION_BELOW_LIMIT", + 0x06ad: "ER_INDEX_COLUMN_TOO_LONG", + 0x06ae: "ER_ERROR_IN_TRIGGER_BODY", + 0x06af: "ER_ERROR_IN_UNKNOWN_TRIGGER_BODY", + 0x06b0: "ER_INDEX_CORRUPT", + 0x06b1: "ER_UNDO_RECORD_TOO_BIG", + 0x06b2: "ER_BINLOG_UNSAFE_INSERT_IGNORE_SELECT", + 0x06b3: "ER_BINLOG_UNSAFE_INSERT_SELECT_UPDATE", + 0x06b4: "ER_BINLOG_UNSAFE_REPLACE_SELECT", + 0x06b5: "ER_BINLOG_UNSAFE_CREATE_IGNORE_SELECT", + 0x06b6: "ER_BINLOG_UNSAFE_CREATE_REPLACE_SELECT", + 0x06b7: "ER_BINLOG_UNSAFE_UPDATE_IGNORE", + 0x06b8: "ER_PLUGIN_NO_UNINSTALL", + 0x06b9: "ER_PLUGIN_NO_INSTALL", + 0x06ba: "ER_BINLOG_UNSAFE_WRITE_AUTOINC_SELECT", + 0x06bb: "ER_BINLOG_UNSAFE_CREATE_SELECT_AUTOINC", + 0x06bc: "ER_BINLOG_UNSAFE_INSERT_TWO_KEYS", + 0x06bd: "ER_TABLE_IN_FK_CHECK", + 0x06be: "ER_UNSUPPORTED_ENGINE", + 0x06bf: "ER_BINLOG_UNSAFE_AUTOINC_NOT_FIRST", + 0x06c0: "ER_CANNOT_LOAD_FROM_TABLE_V2", + 0x06c1: "ER_MASTER_DELAY_VALUE_OUT_OF_RANGE", + 0x06c2: "ER_ONLY_FD_AND_RBR_EVENTS_ALLOWED_IN_BINLOG_STATEMENT", + 0x06c3: "ER_PARTITION_EXCHANGE_DIFFERENT_OPTION", + 0x06c4: "ER_PARTITION_EXCHANGE_PART_TABLE", + 0x06c5: "ER_PARTITION_EXCHANGE_TEMP_TABLE", + 0x06c6: "ER_PARTITION_INSTEAD_OF_SUBPARTITION", + 0x06c7: "ER_UNKNOWN_PARTITION", + 0x06c8: "ER_TABLES_DIFFERENT_METADATA", + 0x06c9: "ER_ROW_DOES_NOT_MATCH_PARTITION", + 0x06ca: "ER_BINLOG_CACHE_SIZE_GREATER_THAN_MAX", + 0x06cb: "ER_WARN_INDEX_NOT_APPLICABLE", + 0x06cc: "ER_PARTITION_EXCHANGE_FOREIGN_KEY", + 0x06cd: "ER_NO_SUCH_KEY_VALUE", + 0x06ce: "ER_RPL_INFO_DATA_TOO_LONG", + 0x06cf: "ER_NETWORK_READ_EVENT_CHECKSUM_FAILURE", + 0x06d0: "ER_BINLOG_READ_EVENT_CHECKSUM_FAILURE", + 0x06d1: "ER_BINLOG_STMT_CACHE_SIZE_GREATER_THAN_MAX", + 0x06d2: "ER_CANT_UPDATE_TABLE_IN_CREATE_TABLE_SELECT", + 0x06d3: "ER_PARTITION_CLAUSE_ON_NONPARTITIONED", + 0x06d4: "ER_ROW_DOES_NOT_MATCH_GIVEN_PARTITION_SET", + 0x06d5: "ER_NO_SUCH_PARTITION__UNUSED", + 0x06d6: "ER_CHANGE_RPL_INFO_REPOSITORY_FAILURE", + 0x06d7: "ER_WARNING_NOT_COMPLETE_ROLLBACK_WITH_CREATED_TEMP_TABLE", + 0x06d8: "ER_WARNING_NOT_COMPLETE_ROLLBACK_WITH_DROPPED_TEMP_TABLE", + 0x06d9: "ER_MTS_FEATURE_IS_NOT_SUPPORTED", + 0x06da: "ER_MTS_UPDATED_DBS_GREATER_MAX", + 0x06db: "ER_MTS_CANT_PARALLEL", + 0x06dc: "ER_MTS_INCONSISTENT_DATA", + 0x06dd: "ER_FULLTEXT_NOT_SUPPORTED_WITH_PARTITIONING", + 0x06de: "ER_DA_INVALID_CONDITION_NUMBER", + 0x06df: "ER_INSECURE_PLAIN_TEXT", + 0x06e0: "ER_INSECURE_CHANGE_MASTER", + 0x06e1: "ER_FOREIGN_DUPLICATE_KEY_WITH_CHILD_INFO", + 0x06e2: "ER_FOREIGN_DUPLICATE_KEY_WITHOUT_CHILD_INFO", + 0x06e3: "ER_SQLTHREAD_WITH_SECURE_SLAVE", + 0x06e4: "ER_TABLE_HAS_NO_FT", + 0x06e5: "ER_VARIABLE_NOT_SETTABLE_IN_SF_OR_TRIGGER", + 0x06e6: "ER_VARIABLE_NOT_SETTABLE_IN_TRANSACTION", + 0x06e7: "ER_GTID_NEXT_IS_NOT_IN_GTID_NEXT_LIST", + 0x06e8: "ER_CANT_CHANGE_GTID_NEXT_IN_TRANSACTION", + 0x06e9: "ER_SET_STATEMENT_CANNOT_INVOKE_FUNCTION", + 0x06ea: "ER_GTID_NEXT_CANT_BE_AUTOMATIC_IF_GTID_NEXT_LIST_IS_NON_NULL", + 0x06eb: "ER_SKIPPING_LOGGED_TRANSACTION", + 0x06ec: "ER_MALFORMED_GTID_SET_SPECIFICATION", + 0x06ed: "ER_MALFORMED_GTID_SET_ENCODING", + 0x06ee: "ER_MALFORMED_GTID_SPECIFICATION", + 0x06ef: "ER_GNO_EXHAUSTED", + 0x06f0: "ER_BAD_SLAVE_AUTO_POSITION", + 0x06f1: "ER_AUTO_POSITION_REQUIRES_GTID_MODE_NOT_OFF", + 0x06f2: "ER_CANT_DO_IMPLICIT_COMMIT_IN_TRX_WHEN_GTID_NEXT_IS_SET", + 0x06f3: "ER_GTID_MODE_ON_REQUIRES_ENFORCE_GTID_CONSISTENCY_ON", + 0x06f4: "ER_GTID_MODE_REQUIRES_BINLOG", + 0x06f5: "ER_CANT_SET_GTID_NEXT_TO_GTID_WHEN_GTID_MODE_IS_OFF", + 0x06f6: "ER_CANT_SET_GTID_NEXT_TO_ANONYMOUS_WHEN_GTID_MODE_IS_ON", + 0x06f7: "ER_CANT_SET_GTID_NEXT_LIST_TO_NON_NULL_WHEN_GTID_MODE_IS_OFF", + 0x06f8: "ER_FOUND_GTID_EVENT_WHEN_GTID_MODE_IS_OFF__UNUSED", + 0x06f9: "ER_GTID_UNSAFE_NON_TRANSACTIONAL_TABLE", + 0x06fa: "ER_GTID_UNSAFE_CREATE_SELECT", + 0x06fb: "ER_GTID_UNSAFE_CREATE_DROP_TEMPORARY_TABLE_IN_TRANSACTION", + 0x06fc: "ER_GTID_MODE_CAN_ONLY_CHANGE_ONE_STEP_AT_A_TIME", + 0x06fd: "ER_MASTER_HAS_PURGED_REQUIRED_GTIDS", + 0x06fe: "ER_CANT_SET_GTID_NEXT_WHEN_OWNING_GTID", + 0x06ff: "ER_UNKNOWN_EXPLAIN_FORMAT", + 0x0700: "ER_CANT_EXECUTE_IN_READ_ONLY_TRANSACTION", + 0x0701: "ER_TOO_LONG_TABLE_PARTITION_COMMENT", + 0x0702: "ER_SLAVE_CONFIGURATION", + 0x0703: "ER_INNODB_FT_LIMIT", + 0x0704: "ER_INNODB_NO_FT_TEMP_TABLE", + 0x0705: "ER_INNODB_FT_WRONG_DOCID_COLUMN", + 0x0706: "ER_INNODB_FT_WRONG_DOCID_INDEX", + 0x0707: "ER_INNODB_ONLINE_LOG_TOO_BIG", + 0x0708: "ER_UNKNOWN_ALTER_ALGORITHM", + 0x0709: "ER_UNKNOWN_ALTER_LOCK", + 0x070a: "ER_MTS_CHANGE_MASTER_CANT_RUN_WITH_GAPS", + 0x070b: "ER_MTS_RECOVERY_FAILURE", + 0x070c: "ER_MTS_RESET_WORKERS", + 0x070d: "ER_COL_COUNT_DOESNT_MATCH_CORRUPTED_V2", + 0x070e: "ER_SLAVE_SILENT_RETRY_TRANSACTION", + 0x070f: "ER_DISCARD_FK_CHECKS_RUNNING", + 0x0710: "ER_TABLE_SCHEMA_MISMATCH", + 0x0711: "ER_TABLE_IN_SYSTEM_TABLESPACE", + 0x0712: "ER_IO_READ_ERROR", + 0x0713: "ER_IO_WRITE_ERROR", + 0x0714: "ER_TABLESPACE_MISSING", + 0x0715: "ER_TABLESPACE_EXISTS", + 0x0716: "ER_TABLESPACE_DISCARDED", + 0x0717: "ER_INTERNAL_ERROR", + 0x0718: "ER_INNODB_IMPORT_ERROR", + 0x0719: "ER_INNODB_INDEX_CORRUPT", + 0x071a: "ER_INVALID_YEAR_COLUMN_LENGTH", + 0x071b: "ER_NOT_VALID_PASSWORD", + 0x071c: "ER_MUST_CHANGE_PASSWORD", + 0x071d: "ER_FK_NO_INDEX_CHILD", + 0x071e: "ER_FK_NO_INDEX_PARENT", + 0x071f: "ER_FK_FAIL_ADD_SYSTEM", + 0x0720: "ER_FK_CANNOT_OPEN_PARENT", + 0x0721: "ER_FK_INCORRECT_OPTION", + 0x0722: "ER_FK_DUP_NAME", + 0x0723: "ER_PASSWORD_FORMAT", + 0x0724: "ER_FK_COLUMN_CANNOT_DROP", + 0x0725: "ER_FK_COLUMN_CANNOT_DROP_CHILD", + 0x0726: "ER_FK_COLUMN_NOT_NULL", + 0x0727: "ER_DUP_INDEX", + 0x0728: "ER_FK_COLUMN_CANNOT_CHANGE", + 0x0729: "ER_FK_COLUMN_CANNOT_CHANGE_CHILD", + 0x072a: "ER_UNUSED5", + 0x072b: "ER_MALFORMED_PACKET", + 0x072c: "ER_READ_ONLY_MODE", + 0x072d: "ER_GTID_NEXT_TYPE_UNDEFINED_GTID", + 0x072e: "ER_VARIABLE_NOT_SETTABLE_IN_SP", + 0x072f: "ER_CANT_SET_GTID_PURGED_WHEN_GTID_MODE_IS_OFF", + 0x0730: "ER_CANT_SET_GTID_PURGED_WHEN_GTID_EXECUTED_IS_NOT_EMPTY", + 0x0731: "ER_CANT_SET_GTID_PURGED_WHEN_OWNED_GTIDS_IS_NOT_EMPTY", + 0x0732: "ER_GTID_PURGED_WAS_CHANGED", + 0x0733: "ER_GTID_EXECUTED_WAS_CHANGED", + 0x0734: "ER_BINLOG_STMT_MODE_AND_NO_REPL_TABLES", + 0x0735: "ER_ALTER_OPERATION_NOT_SUPPORTED", + 0x0736: "ER_ALTER_OPERATION_NOT_SUPPORTED_REASON", + 0x0737: "ER_ALTER_OPERATION_NOT_SUPPORTED_REASON_COPY", + 0x0738: "ER_ALTER_OPERATION_NOT_SUPPORTED_REASON_PARTITION", + 0x0739: "ER_ALTER_OPERATION_NOT_SUPPORTED_REASON_FK_RENAME", + 0x073a: "ER_ALTER_OPERATION_NOT_SUPPORTED_REASON_COLUMN_TYPE", + 0x073b: "ER_ALTER_OPERATION_NOT_SUPPORTED_REASON_FK_CHECK", + 0x073c: "ER_UNUSED6", + 0x073d: "ER_ALTER_OPERATION_NOT_SUPPORTED_REASON_NOPK", + 0x073e: "ER_ALTER_OPERATION_NOT_SUPPORTED_REASON_AUTOINC", + 0x073f: "ER_ALTER_OPERATION_NOT_SUPPORTED_REASON_HIDDEN_FTS", + 0x0740: "ER_ALTER_OPERATION_NOT_SUPPORTED_REASON_CHANGE_FTS", + 0x0741: "ER_ALTER_OPERATION_NOT_SUPPORTED_REASON_FTS", + 0x0742: "ER_SQL_SLAVE_SKIP_COUNTER_NOT_SETTABLE_IN_GTID_MODE", + 0x0743: "ER_DUP_UNKNOWN_IN_INDEX", + 0x0744: "ER_IDENT_CAUSES_TOO_LONG_PATH", + 0x0745: "ER_ALTER_OPERATION_NOT_SUPPORTED_REASON_NOT_NULL", + 0x0746: "ER_MUST_CHANGE_PASSWORD_LOGIN", + 0x0747: "ER_ROW_IN_WRONG_PARTITION", + 0x0748: "ER_MTS_EVENT_BIGGER_PENDING_JOBS_SIZE_MAX", + 0x0749: "ER_INNODB_NO_FT_USES_PARSER", + 0x074a: "ER_BINLOG_LOGICAL_CORRUPTION", + 0x074b: "ER_WARN_PURGE_LOG_IN_USE", + 0x074c: "ER_WARN_PURGE_LOG_IS_ACTIVE", + 0x074d: "ER_AUTO_INCREMENT_CONFLICT", + 0x074e: "WARN_ON_BLOCKHOLE_IN_RBR", + 0x074f: "ER_SLAVE_MI_INIT_REPOSITORY", + 0x0750: "ER_SLAVE_RLI_INIT_REPOSITORY", + 0x0751: "ER_ACCESS_DENIED_CHANGE_USER_ERROR", + 0x0752: "ER_INNODB_READ_ONLY", + 0x0753: "ER_STOP_SLAVE_SQL_THREAD_TIMEOUT", + 0x0754: "ER_STOP_SLAVE_IO_THREAD_TIMEOUT", + 0x0755: "ER_TABLE_CORRUPT", + 0x0756: "ER_TEMP_FILE_WRITE_FAILURE", + 0x0757: "ER_INNODB_FT_AUX_NOT_HEX_ID", + 0x0758: "ER_OLD_TEMPORALS_UPGRADED", + 0x0759: "ER_INNODB_FORCED_RECOVERY", + 0x075a: "ER_AES_INVALID_IV", + 0x075b: "ER_PLUGIN_CANNOT_BE_UNINSTALLED", + 0x075c: "ER_GTID_UNSAFE_BINLOG_SPLITTABLE_STATEMENT_AND_ASSIGNED_GTID", + 0x075d: "ER_SLAVE_HAS_MORE_GTIDS_THAN_MASTER", + 0x075e: "ER_MISSING_KEY", + 0x0772: "ER_SLAVE_IO_THREAD_MUST_STOP", + 0x0bb8: "ER_FILE_CORRUPT", + 0x0bb9: "ER_ERROR_ON_MASTER", + 0x0bba: "ER_INCONSISTENT_ERROR", + 0x0bbb: "ER_STORAGE_ENGINE_NOT_LOADED", + 0x0bbc: "ER_GET_STACKED_DA_WITHOUT_ACTIVE_HANDLER", + 0x0bbd: "ER_WARN_LEGACY_SYNTAX_CONVERTED", + 0x0bbe: "ER_BINLOG_UNSAFE_FULLTEXT_PLUGIN", + 0x0bbf: "ER_CANNOT_DISCARD_TEMPORARY_TABLE", + 0x0bc0: "ER_FK_DEPTH_EXCEEDED", + 0x0bc1: "ER_COL_COUNT_DOESNT_MATCH_PLEASE_UPDATE_V2", + 0x0bc2: "ER_WARN_TRIGGER_DOESNT_HAVE_CREATED", + 0x0bc3: "ER_REFERENCED_TRG_DOES_NOT_EXIST", + 0x0bc4: "ER_EXPLAIN_NOT_SUPPORTED", + 0x0bc5: "ER_INVALID_FIELD_SIZE", + 0x0bc6: "ER_MISSING_HA_CREATE_OPTION", + 0x0bc7: "ER_ENGINE_OUT_OF_MEMORY", + 0x0bc8: "ER_PASSWORD_EXPIRE_ANONYMOUS_USER", + 0x0bc9: "ER_SLAVE_SQL_THREAD_MUST_STOP", + 0x0bca: "ER_NO_FT_MATERIALIZED_SUBQUERY", + 0x0bcb: "ER_INNODB_UNDO_LOG_FULL", + 0x0bcc: "ER_INVALID_ARGUMENT_FOR_LOGARITHM", + 0x0bcd: "ER_SLAVE_CHANNEL_IO_THREAD_MUST_STOP", + 0x0bce: "ER_WARN_OPEN_TEMP_TABLES_MUST_BE_ZERO", + 0x0bcf: "ER_WARN_ONLY_MASTER_LOG_FILE_NO_POS", + 0x0bd0: "ER_QUERY_TIMEOUT", + 0x0bd1: "ER_NON_RO_SELECT_DISABLE_TIMER", + 0x0bd2: "ER_DUP_LIST_ENTRY", + 0x0bd3: "ER_SQL_MODE_NO_EFFECT", + 0x0bd4: "ER_AGGREGATE_ORDER_FOR_UNION", + 0x0bd5: "ER_AGGREGATE_ORDER_NON_AGG_QUERY", + 0x0bd6: "ER_SLAVE_WORKER_STOPPED_PREVIOUS_THD_ERROR", + 0x0bd7: "ER_DONT_SUPPORT_SLAVE_PRESERVE_COMMIT_ORDER", + 0x0bd8: "ER_SERVER_OFFLINE_MODE", + 0x0bd9: "ER_GIS_DIFFERENT_SRIDS", + 0x0bda: "ER_GIS_UNSUPPORTED_ARGUMENT", + 0x0bdb: "ER_GIS_UNKNOWN_ERROR", + 0x0bdc: "ER_GIS_UNKNOWN_EXCEPTION", + 0x0bdd: "ER_GIS_INVALID_DATA", + 0x0bde: "ER_BOOST_GEOMETRY_EMPTY_INPUT_EXCEPTION", + 0x0bdf: "ER_BOOST_GEOMETRY_CENTROID_EXCEPTION", + 0x0be0: "ER_BOOST_GEOMETRY_OVERLAY_INVALID_INPUT_EXCEPTION", + 0x0be1: "ER_BOOST_GEOMETRY_TURN_INFO_EXCEPTION", + 0x0be2: "ER_BOOST_GEOMETRY_SELF_INTERSECTION_POINT_EXCEPTION", + 0x0be3: "ER_BOOST_GEOMETRY_UNKNOWN_EXCEPTION", + 0x0be4: "ER_STD_BAD_ALLOC_ERROR", + 0x0be5: "ER_STD_DOMAIN_ERROR", + 0x0be6: "ER_STD_LENGTH_ERROR", + 0x0be7: "ER_STD_INVALID_ARGUMENT", + 0x0be8: "ER_STD_OUT_OF_RANGE_ERROR", + 0x0be9: "ER_STD_OVERFLOW_ERROR", + 0x0bea: "ER_STD_RANGE_ERROR", + 0x0beb: "ER_STD_UNDERFLOW_ERROR", + 0x0bec: "ER_STD_LOGIC_ERROR", + 0x0bed: "ER_STD_RUNTIME_ERROR", + 0x0bee: "ER_STD_UNKNOWN_EXCEPTION", + 0x0bef: "ER_GIS_DATA_WRONG_ENDIANESS", + 0x0bf0: "ER_CHANGE_MASTER_PASSWORD_LENGTH", + 0x0bf1: "ER_USER_LOCK_WRONG_NAME", + 0x0bf2: "ER_USER_LOCK_DEADLOCK", + 0x0bf3: "ER_REPLACE_INACCESSIBLE_ROWS", + 0x0bf4: "ER_ALTER_OPERATION_NOT_SUPPORTED_REASON_GIS", + 0x0bf5: "ER_ILLEGAL_USER_VAR", + 0x0bf6: "ER_GTID_MODE_OFF", + 0x0bf7: "ER_UNSUPPORTED_BY_REPLICATION_THREAD", + 0x0bf8: "ER_INCORRECT_TYPE", + 0x0bf9: "ER_FIELD_IN_ORDER_NOT_SELECT", + 0x0bfa: "ER_AGGREGATE_IN_ORDER_NOT_SELECT", + 0x0bfb: "ER_INVALID_RPL_WILD_TABLE_FILTER_PATTERN", + 0x0bfc: "ER_NET_OK_PACKET_TOO_LARGE", + 0x0bfd: "ER_INVALID_JSON_DATA", + 0x0bfe: "ER_INVALID_GEOJSON_MISSING_MEMBER", + 0x0bff: "ER_INVALID_GEOJSON_WRONG_TYPE", + 0x0c00: "ER_INVALID_GEOJSON_UNSPECIFIED", + 0x0c01: "ER_DIMENSION_UNSUPPORTED", + 0x0c02: "ER_SLAVE_CHANNEL_DOES_NOT_EXIST", + 0x0c03: "ER_SLAVE_MULTIPLE_CHANNELS_HOST_PORT", + 0x0c04: "ER_SLAVE_CHANNEL_NAME_INVALID_OR_TOO_LONG", + 0x0c05: "ER_SLAVE_NEW_CHANNEL_WRONG_REPOSITORY", + 0x0c06: "ER_SLAVE_CHANNEL_DELETE", + 0x0c07: "ER_SLAVE_MULTIPLE_CHANNELS_CMD", + 0x0c08: "ER_SLAVE_MAX_CHANNELS_EXCEEDED", + 0x0c09: "ER_SLAVE_CHANNEL_MUST_STOP", + 0x0c0a: "ER_SLAVE_CHANNEL_NOT_RUNNING", + 0x0c0b: "ER_SLAVE_CHANNEL_WAS_RUNNING", + 0x0c0c: "ER_SLAVE_CHANNEL_WAS_NOT_RUNNING", + 0x0c0d: "ER_SLAVE_CHANNEL_SQL_THREAD_MUST_STOP", + 0x0c0e: "ER_SLAVE_CHANNEL_SQL_SKIP_COUNTER", + 0x0c0f: "ER_WRONG_FIELD_WITH_GROUP_V2", + 0x0c10: "ER_MIX_OF_GROUP_FUNC_AND_FIELDS_V2", + 0x0c11: "ER_WARN_DEPRECATED_SYSVAR_UPDATE", + 0x0c12: "ER_WARN_DEPRECATED_SQLMODE", + 0x0c13: "ER_CANNOT_LOG_PARTIAL_DROP_DATABASE_WITH_GTID", + 0x0c14: "ER_GROUP_REPLICATION_CONFIGURATION", + 0x0c15: "ER_GROUP_REPLICATION_RUNNING", + 0x0c16: "ER_GROUP_REPLICATION_APPLIER_INIT_ERROR", + 0x0c17: "ER_GROUP_REPLICATION_STOP_APPLIER_THREAD_TIMEOUT", + 0x0c18: "ER_GROUP_REPLICATION_COMMUNICATION_LAYER_SESSION_ERROR", + 0x0c19: "ER_GROUP_REPLICATION_COMMUNICATION_LAYER_JOIN_ERROR", + 0x0c1a: "ER_BEFORE_DML_VALIDATION_ERROR", + 0x0c1b: "ER_PREVENTS_VARIABLE_WITHOUT_RBR", + 0x0c1c: "ER_RUN_HOOK_ERROR", + 0x0c1d: "ER_TRANSACTION_ROLLBACK_DURING_COMMIT", + 0x0c1e: "ER_GENERATED_COLUMN_FUNCTION_IS_NOT_ALLOWED", + 0x0c1f: "ER_UNSUPPORTED_ALTER_INPLACE_ON_VIRTUAL_COLUMN", + 0x0c20: "ER_WRONG_FK_OPTION_FOR_GENERATED_COLUMN", + 0x0c21: "ER_NON_DEFAULT_VALUE_FOR_GENERATED_COLUMN", + 0x0c22: "ER_UNSUPPORTED_ACTION_ON_GENERATED_COLUMN", + 0x0c23: "ER_GENERATED_COLUMN_NON_PRIOR", + 0x0c24: "ER_DEPENDENT_BY_GENERATED_COLUMN", + 0x0c25: "ER_GENERATED_COLUMN_REF_AUTO_INC", + 0x0c26: "ER_FEATURE_NOT_AVAILABLE", + 0x0c27: "ER_CANT_SET_GTID_MODE", + 0x0c28: "ER_CANT_USE_AUTO_POSITION_WITH_GTID_MODE_OFF", + 0x0c29: "ER_CANT_REPLICATE_ANONYMOUS_WITH_AUTO_POSITION", + 0x0c2a: "ER_CANT_REPLICATE_ANONYMOUS_WITH_GTID_MODE_ON", + 0x0c2b: "ER_CANT_REPLICATE_GTID_WITH_GTID_MODE_OFF", + 0x0c2c: "ER_CANT_ENFORCE_GTID_CONSISTENCY_WITH_ONGOING_GTID_VIOLATING_TX", + 0x0c2d: "ER_ENFORCE_GTID_CONSISTENCY_WARN_WITH_ONGOING_GTID_VIOLATING_TX", + 0x0c2e: "ER_ACCOUNT_HAS_BEEN_LOCKED", + 0x0c2f: "ER_WRONG_TABLESPACE_NAME", + 0x0c30: "ER_TABLESPACE_IS_NOT_EMPTY", + 0x0c31: "ER_WRONG_FILE_NAME", + 0x0c32: "ER_BOOST_GEOMETRY_INCONSISTENT_TURNS_EXCEPTION", + 0x0c33: "ER_WARN_OPTIMIZER_HINT_SYNTAX_ERROR", + 0x0c34: "ER_WARN_BAD_MAX_EXECUTION_TIME", + 0x0c35: "ER_WARN_UNSUPPORTED_MAX_EXECUTION_TIME", + 0x0c36: "ER_WARN_CONFLICTING_HINT", + 0x0c37: "ER_WARN_UNKNOWN_QB_NAME", + 0x0c38: "ER_UNRESOLVED_HINT_NAME", + 0x0c39: "ER_WARN_ON_MODIFYING_GTID_EXECUTED_TABLE", + 0x0c3a: "ER_PLUGGABLE_PROTOCOL_COMMAND_NOT_SUPPORTED", + 0x0c3b: "ER_LOCKING_SERVICE_WRONG_NAME", + 0x0c3c: "ER_LOCKING_SERVICE_DEADLOCK", + 0x0c3d: "ER_LOCKING_SERVICE_TIMEOUT", + 0x0c3e: "ER_GIS_MAX_POINTS_IN_GEOMETRY_OVERFLOWED", + 0x0c3f: "ER_SQL_MODE_MERGED", + 0x0c40: "ER_VTOKEN_PLUGIN_TOKEN_MISMATCH", + 0x0c41: "ER_VTOKEN_PLUGIN_TOKEN_NOT_FOUND", + 0x0c42: "ER_CANT_SET_VARIABLE_WHEN_OWNING_GTID", + 0x0c43: "ER_SLAVE_CHANNEL_OPERATION_NOT_ALLOWED", + 0x0c44: "ER_INVALID_JSON_TEXT", + 0x0c45: "ER_INVALID_JSON_TEXT_IN_PARAM", + 0x0c46: "ER_INVALID_JSON_BINARY_DATA", + 0x0c47: "ER_INVALID_JSON_PATH", + 0x0c48: "ER_INVALID_JSON_CHARSET", + 0x0c49: "ER_INVALID_JSON_CHARSET_IN_FUNCTION", + 0x0c4a: "ER_INVALID_TYPE_FOR_JSON", + 0x0c4b: "ER_INVALID_CAST_TO_JSON", + 0x0c4c: "ER_INVALID_JSON_PATH_CHARSET", + 0x0c4d: "ER_INVALID_JSON_PATH_WILDCARD", + 0x0c4e: "ER_JSON_VALUE_TOO_BIG", + 0x0c4f: "ER_JSON_KEY_TOO_BIG", + 0x0c50: "ER_JSON_USED_AS_KEY", + 0x0c51: "ER_JSON_VACUOUS_PATH", + 0x0c52: "ER_JSON_BAD_ONE_OR_ALL_ARG", + 0x0c53: "ER_NUMERIC_JSON_VALUE_OUT_OF_RANGE", + 0x0c54: "ER_INVALID_JSON_VALUE_FOR_CAST", + 0x0c55: "ER_JSON_DOCUMENT_TOO_DEEP", + 0x0c56: "ER_JSON_DOCUMENT_NULL_KEY", + 0x0c57: "ER_SECURE_TRANSPORT_REQUIRED", + 0x0c58: "ER_NO_SECURE_TRANSPORTS_CONFIGURED", + 0x0c59: "ER_DISABLED_STORAGE_ENGINE", + 0x0c5a: "ER_USER_DOES_NOT_EXIST", + 0x0c5b: "ER_USER_ALREADY_EXISTS", + 0x0c5c: "ER_AUDIT_API_ABORT", + 0x0c5d: "ER_INVALID_JSON_PATH_ARRAY_CELL", + 0x0c5e: "ER_BUFPOOL_RESIZE_INPROGRESS", + 0x0c5f: "ER_FEATURE_DISABLED_SEE_DOC", + 0x0c60: "ER_SERVER_ISNT_AVAILABLE", + 0x0c61: "ER_SESSION_WAS_KILLED", + 0x0c62: "ER_CAPACITY_EXCEEDED", + 0x0c63: "ER_CAPACITY_EXCEEDED_IN_RANGE_OPTIMIZER", + 0x0c64: "ER_TABLE_NEEDS_UPG_PART", + 0x0c65: "ER_CANT_WAIT_FOR_EXECUTED_GTID_SET_WHILE_OWNING_A_GTID", + 0x0c66: "ER_CANNOT_ADD_FOREIGN_BASE_COL_VIRTUAL", + 0x0c67: "ER_CANNOT_CREATE_VIRTUAL_INDEX_CONSTRAINT", + 0x0c68: "ER_ERROR_ON_MODIFYING_GTID_EXECUTED_TABLE", + 0x0c69: "ER_LOCK_REFUSED_BY_ENGINE", + 0x0c6a: "ER_UNSUPPORTED_ALTER_ONLINE_ON_VIRTUAL_COLUMN", + 0x0c6b: "ER_MASTER_KEY_ROTATION_NOT_SUPPORTED_BY_SE", + 0x0c6c: "ER_MASTER_KEY_ROTATION_ERROR_BY_SE", + 0x0c6d: "ER_MASTER_KEY_ROTATION_BINLOG_FAILED", + 0x0c6e: "ER_MASTER_KEY_ROTATION_SE_UNAVAILABLE", + 0x0c6f: "ER_TABLESPACE_CANNOT_ENCRYPT", + 0x0c70: "ER_INVALID_ENCRYPTION_OPTION", + 0x0c71: "ER_CANNOT_FIND_KEY_IN_KEYRING", + 0x0c72: "ER_CAPACITY_EXCEEDED_IN_PARSER", + 0x0c73: "ER_UNSUPPORTED_ALTER_ENCRYPTION_INPLACE", + 0x0c74: "ER_KEYRING_UDF_KEYRING_SERVICE_ERROR", + 0x0c75: "ER_USER_COLUMN_OLD_LENGTH", + 0x0c76: "ER_CANT_RESET_MASTER", + 0x0c77: "ER_GROUP_REPLICATION_MAX_GROUP_SIZE", + 0x0c78: "ER_CANNOT_ADD_FOREIGN_BASE_COL_STORED", + 0x0c79: "ER_TABLE_REFERENCED", + 0x0c7a: "ER_PARTITION_ENGINE_DEPRECATED_FOR_TABLE", + 0x0c7b: "ER_WARN_USING_GEOMFROMWKB_TO_SET_SRID_ZERO", + 0x0c7c: "ER_WARN_USING_GEOMFROMWKB_TO_SET_SRID", + 0x0c7d: "ER_XA_RETRY", + 0x0c7e: "ER_KEYRING_AWS_UDF_AWS_KMS_ERROR", + 0x0c7f: "ER_BINLOG_UNSAFE_XA", + 0x0c80: "ER_UDF_ERROR", + 0x0c81: "ER_KEYRING_MIGRATION_FAILURE", + 0x0c82: "ER_KEYRING_ACCESS_DENIED_ERROR", + 0x0c83: "ER_KEYRING_MIGRATION_STATUS", + 0x0c84: "ER_PLUGIN_FAILED_TO_OPEN_TABLES", + 0x0c85: "ER_PLUGIN_FAILED_TO_OPEN_TABLE", + 0x0c86: "ER_AUDIT_LOG_NO_KEYRING_PLUGIN_INSTALLED", + 0x0c87: "ER_AUDIT_LOG_ENCRYPTION_PASSWORD_HAS_NOT_BEEN_SET", + 0x0c88: "ER_AUDIT_LOG_COULD_NOT_CREATE_AES_KEY", + 0x0c89: "ER_AUDIT_LOG_ENCRYPTION_PASSWORD_CANNOT_BE_FETCHED", + 0x0c8a: "ER_AUDIT_LOG_JSON_FILTERING_NOT_ENABLED", + 0x0c8b: "ER_AUDIT_LOG_UDF_INSUFFICIENT_PRIVILEGE", + 0x0c8c: "ER_AUDIT_LOG_SUPER_PRIVILEGE_REQUIRED", + 0x0c8d: "ER_COULD_NOT_REINITIALIZE_AUDIT_LOG_FILTERS", + 0x0c8e: "ER_AUDIT_LOG_UDF_INVALID_ARGUMENT_TYPE", + 0x0c8f: "ER_AUDIT_LOG_UDF_INVALID_ARGUMENT_COUNT", + 0x0c90: "ER_AUDIT_LOG_HAS_NOT_BEEN_INSTALLED", + 0x0c91: "ER_AUDIT_LOG_UDF_READ_INVALID_MAX_ARRAY_LENGTH_ARG_TYPE", + 0x0c92: "ER_AUDIT_LOG_UDF_READ_INVALID_MAX_ARRAY_LENGTH_ARG_VALUE", + 0x0c93: "ER_AUDIT_LOG_JSON_FILTER_PARSING_ERROR", + 0x0c94: "ER_AUDIT_LOG_JSON_FILTER_NAME_CANNOT_BE_EMPTY", + 0x0c95: "ER_AUDIT_LOG_JSON_USER_NAME_CANNOT_BE_EMPTY", + 0x0c96: "ER_AUDIT_LOG_JSON_FILTER_DOES_NOT_EXISTS", + 0x0c97: "ER_AUDIT_LOG_USER_FIRST_CHARACTER_MUST_BE_ALPHANUMERIC", + 0x0c98: "ER_AUDIT_LOG_USER_NAME_INVALID_CHARACTER", + 0x0c99: "ER_AUDIT_LOG_HOST_NAME_INVALID_CHARACTER", + 0x0c9a: "WARN_DEPRECATED_MAXDB_SQL_MODE_FOR_TIMESTAMP", + 0x0c9b: "ER_XA_REPLICATION_FILTERS", + 0x0dac: "ER_UNSUPPORT_COMPRESSED_TEMPORARY_TABLE", + 0x0dad: "ER_ACL_OPERATION_FAILED", + 0x0dae: "ER_UNSUPPORTED_INDEX_ALGORITHM", + 0x0daf: "ER_NO_SUCH_DB", + 0x0db0: "ER_TOO_BIG_ENUM", + 0x0db1: "ER_TOO_LONG_SET_ENUM_VALUE", + 0x0db2: "ER_INVALID_DD_OBJECT", + 0x0db3: "ER_UPDATING_DD_TABLE", + 0x0db4: "ER_INVALID_DD_OBJECT_ID", + 0x0db5: "ER_INVALID_DD_OBJECT_NAME", + 0x0db6: "ER_TABLESPACE_MISSING_WITH_NAME", + 0x0db7: "ER_TOO_LONG_ROUTINE_COMMENT", + 0x0db8: "ER_SP_LOAD_FAILED", + 0x0db9: "ER_INVALID_BITWISE_OPERANDS_SIZE", + 0x0dba: "ER_INVALID_BITWISE_AGGREGATE_OPERANDS_SIZE", + 0x0dbb: "ER_WARN_UNSUPPORTED_HINT", + 0x0dbc: "ER_UNEXPECTED_GEOMETRY_TYPE", + 0x0dbd: "ER_SRS_PARSE_ERROR", + 0x0dbe: "ER_SRS_PROJ_PARAMETER_MISSING", + 0x0dbf: "ER_WARN_SRS_NOT_FOUND", + 0x0dc0: "ER_SRS_NOT_CARTESIAN", + 0x0dc1: "ER_SRS_NOT_CARTESIAN_UNDEFINED", + 0x0dc2: "ER_PK_INDEX_CANT_BE_INVISIBLE", + 0x0dc3: "ER_UNKNOWN_AUTHID", + 0x0dc4: "ER_FAILED_ROLE_GRANT", + 0x0dc5: "ER_OPEN_ROLE_TABLES", + 0x0dc6: "ER_FAILED_DEFAULT_ROLES", + 0x0dc7: "ER_COMPONENTS_NO_SCHEME", + 0x0dc8: "ER_COMPONENTS_NO_SCHEME_SERVICE", + 0x0dc9: "ER_COMPONENTS_CANT_LOAD", + 0x0dca: "ER_ROLE_NOT_GRANTED", + 0x0dcb: "ER_FAILED_REVOKE_ROLE", + 0x0dcc: "ER_RENAME_ROLE", + 0x0dcd: "ER_COMPONENTS_CANT_ACQUIRE_SERVICE_IMPLEMENTATION", + 0x0dce: "ER_COMPONENTS_CANT_SATISFY_DEPENDENCY", + 0x0dcf: "ER_COMPONENTS_LOAD_CANT_REGISTER_SERVICE_IMPLEMENTATION", + 0x0dd0: "ER_COMPONENTS_LOAD_CANT_INITIALIZE", + 0x0dd1: "ER_COMPONENTS_UNLOAD_NOT_LOADED", + 0x0dd2: "ER_COMPONENTS_UNLOAD_CANT_DEINITIALIZE", + 0x0dd3: "ER_COMPONENTS_CANT_RELEASE_SERVICE", + 0x0dd4: "ER_COMPONENTS_UNLOAD_CANT_UNREGISTER_SERVICE", + 0x0dd5: "ER_COMPONENTS_CANT_UNLOAD", + 0x0dd6: "ER_WARN_UNLOAD_THE_NOT_PERSISTED", + 0x0dd7: "ER_COMPONENT_TABLE_INCORRECT", + 0x0dd8: "ER_COMPONENT_MANIPULATE_ROW_FAILED", + 0x0dd9: "ER_COMPONENTS_UNLOAD_DUPLICATE_IN_GROUP", + 0x0dda: "ER_CANT_SET_GTID_PURGED_DUE_SETS_CONSTRAINTS", + 0x0ddb: "ER_CANNOT_LOCK_USER_MANAGEMENT_CACHES", + 0x0ddc: "ER_SRS_NOT_FOUND", + 0x0ddd: "ER_VARIABLE_NOT_PERSISTED", + 0x0dde: "ER_IS_QUERY_INVALID_CLAUSE", + 0x0ddf: "ER_UNABLE_TO_STORE_STATISTICS", + 0x0de0: "ER_NO_SYSTEM_SCHEMA_ACCESS", + 0x0de1: "ER_NO_SYSTEM_TABLESPACE_ACCESS", + 0x0de2: "ER_NO_SYSTEM_TABLE_ACCESS", + 0x0de3: "ER_NO_SYSTEM_TABLE_ACCESS_FOR_DICTIONARY_TABLE", + 0x0de4: "ER_NO_SYSTEM_TABLE_ACCESS_FOR_SYSTEM_TABLE", + 0x0de5: "ER_NO_SYSTEM_TABLE_ACCESS_FOR_TABLE", + 0x0de6: "ER_INVALID_OPTION_KEY", + 0x0de7: "ER_INVALID_OPTION_VALUE", + 0x0de8: "ER_INVALID_OPTION_KEY_VALUE_PAIR", + 0x0de9: "ER_INVALID_OPTION_START_CHARACTER", + 0x0dea: "ER_INVALID_OPTION_END_CHARACTER", + 0x0deb: "ER_INVALID_OPTION_CHARACTERS", + 0x0dec: "ER_DUPLICATE_OPTION_KEY", + 0x0ded: "ER_WARN_SRS_NOT_FOUND_AXIS_ORDER", + 0x0dee: "ER_NO_ACCESS_TO_NATIVE_FCT", + 0x0def: "ER_RESET_MASTER_TO_VALUE_OUT_OF_RANGE", + 0x0df0: "ER_UNRESOLVED_TABLE_LOCK", + 0x0df1: "ER_DUPLICATE_TABLE_LOCK", + 0x0df2: "ER_BINLOG_UNSAFE_SKIP_LOCKED", + 0x0df3: "ER_BINLOG_UNSAFE_NOWAIT", + 0x0df4: "ER_LOCK_NOWAIT", + 0x0df5: "ER_CTE_RECURSIVE_REQUIRES_UNION", + 0x0df6: "ER_CTE_RECURSIVE_REQUIRES_NONRECURSIVE_FIRST", + 0x0df7: "ER_CTE_RECURSIVE_FORBIDS_AGGREGATION", + 0x0df8: "ER_CTE_RECURSIVE_FORBIDDEN_JOIN_ORDER", + 0x0df9: "ER_CTE_RECURSIVE_REQUIRES_SINGLE_REFERENCE", + 0x0dfa: "ER_SWITCH_TMP_ENGINE", + 0x0dfb: "ER_WINDOW_NO_SUCH_WINDOW", + 0x0dfc: "ER_WINDOW_CIRCULARITY_IN_WINDOW_GRAPH", + 0x0dfd: "ER_WINDOW_NO_CHILD_PARTITIONING", + 0x0dfe: "ER_WINDOW_NO_INHERIT_FRAME", + 0x0dff: "ER_WINDOW_NO_REDEFINE_ORDER_BY", + 0x0e00: "ER_WINDOW_FRAME_START_ILLEGAL", + 0x0e01: "ER_WINDOW_FRAME_END_ILLEGAL", + 0x0e02: "ER_WINDOW_FRAME_ILLEGAL", + 0x0e03: "ER_WINDOW_RANGE_FRAME_ORDER_TYPE", + 0x0e04: "ER_WINDOW_RANGE_FRAME_TEMPORAL_TYPE", + 0x0e05: "ER_WINDOW_RANGE_FRAME_NUMERIC_TYPE", + 0x0e06: "ER_WINDOW_RANGE_BOUND_NOT_CONSTANT", + 0x0e07: "ER_WINDOW_DUPLICATE_NAME", + 0x0e08: "ER_WINDOW_ILLEGAL_ORDER_BY", + 0x0e09: "ER_WINDOW_INVALID_WINDOW_FUNC_USE", + 0x0e0a: "ER_WINDOW_INVALID_WINDOW_FUNC_ALIAS_USE", + 0x0e0b: "ER_WINDOW_NESTED_WINDOW_FUNC_USE_IN_WINDOW_SPEC", + 0x0e0c: "ER_WINDOW_ROWS_INTERVAL_USE", + 0x0e0d: "ER_WINDOW_NO_GROUP_ORDER", + 0x0e0e: "ER_WINDOW_EXPLAIN_JSON", + 0x0e0f: "ER_WINDOW_FUNCTION_IGNORES_FRAME", + 0x0e10: "ER_WL9236_NOW_UNUSED", + 0x0e11: "ER_INVALID_NO_OF_ARGS", + 0x0e12: "ER_FIELD_IN_GROUPING_NOT_GROUP_BY", + 0x0e13: "ER_TOO_LONG_TABLESPACE_COMMENT", + 0x0e14: "ER_ENGINE_CANT_DROP_TABLE", + 0x0e15: "ER_ENGINE_CANT_DROP_MISSING_TABLE", + 0x0e16: "ER_TABLESPACE_DUP_FILENAME", + 0x0e17: "ER_DB_DROP_RMDIR2", + 0x0e18: "ER_IMP_NO_FILES_MATCHED", + 0x0e19: "ER_IMP_SCHEMA_DOES_NOT_EXIST", + 0x0e1a: "ER_IMP_TABLE_ALREADY_EXISTS", + 0x0e1b: "ER_IMP_INCOMPATIBLE_MYSQLD_VERSION", + 0x0e1c: "ER_IMP_INCOMPATIBLE_DD_VERSION", + 0x0e1d: "ER_IMP_INCOMPATIBLE_SDI_VERSION", + 0x0e1e: "ER_WARN_INVALID_HINT", + 0x0e1f: "ER_VAR_DOES_NOT_EXIST", + 0x0e20: "ER_LONGITUDE_OUT_OF_RANGE", + 0x0e21: "ER_LATITUDE_OUT_OF_RANGE", + 0x0e22: "ER_NOT_IMPLEMENTED_FOR_GEOGRAPHIC_SRS", + 0x0e23: "ER_ILLEGAL_PRIVILEGE_LEVEL", + 0x0e24: "ER_NO_SYSTEM_VIEW_ACCESS", + 0x0e25: "ER_COMPONENT_FILTER_FLABBERGASTED", + 0x0e26: "ER_PART_EXPR_TOO_LONG", + 0x0e27: "ER_UDF_DROP_DYNAMICALLY_REGISTERED", + 0x0e28: "ER_UNABLE_TO_STORE_COLUMN_STATISTICS", + 0x0e29: "ER_UNABLE_TO_UPDATE_COLUMN_STATISTICS", + 0x0e2a: "ER_UNABLE_TO_DROP_COLUMN_STATISTICS", + 0x0e2b: "ER_UNABLE_TO_BUILD_HISTOGRAM", + 0x0e2c: "ER_MANDATORY_ROLE", + 0x0e2d: "ER_MISSING_TABLESPACE_FILE", + 0x0e2e: "ER_PERSIST_ONLY_ACCESS_DENIED_ERROR", + 0x0e2f: "ER_CMD_NEED_SUPER", + 0x0e30: "ER_PATH_IN_DATADIR", + 0x0e31: "ER_DDL_IN_PROGRESS", + 0x0e32: "ER_TOO_MANY_CONCURRENT_CLONES", + 0x0e33: "ER_APPLIER_LOG_EVENT_VALIDATION_ERROR", + 0x0e34: "ER_CTE_MAX_RECURSION_DEPTH", + 0x0e35: "ER_NOT_HINT_UPDATABLE_VARIABLE", + 0x0e36: "ER_CREDENTIALS_CONTRADICT_TO_HISTORY", + 0x0e37: "ER_WARNING_PASSWORD_HISTORY_CLAUSES_VOID", + 0x0e38: "ER_CLIENT_DOES_NOT_SUPPORT", + 0x0e39: "ER_I_S_SKIPPED_TABLESPACE", + 0x0e3a: "ER_TABLESPACE_ENGINE_MISMATCH", + 0x0e3b: "ER_WRONG_SRID_FOR_COLUMN", + 0x0e3c: "ER_CANNOT_ALTER_SRID_DUE_TO_INDEX", + 0x0e3d: "ER_WARN_BINLOG_PARTIAL_UPDATES_DISABLED", + 0x0e3e: "ER_WARN_BINLOG_V1_ROW_EVENTS_DISABLED", + 0x0e3f: "ER_WARN_BINLOG_PARTIAL_UPDATES_SUGGESTS_PARTIAL_IMAGES", + 0x0e40: "ER_COULD_NOT_APPLY_JSON_DIFF", + 0x0e41: "ER_CORRUPTED_JSON_DIFF", + 0x0e42: "ER_RESOURCE_GROUP_EXISTS", + 0x0e43: "ER_RESOURCE_GROUP_NOT_EXISTS", + 0x0e44: "ER_INVALID_VCPU_ID", + 0x0e45: "ER_INVALID_VCPU_RANGE", + 0x0e46: "ER_INVALID_THREAD_PRIORITY", + 0x0e47: "ER_DISALLOWED_OPERATION", + 0x0e48: "ER_RESOURCE_GROUP_BUSY", + 0x0e49: "ER_RESOURCE_GROUP_DISABLED", + 0x0e4a: "ER_FEATURE_UNSUPPORTED", + 0x0e4b: "ER_ATTRIBUTE_IGNORED", + 0x0e4c: "ER_INVALID_THREAD_ID", + 0x0e4d: "ER_RESOURCE_GROUP_BIND_FAILED", + 0x0e4e: "ER_INVALID_USE_OF_FORCE_OPTION", + 0x0e4f: "ER_GROUP_REPLICATION_COMMAND_FAILURE", + 0x0e50: "ER_SDI_OPERATION_FAILED", + 0x0e51: "ER_MISSING_JSON_TABLE_VALUE", + 0x0e52: "ER_WRONG_JSON_TABLE_VALUE", + 0x0e53: "ER_TF_MUST_HAVE_ALIAS", + 0x0e54: "ER_TF_FORBIDDEN_JOIN_TYPE", + 0x0e55: "ER_JT_VALUE_OUT_OF_RANGE", + 0x0e56: "ER_JT_MAX_NESTED_PATH", + 0x0e57: "ER_PASSWORD_EXPIRATION_NOT_SUPPORTED_BY_AUTH_METHOD", + 0x0e58: "ER_INVALID_GEOJSON_CRS_NOT_TOP_LEVEL", + 0x0e59: "ER_BAD_NULL_ERROR_NOT_IGNORED", + 0x0e5a: "WARN_USELESS_SPATIAL_INDEX", + 0x0e5b: "ER_DISK_FULL_NOWAIT", + 0x0e5c: "ER_PARSE_ERROR_IN_DIGEST_FN", + 0x0e5d: "ER_UNDISCLOSED_PARSE_ERROR_IN_DIGEST_FN", + 0x0e5e: "ER_SCHEMA_DIR_EXISTS", + 0x0e5f: "ER_SCHEMA_DIR_MISSING", + 0x0e60: "ER_SCHEMA_DIR_CREATE_FAILED", + 0x0e61: "ER_SCHEMA_DIR_UNKNOWN", + 0x0e62: "ER_ONLY_IMPLEMENTED_FOR_SRID_0_AND_4326", + 0x0e63: "ER_BINLOG_EXPIRE_LOG_DAYS_AND_SECS_USED_TOGETHER", + 0x0e64: "ER_REGEXP_BUFFER_OVERFLOW", + 0x0e65: "ER_REGEXP_ILLEGAL_ARGUMENT", + 0x0e66: "ER_REGEXP_INDEX_OUTOFBOUNDS_ERROR", + 0x0e67: "ER_REGEXP_INTERNAL_ERROR", + 0x0e68: "ER_REGEXP_RULE_SYNTAX", + 0x0e69: "ER_REGEXP_BAD_ESCAPE_SEQUENCE", + 0x0e6a: "ER_REGEXP_UNIMPLEMENTED", + 0x0e6b: "ER_REGEXP_MISMATCHED_PAREN", + 0x0e6c: "ER_REGEXP_BAD_INTERVAL", + 0x0e6d: "ER_REGEXP_MAX_LT_MIN", + 0x0e6e: "ER_REGEXP_INVALID_BACK_REF", + 0x0e6f: "ER_REGEXP_LOOK_BEHIND_LIMIT", + 0x0e70: "ER_REGEXP_MISSING_CLOSE_BRACKET", + 0x0e71: "ER_REGEXP_INVALID_RANGE", + 0x0e72: "ER_REGEXP_STACK_OVERFLOW", + 0x0e73: "ER_REGEXP_TIME_OUT", + 0x0e74: "ER_REGEXP_PATTERN_TOO_BIG", + 0x0e75: "ER_CANT_SET_ERROR_LOG_SERVICE", + 0x0e76: "ER_EMPTY_PIPELINE_FOR_ERROR_LOG_SERVICE", + 0x0e77: "ER_COMPONENT_FILTER_DIAGNOSTICS", + 0x0e78: "ER_NOT_IMPLEMENTED_FOR_CARTESIAN_SRS", + 0x0e79: "ER_NOT_IMPLEMENTED_FOR_PROJECTED_SRS", + 0x0e7a: "ER_NONPOSITIVE_RADIUS", + 0x0e7b: "ER_RESTART_SERVER_FAILED", + 0x0e7c: "ER_SRS_MISSING_MANDATORY_ATTRIBUTE", + 0x0e7d: "ER_SRS_MULTIPLE_ATTRIBUTE_DEFINITIONS", + 0x0e7e: "ER_SRS_NAME_CANT_BE_EMPTY_OR_WHITESPACE", + 0x0e7f: "ER_SRS_ORGANIZATION_CANT_BE_EMPTY_OR_WHITESPACE", + 0x0e80: "ER_SRS_ID_ALREADY_EXISTS", + 0x0e81: "ER_WARN_SRS_ID_ALREADY_EXISTS", + 0x0e82: "ER_CANT_MODIFY_SRID_0", + 0x0e83: "ER_WARN_RESERVED_SRID_RANGE", + 0x0e84: "ER_CANT_MODIFY_SRS_USED_BY_COLUMN", + 0x0e85: "ER_SRS_INVALID_CHARACTER_IN_ATTRIBUTE", + 0x0e86: "ER_SRS_ATTRIBUTE_STRING_TOO_LONG", + 0x0e87: "ER_DEPRECATED_UTF8_ALIAS", + 0x0e88: "ER_DEPRECATED_NATIONAL", + 0x0e89: "ER_INVALID_DEFAULT_UTF8MB4_COLLATION", + 0x0e8a: "ER_UNABLE_TO_COLLECT_LOG_STATUS", + 0x0e8b: "ER_RESERVED_TABLESPACE_NAME", + 0x0e8c: "ER_UNABLE_TO_SET_OPTION", + 0x0e8d: "ER_SLAVE_POSSIBLY_DIVERGED_AFTER_DDL", + 0x0e8e: "ER_SRS_NOT_GEOGRAPHIC", + 0x0e8f: "ER_POLYGON_TOO_LARGE", + 0x0e90: "ER_SPATIAL_UNIQUE_INDEX", + 0x0e91: "ER_INDEX_TYPE_NOT_SUPPORTED_FOR_SPATIAL_INDEX", + 0x0e92: "ER_FK_CANNOT_DROP_PARENT", + 0x0e93: "ER_GEOMETRY_PARAM_LONGITUDE_OUT_OF_RANGE", + 0x0e94: "ER_GEOMETRY_PARAM_LATITUDE_OUT_OF_RANGE", + 0x0e95: "ER_FK_CANNOT_USE_VIRTUAL_COLUMN", + 0x0e96: "ER_FK_NO_COLUMN_PARENT", + 0x0f61: "ER_AUTHCACHE_ROLE_TABLES_DODGY", + 0x11e0: "ER_DISK_FULL", + 0x2710: "ER_PARSER_TRACE", + 0x2711: "ER_BOOTSTRAP_CANT_THREAD", + 0x2712: "ER_TRIGGER_INVALID_VALUE", + 0x2713: "ER_OPT_WRONG_TREE", + 0x2714: "ER_DD_FAILSAFE", + 0x2715: "ER_DD_NO_WRITES_NO_REPOPULATION", + 0x2716: "ER_DD_VERSION_FOUND", + 0x2717: "ER_DD_VERSION_INSTALLED", + 0x2718: "ER_DD_VERSION_UNSUPPORTED", + 0x2719: "ER_LOG_SYSLOG_FACILITY_FAIL", + 0x271a: "ER_LOG_SYSLOG_CANNOT_OPEN", + 0x271b: "ER_LOG_SLOW_CANNOT_OPEN", + 0x271c: "ER_LOG_GENERAL_CANNOT_OPEN", + 0x271d: "ER_LOG_CANNOT_WRITE", + 0x271e: "ER_RPL_ZOMBIE_ENCOUNTERED", + 0x271f: "ER_RPL_GTID_TABLE_CANNOT_OPEN", + 0x2720: "ER_SYSTEM_SCHEMA_NOT_FOUND", + 0x2721: "ER_DD_INIT_UPGRADE_FAILED", + 0x2722: "ER_VIEW_UNKNOWN_CHARSET_OR_COLLATION", + 0x2723: "ER_DD_VIEW_CANT_ALLOC_CHARSET", + 0x2724: "ER_DD_INIT_FAILED", + 0x2725: "ER_DD_UPDATING_PLUGIN_MD_FAILED", + 0x2726: "ER_DD_POPULATING_TABLES_FAILED", + 0x2727: "ER_DD_VIEW_CANT_CREATE", + 0x2728: "ER_DD_METADATA_NOT_FOUND", + 0x2729: "ER_DD_CACHE_NOT_EMPTY_AT_SHUTDOWN", + 0x272a: "ER_DD_OBJECT_REMAINS", + 0x272b: "ER_DD_OBJECT_REMAINS_IN_RELEASER", + 0x272c: "ER_DD_OBJECT_RELEASER_REMAINS", + 0x272d: "ER_DD_CANT_GET_OBJECT_KEY", + 0x272e: "ER_DD_CANT_CREATE_OBJECT_KEY", + 0x272f: "ER_CANT_CREATE_HANDLE_MGR_THREAD", + 0x2730: "ER_RPL_REPO_HAS_GAPS", + 0x2731: "ER_INVALID_VALUE_FOR_ENFORCE_GTID_CONSISTENCY", + 0x2732: "ER_CHANGED_ENFORCE_GTID_CONSISTENCY", + 0x2733: "ER_CHANGED_GTID_MODE", + 0x2734: "ER_DISABLED_STORAGE_ENGINE_AS_DEFAULT", + 0x2735: "ER_DEBUG_SYNC_HIT", + 0x2736: "ER_DEBUG_SYNC_EXECUTED", + 0x2737: "ER_DEBUG_SYNC_THREAD_MAX", + 0x2738: "ER_DEBUG_SYNC_OOM", + 0x2739: "ER_CANT_INIT_TC_LOG", + 0x273a: "ER_EVENT_CANT_INIT_QUEUE", + 0x273b: "ER_EVENT_PURGING_QUEUE", + 0x273c: "ER_EVENT_LAST_EXECUTION", + 0x273d: "ER_EVENT_MESSAGE_STACK", + 0x273e: "ER_EVENT_EXECUTION_FAILED", + 0x273f: "ER_CANT_INIT_SCHEDULER_THREAD", + 0x2740: "ER_SCHEDULER_STOPPED", + 0x2741: "ER_CANT_CREATE_SCHEDULER_THREAD", + 0x2742: "ER_SCHEDULER_WAITING", + 0x2743: "ER_SCHEDULER_STARTED", + 0x2744: "ER_SCHEDULER_STOPPING_FAILED_TO_GET_EVENT", + 0x2745: "ER_SCHEDULER_STOPPING_FAILED_TO_CREATE_WORKER", + 0x2746: "ER_SCHEDULER_KILLING", + 0x2747: "ER_UNABLE_TO_RESOLVE_IP", + 0x2748: "ER_UNABLE_TO_RESOLVE_HOSTNAME", + 0x2749: "ER_HOSTNAME_RESEMBLES_IPV4", + 0x274a: "ER_HOSTNAME_DOESNT_RESOLVE_TO", + 0x274b: "ER_ADDRESSES_FOR_HOSTNAME_HEADER", + 0x274c: "ER_ADDRESSES_FOR_HOSTNAME_LIST_ITEM", + 0x274d: "ER_TRG_WITHOUT_DEFINER", + 0x274e: "ER_TRG_NO_CLIENT_CHARSET", + 0x274f: "ER_PARSING_VIEW", + 0x2750: "ER_COMPONENTS_INFRASTRUCTURE_BOOTSTRAP", + 0x2751: "ER_COMPONENTS_INFRASTRUCTURE_SHUTDOWN", + 0x2752: "ER_COMPONENTS_PERSIST_LOADER_BOOTSTRAP", + 0x2753: "ER_DEPART_WITH_GRACE", + 0x2754: "ER_CA_SELF_SIGNED", + 0x2755: "ER_SSL_LIBRARY_ERROR", + 0x2756: "ER_NO_THD_NO_UUID", + 0x2757: "ER_UUID_SALT", + 0x2758: "ER_UUID_IS", + 0x2759: "ER_UUID_INVALID", + 0x275a: "ER_UUID_SCRUB", + 0x275b: "ER_CREATING_NEW_UUID", + 0x275c: "ER_CANT_CREATE_UUID", + 0x275d: "ER_UNKNOWN_UNSUPPORTED_STORAGE_ENGINE", + 0x275e: "ER_SECURE_AUTH_VALUE_UNSUPPORTED", + 0x275f: "ER_INVALID_INSTRUMENT", + 0x2760: "ER_INNODB_MANDATORY", + 0x2762: "ER_OLD_PASSWORDS_NO_MIDDLE_GROUND", + 0x2763: "ER_VERBOSE_REQUIRES_HELP", + 0x2764: "ER_POINTLESS_WITHOUT_SLOWLOG", + 0x2765: "ER_WASTEFUL_NET_BUFFER_SIZE", + 0x2766: "ER_DEPRECATED_TIMESTAMP_IMPLICIT_DEFAULTS", + 0x2767: "ER_FT_BOOL_SYNTAX_INVALID", + 0x2768: "ER_CREDENTIALLESS_AUTO_USER_BAD", + 0x2769: "ER_CONNECTION_HANDLING_OOM", + 0x276a: "ER_THREAD_HANDLING_OOM", + 0x276b: "ER_CANT_CREATE_TEST_FILE", + 0x276c: "ER_CANT_CREATE_PID_FILE", + 0x276d: "ER_CANT_REMOVE_PID_FILE", + 0x276e: "ER_CANT_CREATE_SHUTDOWN_THREAD", + 0x276f: "ER_SEC_FILE_PRIV_CANT_ACCESS_DIR", + 0x2770: "ER_SEC_FILE_PRIV_IGNORED", + 0x2771: "ER_SEC_FILE_PRIV_EMPTY", + 0x2772: "ER_SEC_FILE_PRIV_NULL", + 0x2773: "ER_SEC_FILE_PRIV_DIRECTORY_INSECURE", + 0x2774: "ER_SEC_FILE_PRIV_CANT_STAT", + 0x2775: "ER_SEC_FILE_PRIV_DIRECTORY_PERMISSIONS", + 0x2776: "ER_SEC_FILE_PRIV_ARGUMENT_TOO_LONG", + 0x2777: "ER_CANT_CREATE_NAMED_PIPES_THREAD", + 0x2778: "ER_CANT_CREATE_TCPIP_THREAD", + 0x2779: "ER_CANT_CREATE_SHM_THREAD", + 0x277a: "ER_CANT_CREATE_INTERRUPT_THREAD", + 0x277b: "ER_WRITABLE_CONFIG_REMOVED", + 0x277c: "ER_CORE_VALUES", + 0x277d: "ER_WRONG_DATETIME_SPEC", + 0x277e: "ER_RPL_BINLOG_FILTERS_OOM", + 0x277f: "ER_KEYCACHE_OOM", + 0x2780: "ER_CONFIRMING_THE_FUTURE", + 0x2781: "ER_BACK_IN_TIME", + 0x2782: "ER_FUTURE_DATE", + 0x2783: "ER_UNSUPPORTED_DATE", + 0x2784: "ER_STARTING_AS", + 0x2785: "ER_SHUTTING_DOWN_SLAVE_THREADS", + 0x2786: "ER_DISCONNECTING_REMAINING_CLIENTS", + 0x2787: "ER_ABORTING", + 0x2788: "ER_BINLOG_END", + 0x2789: "ER_CALL_ME_LOCALHOST", + 0x278a: "ER_USER_REQUIRES_ROOT", + 0x278b: "ER_REALLY_RUN_AS_ROOT", + 0x278c: "ER_USER_WHAT_USER", + 0x278d: "ER_TRANSPORTS_WHAT_TRANSPORTS", + 0x278e: "ER_FAIL_SETGID", + 0x278f: "ER_FAIL_SETUID", + 0x2790: "ER_FAIL_SETREGID", + 0x2791: "ER_FAIL_SETREUID", + 0x2792: "ER_FAIL_CHROOT", + 0x2793: "ER_WIN_LISTEN_BUT_HOW", + 0x2794: "ER_NOT_RIGHT_NOW", + 0x2795: "ER_FIXING_CLIENT_CHARSET", + 0x2796: "ER_OOM", + 0x2797: "ER_FAILED_TO_LOCK_MEM", + 0x2798: "ER_MYINIT_FAILED", + 0x2799: "ER_BEG_INITFILE", + 0x279a: "ER_END_INITFILE", + 0x279b: "ER_CHANGED_MAX_OPEN_FILES", + 0x279c: "ER_CANT_INCREASE_MAX_OPEN_FILES", + 0x279d: "ER_CHANGED_MAX_CONNECTIONS", + 0x279e: "ER_CHANGED_TABLE_OPEN_CACHE", + 0x279f: "ER_THE_USER_ABIDES", + 0x27a0: "ER_RPL_CANT_ADD_DO_TABLE", + 0x27a1: "ER_RPL_CANT_ADD_IGNORE_TABLE", + 0x27a2: "ER_TRACK_VARIABLES_BOGUS", + 0x27a3: "ER_EXCESS_ARGUMENTS", + 0x27a4: "ER_VERBOSE_HINT", + 0x27a5: "ER_CANT_READ_ERRMSGS", + 0x27a6: "ER_CANT_INIT_DBS", + 0x27a7: "ER_LOG_OUTPUT_CONTRADICTORY", + 0x27a8: "ER_NO_CSV_NO_LOG_TABLES", + 0x27a9: "ER_RPL_REWRITEDB_MISSING_ARROW", + 0x27aa: "ER_RPL_REWRITEDB_EMPTY_FROM", + 0x27ab: "ER_RPL_REWRITEDB_EMPTY_TO", + 0x27ac: "ER_LOG_FILES_GIVEN_LOG_OUTPUT_IS_TABLE", + 0x27ad: "ER_LOG_FILE_INVALID", + 0x27ae: "ER_LOWER_CASE_TABLE_NAMES_CS_DD_ON_CI_FS_UNSUPPORTED", + 0x27af: "ER_LOWER_CASE_TABLE_NAMES_USING_2", + 0x27b0: "ER_LOWER_CASE_TABLE_NAMES_USING_0", + 0x27b1: "ER_NEED_LOG_BIN", + 0x27b2: "ER_NEED_FILE_INSTEAD_OF_DIR", + 0x27b3: "ER_LOG_BIN_BETTER_WITH_NAME", + 0x27b4: "ER_BINLOG_NEEDS_SERVERID", + 0x27b5: "ER_RPL_CANT_MAKE_PATHS", + 0x27b6: "ER_CANT_INITIALIZE_GTID", + 0x27b7: "ER_CANT_INITIALIZE_EARLY_PLUGINS", + 0x27b8: "ER_CANT_INITIALIZE_BUILTIN_PLUGINS", + 0x27b9: "ER_CANT_INITIALIZE_DYNAMIC_PLUGINS", + 0x27ba: "ER_PERFSCHEMA_INIT_FAILED", + 0x27bb: "ER_STACKSIZE_UNEXPECTED", + 0x27bc: "ER_CANT_SET_DATADIR", + 0x27bd: "ER_CANT_STAT_DATADIR", + 0x27be: "ER_CANT_CHOWN_DATADIR", + 0x27bf: "ER_CANT_SET_UP_PERSISTED_VALUES", + 0x27c0: "ER_CANT_SAVE_GTIDS", + 0x27c1: "ER_AUTH_CANT_SET_DEFAULT_PLUGIN", + 0x27c2: "ER_CANT_JOIN_SHUTDOWN_THREAD", + 0x27c3: "ER_CANT_HASH_DO_AND_IGNORE_RULES", + 0x27c4: "ER_CANT_OPEN_CA", + 0x27c5: "ER_CANT_ACCESS_CAPATH", + 0x27c6: "ER_SSL_TRYING_DATADIR_DEFAULTS", + 0x27c7: "ER_AUTO_OPTIONS_FAILED", + 0x27c8: "ER_CANT_INIT_TIMER", + 0x27c9: "ER_SERVERID_TOO_LARGE", + 0x27ca: "ER_DEFAULT_SE_UNAVAILABLE", + 0x27cb: "ER_CANT_OPEN_ERROR_LOG", + 0x27cc: "ER_INVALID_ERROR_LOG_NAME", + 0x27cd: "ER_RPL_INFINITY_DENIED", + 0x27ce: "ER_RPL_INFINITY_IGNORED", + 0x27cf: "ER_NDB_TABLES_NOT_READY", + 0x27d0: "ER_TABLE_CHECK_INTACT", + 0x27d1: "ER_DD_TABLESPACE_NOT_FOUND", + 0x27d2: "ER_DD_TRG_CONNECTION_COLLATION_MISSING", + 0x27d3: "ER_DD_TRG_DB_COLLATION_MISSING", + 0x27d4: "ER_DD_TRG_DEFINER_OOM", + 0x27d5: "ER_DD_TRG_FILE_UNREADABLE", + 0x27d6: "ER_TRG_CANT_PARSE", + 0x27d7: "ER_DD_TRG_CANT_ADD", + 0x27d8: "ER_DD_CANT_RESOLVE_VIEW", + 0x27d9: "ER_DD_VIEW_WITHOUT_DEFINER", + 0x27da: "ER_PLUGIN_INIT_FAILED", + 0x27db: "ER_RPL_TRX_DELEGATES_INIT_FAILED", + 0x27dc: "ER_RPL_BINLOG_STORAGE_DELEGATES_INIT_FAILED", + 0x27dd: "ER_RPL_BINLOG_TRANSMIT_DELEGATES_INIT_FAILED", + 0x27de: "ER_RPL_BINLOG_RELAY_DELEGATES_INIT_FAILED", + 0x27df: "ER_RPL_PLUGIN_FUNCTION_FAILED", + 0x27e0: "ER_SQL_HA_READ_FAILED", + 0x27e1: "ER_SR_BOGUS_VALUE", + 0x27e2: "ER_SR_INVALID_CONTEXT", + 0x27e3: "ER_READING_TABLE_FAILED", + 0x27e4: "ER_DES_FILE_WRONG_KEY", + 0x27e5: "ER_CANT_SET_PERSISTED", + 0x27e6: "ER_JSON_PARSE_ERROR", + 0x27e7: "ER_CONFIG_OPTION_WITHOUT_GROUP", + 0x27e8: "ER_VALGRIND_DO_QUICK_LEAK_CHECK", + 0x27e9: "ER_VALGRIND_COUNT_LEAKS", + 0x27ea: "ER_LOAD_DATA_INFILE_FAILED_IN_UNEXPECTED_WAY", + 0x27eb: "ER_UNKNOWN_ERROR_NUMBER", + 0x27ec: "ER_UDF_CANT_ALLOC_FOR_STRUCTURES", + 0x27ed: "ER_UDF_CANT_ALLOC_FOR_FUNCTION", + 0x27ee: "ER_UDF_INVALID_ROW_IN_FUNCTION_TABLE", + 0x27ef: "ER_UDF_CANT_OPEN_FUNCTION_TABLE", + 0x27f0: "ER_XA_RECOVER_FOUND_TRX_IN_SE", + 0x27f1: "ER_XA_RECOVER_FOUND_XA_TRX", + 0x27f2: "ER_XA_IGNORING_XID", + 0x27f3: "ER_XA_COMMITTING_XID", + 0x27f4: "ER_XA_ROLLING_BACK_XID", + 0x27f5: "ER_XA_STARTING_RECOVERY", + 0x27f6: "ER_XA_NO_MULTI_2PC_HEURISTIC_RECOVER", + 0x27f7: "ER_XA_RECOVER_EXPLANATION", + 0x27f8: "ER_XA_RECOVERY_DONE", + 0x27f9: "ER_TRX_GTID_COLLECT_REJECT", + 0x27fa: "ER_SQL_AUTHOR_DEFAULT_ROLES_FAIL", + 0x27fb: "ER_SQL_USER_TABLE_CREATE_WARNING", + 0x27fc: "ER_SQL_USER_TABLE_ALTER_WARNING", + 0x27fd: "ER_ROW_IN_WRONG_PARTITION_PLEASE_REPAIR", + 0x27fe: "ER_MYISAM_CRASHED_ERROR_IN_THREAD", + 0x27ff: "ER_MYISAM_CRASHED_ERROR_IN", + 0x2800: "ER_TOO_MANY_STORAGE_ENGINES", + 0x2801: "ER_SE_TYPECODE_CONFLICT", + 0x2802: "ER_TRX_WRITE_SET_OOM", + 0x2803: "ER_HANDLERTON_OOM", + 0x2804: "ER_CONN_SHM_LISTENER", + 0x2805: "ER_CONN_SHM_CANT_CREATE_SERVICE", + 0x2806: "ER_CONN_SHM_CANT_CREATE_CONNECTION", + 0x2807: "ER_CONN_PIP_CANT_CREATE_EVENT", + 0x2808: "ER_CONN_PIP_CANT_CREATE_PIPE", + 0x2809: "ER_CONN_PER_THREAD_NO_THREAD", + 0x280a: "ER_CONN_TCP_NO_SOCKET", + 0x280b: "ER_CONN_TCP_CREATED", + 0x280c: "ER_CONN_TCP_ADDRESS", + 0x280d: "ER_CONN_TCP_IPV6_AVAILABLE", + 0x280e: "ER_CONN_TCP_IPV6_UNAVAILABLE", + 0x280f: "ER_CONN_TCP_ERROR_WITH_STRERROR", + 0x2810: "ER_CONN_TCP_CANT_RESOLVE_HOSTNAME", + 0x2811: "ER_CONN_TCP_IS_THERE_ANOTHER_USING_PORT", + 0x2812: "ER_CONN_UNIX_IS_THERE_ANOTHER_USING_SOCKET", + 0x2813: "ER_CONN_UNIX_PID_CLAIMED_SOCKET_FILE", + 0x2814: "ER_CONN_TCP_CANT_RESET_V6ONLY", + 0x2815: "ER_CONN_TCP_BIND_RETRY", + 0x2816: "ER_CONN_TCP_BIND_FAIL", + 0x2817: "ER_CONN_TCP_IP_NOT_LOGGED", + 0x2818: "ER_CONN_TCP_RESOLVE_INFO", + 0x2819: "ER_CONN_TCP_START_FAIL", + 0x281a: "ER_CONN_TCP_LISTEN_FAIL", + 0x281b: "ER_CONN_UNIX_PATH_TOO_LONG", + 0x281c: "ER_CONN_UNIX_LOCK_FILE_FAIL", + 0x281d: "ER_CONN_UNIX_NO_FD", + 0x281e: "ER_CONN_UNIX_NO_BIND_NO_START", + 0x281f: "ER_CONN_UNIX_LISTEN_FAILED", + 0x2820: "ER_CONN_UNIX_LOCK_FILE_GIVING_UP", + 0x2821: "ER_CONN_UNIX_LOCK_FILE_CANT_CREATE", + 0x2822: "ER_CONN_UNIX_LOCK_FILE_CANT_OPEN", + 0x2823: "ER_CONN_UNIX_LOCK_FILE_CANT_READ", + 0x2824: "ER_CONN_UNIX_LOCK_FILE_EMPTY", + 0x2825: "ER_CONN_UNIX_LOCK_FILE_PIDLESS", + 0x2826: "ER_CONN_UNIX_LOCK_FILE_CANT_WRITE", + 0x2827: "ER_CONN_UNIX_LOCK_FILE_CANT_DELETE", + 0x2828: "ER_CONN_UNIX_LOCK_FILE_CANT_SYNC", + 0x2829: "ER_CONN_UNIX_LOCK_FILE_CANT_CLOSE", + 0x282a: "ER_CONN_SOCKET_SELECT_FAILED", + 0x282b: "ER_CONN_SOCKET_ACCEPT_FAILED", + 0x282c: "ER_AUTH_RSA_CANT_FIND", + 0x282d: "ER_AUTH_RSA_CANT_PARSE", + 0x282e: "ER_AUTH_RSA_CANT_READ", + 0x282f: "ER_AUTH_RSA_FILES_NOT_FOUND", + 0x2830: "ER_CONN_ATTR_TRUNCATED", + 0x2831: "ER_X509_CIPHERS_MISMATCH", + 0x2832: "ER_X509_ISSUER_MISMATCH", + 0x2833: "ER_X509_SUBJECT_MISMATCH", + 0x2834: "ER_AUTH_CANT_ACTIVATE_ROLE", + 0x2835: "ER_X509_NEEDS_RSA_PRIVKEY", + 0x2836: "ER_X509_CANT_WRITE_KEY", + 0x2837: "ER_X509_CANT_CHMOD_KEY", + 0x2838: "ER_X509_CANT_READ_CA_KEY", + 0x2839: "ER_X509_CANT_READ_CA_CERT", + 0x283a: "ER_X509_CANT_CREATE_CERT", + 0x283b: "ER_X509_CANT_WRITE_CERT", + 0x283c: "ER_AUTH_CANT_CREATE_RSA_PAIR", + 0x283d: "ER_AUTH_CANT_WRITE_PRIVKEY", + 0x283e: "ER_AUTH_CANT_WRITE_PUBKEY", + 0x283f: "ER_AUTH_SSL_CONF_PREVENTS_CERT_GENERATION", + 0x2840: "ER_AUTH_USING_EXISTING_CERTS", + 0x2841: "ER_AUTH_CERTS_SAVED_TO_DATADIR", + 0x2842: "ER_AUTH_CERT_GENERATION_DISABLED", + 0x2843: "ER_AUTH_RSA_CONF_PREVENTS_KEY_GENERATION", + 0x2844: "ER_AUTH_KEY_GENERATION_SKIPPED_PAIR_PRESENT", + 0x2845: "ER_AUTH_KEYS_SAVED_TO_DATADIR", + 0x2846: "ER_AUTH_KEY_GENERATION_DISABLED", + 0x2847: "ER_AUTHCACHE_PROXIES_PRIV_SKIPPED_NEEDS_RESOLVE", + 0x2848: "ER_AUTHCACHE_PLUGIN_MISSING", + 0x2849: "ER_AUTHCACHE_PLUGIN_CONFIG", + 0x284b: "ER_AUTHCACHE_USER_SKIPPED_NEEDS_RESOLVE", + 0x284c: "ER_AUTHCACHE_USER_TABLE_DODGY", + 0x284d: "ER_AUTHCACHE_USER_IGNORED_DEPRECATED_PASSWORD", + 0x284e: "ER_AUTHCACHE_USER_IGNORED_NEEDS_PLUGIN", + 0x284f: "ER_AUTHCACHE_USER_IGNORED_INVALID_PASSWORD", + 0x2850: "ER_AUTHCACHE_EXPIRED_PASSWORD_UNSUPPORTED", + 0x2851: "ER_NO_SUPER_WITHOUT_USER_PLUGIN", + 0x2852: "ER_AUTHCACHE_DB_IGNORED_EMPTY_NAME", + 0x2853: "ER_AUTHCACHE_DB_SKIPPED_NEEDS_RESOLVE", + 0x2854: "ER_AUTHCACHE_DB_ENTRY_LOWERCASED_REVOKE_WILL_FAIL", + 0x2855: "ER_AUTHCACHE_TABLE_PROXIES_PRIV_MISSING", + 0x2856: "ER_AUTHCACHE_CANT_OPEN_AND_LOCK_PRIVILEGE_TABLES", + 0x2857: "ER_AUTHCACHE_CANT_INIT_GRANT_SUBSYSTEM", + 0x2858: "ER_AUTHCACHE_PROCS_PRIV_SKIPPED_NEEDS_RESOLVE", + 0x2859: "ER_AUTHCACHE_PROCS_PRIV_ENTRY_IGNORED_BAD_ROUTINE_TYPE", + 0x285a: "ER_AUTHCACHE_TABLES_PRIV_SKIPPED_NEEDS_RESOLVE", + 0x285b: "ER_USER_NOT_IN_EXTRA_USERS_BINLOG_POSSIBLY_INCOMPLETE", + 0x285c: "ER_DD_SCHEMA_NOT_FOUND", + 0x285d: "ER_DD_TABLE_NOT_FOUND", + 0x285e: "ER_DD_SE_INIT_FAILED", + 0x285f: "ER_DD_ABORTING_PARTIAL_UPGRADE", + 0x2860: "ER_DD_FRM_EXISTS_FOR_TABLE", + 0x2861: "ER_DD_CREATED_FOR_UPGRADE", + 0x2862: "ER_ERRMSG_CANT_FIND_FILE", + 0x2863: "ER_ERRMSG_LOADING_55_STYLE", + 0x2864: "ER_ERRMSG_MISSING_IN_FILE", + 0x2865: "ER_ERRMSG_OOM", + 0x2866: "ER_ERRMSG_CANT_READ", + 0x2867: "ER_TABLE_INCOMPATIBLE_DECIMAL_FIELD", + 0x2868: "ER_TABLE_INCOMPATIBLE_YEAR_FIELD", + 0x2869: "ER_INVALID_CHARSET_AND_DEFAULT_IS_MB", + 0x286a: "ER_TABLE_WRONG_KEY_DEFINITION", + 0x286b: "ER_CANT_OPEN_FRM_FILE", + 0x286c: "ER_CANT_READ_FRM_FILE", + 0x286d: "ER_TABLE_CREATED_WITH_DIFFERENT_VERSION", + 0x286e: "ER_VIEW_UNPARSABLE", + 0x286f: "ER_FILE_TYPE_UNKNOWN", + 0x2870: "ER_INVALID_INFO_IN_FRM", + 0x2871: "ER_CANT_OPEN_AND_LOCK_PRIVILEGE_TABLES", + 0x2872: "ER_AUDIT_PLUGIN_DOES_NOT_SUPPORT_AUDIT_AUTH_EVENTS", + 0x2873: "ER_AUDIT_PLUGIN_HAS_INVALID_DATA", + 0x2874: "ER_TZ_OOM_INITIALIZING_TIME_ZONES", + 0x2875: "ER_TZ_CANT_OPEN_AND_LOCK_TIME_ZONE_TABLE", + 0x2876: "ER_TZ_OOM_LOADING_LEAP_SECOND_TABLE", + 0x2877: "ER_TZ_TOO_MANY_LEAPS_IN_LEAP_SECOND_TABLE", + 0x2878: "ER_TZ_ERROR_LOADING_LEAP_SECOND_TABLE", + 0x2879: "ER_TZ_UNKNOWN_OR_ILLEGAL_DEFAULT_TIME_ZONE", + 0x287a: "ER_TZ_CANT_FIND_DESCRIPTION_FOR_TIME_ZONE", + 0x287b: "ER_TZ_CANT_FIND_DESCRIPTION_FOR_TIME_ZONE_ID", + 0x287c: "ER_TZ_TRANSITION_TYPE_TABLE_TYPE_TOO_LARGE", + 0x287d: "ER_TZ_TRANSITION_TYPE_TABLE_ABBREVIATIONS_EXCEED_SPACE", + 0x287e: "ER_TZ_TRANSITION_TYPE_TABLE_LOAD_ERROR", + 0x287f: "ER_TZ_TRANSITION_TABLE_TOO_MANY_TRANSITIONS", + 0x2880: "ER_TZ_TRANSITION_TABLE_BAD_TRANSITION_TYPE", + 0x2881: "ER_TZ_TRANSITION_TABLE_LOAD_ERROR", + 0x2882: "ER_TZ_NO_TRANSITION_TYPES_IN_TIME_ZONE", + 0x2883: "ER_TZ_OOM_LOADING_TIME_ZONE_DESCRIPTION", + 0x2884: "ER_TZ_CANT_BUILD_MKTIME_MAP", + 0x2885: "ER_TZ_OOM_WHILE_LOADING_TIME_ZONE", + 0x2886: "ER_TZ_OOM_WHILE_SETTING_TIME_ZONE", + 0x2887: "ER_SLAVE_SQL_THREAD_STOPPED_UNTIL_CONDITION_BAD", + 0x2888: "ER_SLAVE_SQL_THREAD_STOPPED_UNTIL_POSITION_REACHED", + 0x2889: "ER_SLAVE_SQL_THREAD_STOPPED_BEFORE_GTIDS_ALREADY_APPLIED", + 0x288a: "ER_SLAVE_SQL_THREAD_STOPPED_BEFORE_GTIDS_REACHED", + 0x288b: "ER_SLAVE_SQL_THREAD_STOPPED_AFTER_GTIDS_REACHED", + 0x288c: "ER_SLAVE_SQL_THREAD_STOPPED_GAP_TRX_PROCESSED", + 0x288d: "ER_GROUP_REPLICATION_PLUGIN_NOT_INSTALLED", + 0x288e: "ER_GTID_ALREADY_ADDED_BY_USER", + 0x288f: "ER_FAILED_TO_DELETE_FROM_GTID_EXECUTED_TABLE", + 0x2890: "ER_FAILED_TO_COMPRESS_GTID_EXECUTED_TABLE", + 0x2891: "ER_FAILED_TO_COMPRESS_GTID_EXECUTED_TABLE_OOM", + 0x2892: "ER_FAILED_TO_INIT_THREAD_ATTR_FOR_GTID_TABLE_COMPRESSION", + 0x2893: "ER_FAILED_TO_CREATE_GTID_TABLE_COMPRESSION_THREAD", + 0x2894: "ER_FAILED_TO_JOIN_GTID_TABLE_COMPRESSION_THREAD", + 0x2895: "ER_NPIPE_FAILED_TO_INIT_SECURITY_DESCRIPTOR", + 0x2896: "ER_NPIPE_FAILED_TO_SET_SECURITY_DESCRIPTOR", + 0x2897: "ER_NPIPE_PIPE_ALREADY_IN_USE", + 0x2898: "ER_NDB_SLAVE_SAW_EPOCH_LOWER_THAN_PREVIOUS_ON_START", + 0x2899: "ER_NDB_SLAVE_SAW_EPOCH_LOWER_THAN_PREVIOUS", + 0x289a: "ER_NDB_SLAVE_SAW_ALREADY_COMMITTED_EPOCH", + 0x289b: "ER_NDB_SLAVE_PREVIOUS_EPOCH_NOT_COMMITTED", + 0x289c: "ER_NDB_SLAVE_MISSING_DATA_FOR_TIMESTAMP_COLUMN", + 0x289d: "ER_NDB_SLAVE_LOGGING_EXCEPTIONS_TO", + 0x289e: "ER_NDB_SLAVE_LOW_EPOCH_RESOLUTION", + 0x289f: "ER_NDB_INFO_FOUND_UNEXPECTED_FIELD_TYPE", + 0x28a0: "ER_NDB_INFO_FAILED_TO_CREATE_NDBINFO", + 0x28a1: "ER_NDB_INFO_FAILED_TO_INIT_NDBINFO", + 0x28a2: "ER_NDB_CLUSTER_WRONG_NUMBER_OF_FUNCTION_ARGUMENTS", + 0x28a3: "ER_NDB_CLUSTER_SCHEMA_INFO", + 0x28a4: "ER_NDB_CLUSTER_GENERIC_MESSAGE", + 0x28a5: "ER_RPL_CANT_OPEN_INFO_TABLE", + 0x28a6: "ER_RPL_CANT_SCAN_INFO_TABLE", + 0x28a7: "ER_RPL_CORRUPTED_INFO_TABLE", + 0x28a8: "ER_RPL_CORRUPTED_KEYS_IN_INFO_TABLE", + 0x28a9: "ER_RPL_WORKER_ID_IS", + 0x28aa: "ER_RPL_INCONSISTENT_TIMESTAMPS_IN_TRX", + 0x28ab: "ER_RPL_INCONSISTENT_SEQUENCE_NO_IN_TRX", + 0x28ac: "ER_RPL_CHANNELS_REQUIRE_TABLES_AS_INFO_REPOSITORIES", + 0x28ad: "ER_RPL_CHANNELS_REQUIRE_NON_ZERO_SERVER_ID", + 0x28ae: "ER_RPL_REPO_SHOULD_BE_TABLE", + 0x28af: "ER_RPL_ERROR_CREATING_MASTER_INFO", + 0x28b0: "ER_RPL_ERROR_CHANGING_MASTER_INFO_REPO_TYPE", + 0x28b1: "ER_RPL_CHANGING_RELAY_LOG_INFO_REPO_TYPE_FAILED_DUE_TO_GAPS", + 0x28b2: "ER_RPL_ERROR_CREATING_RELAY_LOG_INFO", + 0x28b3: "ER_RPL_ERROR_CHANGING_RELAY_LOG_INFO_REPO_TYPE", + 0x28b4: "ER_RPL_FAILED_TO_DELETE_FROM_SLAVE_WORKERS_INFO_REPOSITORY", + 0x28b5: "ER_RPL_FAILED_TO_RESET_STATE_IN_SLAVE_INFO_REPOSITORY", + 0x28b6: "ER_RPL_ERROR_CHECKING_REPOSITORY", + 0x28b7: "ER_RPL_SLAVE_GENERIC_MESSAGE", + 0x28b8: "ER_RPL_SLAVE_COULD_NOT_CREATE_CHANNEL_LIST", + 0x28b9: "ER_RPL_MULTISOURCE_REQUIRES_TABLE_TYPE_REPOSITORIES", + 0x28ba: "ER_RPL_SLAVE_FAILED_TO_INIT_A_MASTER_INFO_STRUCTURE", + 0x28bb: "ER_RPL_SLAVE_FAILED_TO_INIT_MASTER_INFO_STRUCTURE", + 0x28bc: "ER_RPL_SLAVE_FAILED_TO_CREATE_CHANNEL_FROM_MASTER_INFO", + 0x28bd: "ER_RPL_FAILED_TO_CREATE_NEW_INFO_FILE", + 0x28be: "ER_RPL_FAILED_TO_CREATE_CACHE_FOR_INFO_FILE", + 0x28bf: "ER_RPL_FAILED_TO_OPEN_INFO_FILE", + 0x28c0: "ER_RPL_GTID_MEMORY_FINALLY_AVAILABLE", + 0x28c1: "ER_SERVER_COST_UNKNOWN_COST_CONSTANT", + 0x28c2: "ER_SERVER_COST_INVALID_COST_CONSTANT", + 0x28c3: "ER_ENGINE_COST_UNKNOWN_COST_CONSTANT", + 0x28c4: "ER_ENGINE_COST_UNKNOWN_STORAGE_ENGINE", + 0x28c5: "ER_ENGINE_COST_INVALID_DEVICE_TYPE_FOR_SE", + 0x28c6: "ER_ENGINE_COST_INVALID_CONST_CONSTANT_FOR_SE_AND_DEVICE", + 0x28c7: "ER_SERVER_COST_FAILED_TO_READ", + 0x28c8: "ER_ENGINE_COST_FAILED_TO_READ", + 0x28c9: "ER_FAILED_TO_OPEN_COST_CONSTANT_TABLES", + 0x28ca: "ER_RPL_UNSUPPORTED_UNIGNORABLE_EVENT_IN_STREAM", + 0x28cb: "ER_RPL_GTID_LOG_EVENT_IN_STREAM", + 0x28cc: "ER_RPL_UNEXPECTED_BEGIN_IN_STREAM", + 0x28cd: "ER_RPL_UNEXPECTED_COMMIT_ROLLBACK_OR_XID_LOG_EVENT_IN_STREAM", + 0x28ce: "ER_RPL_UNEXPECTED_XA_ROLLBACK_IN_STREAM", + 0x28cf: "ER_EVENT_EXECUTION_FAILED_CANT_AUTHENTICATE_USER", + 0x28d0: "ER_EVENT_EXECUTION_FAILED_USER_LOST_EVEN_PRIVILEGE", + 0x28d1: "ER_EVENT_ERROR_DURING_COMPILATION", + 0x28d2: "ER_EVENT_DROPPING", + 0x28d3: "ER_NDB_SCHEMA_GENERIC_MESSAGE", + 0x28d4: "ER_RPL_INCOMPATIBLE_DECIMAL_IN_RBR", + 0x28d5: "ER_INIT_ROOT_WITHOUT_PASSWORD", + 0x28d6: "ER_INIT_GENERATING_TEMP_PASSWORD_FOR_ROOT", + 0x28d7: "ER_INIT_CANT_OPEN_BOOTSTRAP_FILE", + 0x28d8: "ER_INIT_BOOTSTRAP_COMPLETE", + 0x28d9: "ER_INIT_DATADIR_NOT_EMPTY_WONT_INITIALIZE", + 0x28da: "ER_INIT_DATADIR_EXISTS_WONT_INITIALIZE", + 0x28db: "ER_INIT_DATADIR_EXISTS_AND_PATH_TOO_LONG_WONT_INITIALIZE", + 0x28dc: "ER_INIT_DATADIR_EXISTS_AND_NOT_WRITABLE_WONT_INITIALIZE", + 0x28dd: "ER_INIT_CREATING_DD", + 0x28de: "ER_RPL_BINLOG_STARTING_DUMP", + 0x28df: "ER_RPL_BINLOG_MASTER_SENDS_HEARTBEAT", + 0x28e0: "ER_RPL_BINLOG_SKIPPING_REMAINING_HEARTBEAT_INFO", + 0x28e1: "ER_RPL_BINLOG_MASTER_USES_CHECKSUM_AND_SLAVE_CANT", + 0x28e2: "ER_NDB_QUERY_FAILED", + 0x28e3: "ER_KILLING_THREAD", + 0x28e4: "ER_DETACHING_SESSION_LEFT_BY_PLUGIN", + 0x28e5: "ER_CANT_DETACH_SESSION_LEFT_BY_PLUGIN", + 0x28e6: "ER_DETACHED_SESSIONS_LEFT_BY_PLUGIN", + 0x28e7: "ER_FAILED_TO_DECREMENT_NUMBER_OF_THREADS", + 0x28e8: "ER_PLUGIN_DID_NOT_DEINITIALIZE_THREADS", + 0x28e9: "ER_KILLED_THREADS_OF_PLUGIN", + 0x28ea: "ER_NDB_SLAVE_MAX_REPLICATED_EPOCH_UNKNOWN", + 0x28eb: "ER_NDB_SLAVE_MAX_REPLICATED_EPOCH_SET_TO", + 0x28ec: "ER_NDB_NODE_ID_AND_MANAGEMENT_SERVER_INFO", + 0x28ed: "ER_NDB_DISCONNECT_INFO", + 0x28ee: "ER_NDB_COLUMN_DEFAULTS_DIFFER", + 0x28ef: "ER_NDB_COLUMN_SHOULD_NOT_HAVE_NATIVE_DEFAULT", + 0x28f0: "ER_NDB_FIELD_INFO", + 0x28f1: "ER_NDB_COLUMN_INFO", + 0x28f2: "ER_NDB_OOM_IN_FIX_UNIQUE_INDEX_ATTR_ORDER", + 0x28f3: "ER_NDB_SLAVE_MALFORMED_EVENT_RECEIVED_ON_TABLE", + 0x28f4: "ER_NDB_SLAVE_CONFLICT_FUNCTION_REQUIRES_ROLE", + 0x28f5: "ER_NDB_SLAVE_CONFLICT_DETECTION_REQUIRES_TRANSACTION_IDS", + 0x28f6: "ER_NDB_SLAVE_BINLOG_MISSING_INFO_FOR_CONFLICT_DETECTION", + 0x28f7: "ER_NDB_ERROR_IN_READAUTOINCREMENTVALUE", + 0x28f8: "ER_NDB_FOUND_UNCOMMITTED_AUTOCOMMIT", + 0x28f9: "ER_NDB_SLAVE_TOO_MANY_RETRIES", + 0x28fa: "ER_NDB_SLAVE_ERROR_IN_UPDATE_CREATE_INFO", + 0x28fb: "ER_NDB_SLAVE_CANT_ALLOCATE_TABLE_SHARE", + 0x28fc: "ER_NDB_BINLOG_ERROR_INFO_FROM_DA", + 0x28fd: "ER_NDB_BINLOG_CREATE_TABLE_EVENT", + 0x28fe: "ER_NDB_BINLOG_FAILED_CREATE_TABLE_EVENT_OPERATIONS", + 0x28ff: "ER_NDB_BINLOG_RENAME_EVENT", + 0x2900: "ER_NDB_BINLOG_FAILED_CREATE_EVENT_OPERATIONS_DURING_RENAME", + 0x2901: "ER_NDB_UNEXPECTED_RENAME_TYPE", + 0x2902: "ER_NDB_ERROR_IN_GET_AUTO_INCREMENT", + 0x2903: "ER_NDB_CREATING_SHARE_IN_OPEN", + 0x2904: "ER_NDB_TABLE_OPENED_READ_ONLY", + 0x2905: "ER_NDB_INITIALIZE_GIVEN_CLUSTER_PLUGIN_DISABLED", + 0x2906: "ER_NDB_BINLOG_FORMAT_CHANGED_FROM_STMT_TO_MIXED", + 0x2907: "ER_NDB_TRAILING_SHARE_RELEASED_BY_CLOSE_CACHED_TABLES", + 0x2908: "ER_NDB_SHARE_ALREADY_EXISTS", + 0x2909: "ER_NDB_HANDLE_TRAILING_SHARE_INFO", + 0x290a: "ER_NDB_CLUSTER_GET_SHARE_INFO", + 0x290b: "ER_NDB_CLUSTER_REAL_FREE_SHARE_INFO", + 0x290c: "ER_NDB_CLUSTER_REAL_FREE_SHARE_DROP_FAILED", + 0x290d: "ER_NDB_CLUSTER_FREE_SHARE_INFO", + 0x290e: "ER_NDB_CLUSTER_MARK_SHARE_DROPPED_INFO", + 0x290f: "ER_NDB_CLUSTER_MARK_SHARE_DROPPED_DESTROYING_SHARE", + 0x2910: "ER_NDB_CLUSTER_OOM_THD_NDB", + 0x2911: "ER_NDB_BINLOG_NDB_TABLES_INITIALLY_READ_ONLY", + 0x2912: "ER_NDB_UTIL_THREAD_OOM", + 0x2913: "ER_NDB_ILLEGAL_VALUE_FOR_NDB_RECV_THREAD_CPU_MASK", + 0x2914: "ER_NDB_TOO_MANY_CPUS_IN_NDB_RECV_THREAD_CPU_MASK", + 0x2915: "ER_DBUG_CHECK_SHARES_OPEN", + 0x2916: "ER_DBUG_CHECK_SHARES_INFO", + 0x2917: "ER_DBUG_CHECK_SHARES_DROPPED", + 0x2918: "ER_INVALID_OR_OLD_TABLE_OR_DB_NAME", + 0x2919: "ER_TC_RECOVERING_AFTER_CRASH_USING", + 0x291a: "ER_TC_CANT_AUTO_RECOVER_WITH_TC_HEURISTIC_RECOVER", + 0x291b: "ER_TC_BAD_MAGIC_IN_TC_LOG", + 0x291c: "ER_TC_NEED_N_SE_SUPPORTING_2PC_FOR_RECOVERY", + 0x291d: "ER_TC_RECOVERY_FAILED_THESE_ARE_YOUR_OPTIONS", + 0x291e: "ER_TC_HEURISTIC_RECOVERY_MODE", + 0x291f: "ER_TC_HEURISTIC_RECOVERY_FAILED", + 0x2920: "ER_TC_RESTART_WITHOUT_TC_HEURISTIC_RECOVER", + 0x2921: "ER_RPL_SLAVE_FAILED_TO_CREATE_OR_RECOVER_INFO_REPOSITORIES", + 0x2922: "ER_RPL_SLAVE_AUTO_POSITION_IS_1_AND_GTID_MODE_IS_OFF", + 0x2923: "ER_RPL_SLAVE_CANT_START_SLAVE_FOR_CHANNEL", + 0x2924: "ER_RPL_SLAVE_CANT_STOP_SLAVE_FOR_CHANNEL", + 0x2925: "ER_RPL_RECOVERY_NO_ROTATE_EVENT_FROM_MASTER", + 0x2926: "ER_RPL_RECOVERY_ERROR_READ_RELAY_LOG", + 0x2927: "ER_RPL_RECOVERY_ERROR_FREEING_IO_CACHE", + 0x2928: "ER_RPL_RECOVERY_SKIPPED_GROUP_REPLICATION_CHANNEL", + 0x2929: "ER_RPL_RECOVERY_ERROR", + 0x292a: "ER_RPL_RECOVERY_IO_ERROR_READING_RELAY_LOG_INDEX", + 0x292b: "ER_RPL_RECOVERY_FILE_MASTER_POS_INFO", + 0x292c: "ER_RPL_RECOVERY_REPLICATE_SAME_SERVER_ID_REQUIRES_POSITION", + 0x292d: "ER_RPL_MTS_RECOVERY_STARTING_COORDINATOR", + 0x292e: "ER_RPL_MTS_RECOVERY_FAILED_TO_START_COORDINATOR", + 0x292f: "ER_RPL_MTS_AUTOMATIC_RECOVERY_FAILED", + 0x2930: "ER_RPL_MTS_RECOVERY_CANT_OPEN_RELAY_LOG", + 0x2931: "ER_RPL_MTS_RECOVERY_SUCCESSFUL", + 0x2932: "ER_RPL_SERVER_ID_MISSING", + 0x2933: "ER_RPL_CANT_CREATE_SLAVE_THREAD", + 0x2934: "ER_RPL_SLAVE_IO_THREAD_WAS_KILLED", + 0x2935: "ER_RPL_SLAVE_MASTER_UUID_HAS_CHANGED", + 0x2936: "ER_RPL_SLAVE_USES_CHECKSUM_AND_MASTER_PRE_50", + 0x2937: "ER_RPL_SLAVE_SECONDS_BEHIND_MASTER_DUBIOUS", + 0x2938: "ER_RPL_SLAVE_CANT_FLUSH_MASTER_INFO_FILE", + 0x2939: "ER_RPL_SLAVE_REPORT_HOST_TOO_LONG", + 0x293a: "ER_RPL_SLAVE_REPORT_USER_TOO_LONG", + 0x293b: "ER_RPL_SLAVE_REPORT_PASSWORD_TOO_LONG", + 0x293c: "ER_RPL_SLAVE_ERROR_RETRYING", + 0x293d: "ER_RPL_SLAVE_ERROR_READING_FROM_SERVER", + 0x293e: "ER_RPL_SLAVE_DUMP_THREAD_KILLED_BY_MASTER", + 0x293f: "ER_RPL_MTS_STATISTICS", + 0x2940: "ER_RPL_MTS_RECOVERY_COMPLETE", + 0x2941: "ER_RPL_SLAVE_CANT_INIT_RELAY_LOG_POSITION", + 0x2942: "ER_RPL_SLAVE_CONNECTED_TO_MASTER_REPLICATION_STARTED", + 0x2943: "ER_RPL_SLAVE_IO_THREAD_KILLED", + 0x2944: "ER_RPL_SLAVE_IO_THREAD_CANT_REGISTER_ON_MASTER", + 0x2945: "ER_RPL_SLAVE_FORCING_TO_RECONNECT_IO_THREAD", + 0x2946: "ER_RPL_SLAVE_ERROR_REQUESTING_BINLOG_DUMP", + 0x2947: "ER_RPL_LOG_ENTRY_EXCEEDS_SLAVE_MAX_ALLOWED_PACKET", + 0x2948: "ER_RPL_SLAVE_STOPPING_AS_MASTER_OOM", + 0x2949: "ER_RPL_SLAVE_IO_THREAD_ABORTED_WAITING_FOR_RELAY_LOG_SPACE", + 0x294a: "ER_RPL_SLAVE_IO_THREAD_EXITING", + 0x294b: "ER_RPL_SLAVE_CANT_INITIALIZE_SLAVE_WORKER", + 0x294c: "ER_RPL_MTS_GROUP_RECOVERY_RELAY_LOG_INFO_FOR_WORKER", + 0x294d: "ER_RPL_ERROR_LOOKING_FOR_LOG", + 0x294e: "ER_RPL_MTS_GROUP_RECOVERY_RELAY_LOG_INFO", + 0x294f: "ER_RPL_CANT_FIND_FOLLOWUP_FILE", + 0x2950: "ER_RPL_MTS_CHECKPOINT_PERIOD_DIFFERS_FROM_CNT", + 0x2951: "ER_RPL_SLAVE_WORKER_THREAD_CREATION_FAILED", + 0x2952: "ER_RPL_SLAVE_WORKER_THREAD_CREATION_FAILED_WITH_ERRNO", + 0x2953: "ER_RPL_SLAVE_FAILED_TO_INIT_PARTITIONS_HASH", + 0x2954: "ER_RPL_SLAVE_NDB_TABLES_NOT_AVAILABLE", + 0x2955: "ER_RPL_SLAVE_SQL_THREAD_STARTING", + 0x2956: "ER_RPL_SLAVE_SKIP_COUNTER_EXECUTED", + 0x2957: "ER_RPL_SLAVE_ADDITIONAL_ERROR_INFO_FROM_DA", + 0x2958: "ER_RPL_SLAVE_ERROR_INFO_FROM_DA", + 0x2959: "ER_RPL_SLAVE_ERROR_LOADING_USER_DEFINED_LIBRARY", + 0x295a: "ER_RPL_SLAVE_ERROR_RUNNING_QUERY", + 0x295b: "ER_RPL_SLAVE_SQL_THREAD_EXITING", + 0x295c: "ER_RPL_SLAVE_READ_INVALID_EVENT_FROM_MASTER", + 0x295d: "ER_RPL_SLAVE_QUEUE_EVENT_FAILED_INVALID_CONFIGURATION", + 0x295e: "ER_RPL_SLAVE_IO_THREAD_DETECTED_UNEXPECTED_EVENT_SEQUENCE", + 0x295f: "ER_RPL_SLAVE_CANT_USE_CHARSET", + 0x2960: "ER_RPL_SLAVE_CONNECTED_TO_MASTER_REPLICATION_RESUMED", + 0x2961: "ER_RPL_SLAVE_NEXT_LOG_IS_ACTIVE", + 0x2962: "ER_RPL_SLAVE_NEXT_LOG_IS_INACTIVE", + 0x2963: "ER_RPL_SLAVE_SQL_THREAD_IO_ERROR_READING_EVENT", + 0x2964: "ER_RPL_SLAVE_ERROR_READING_RELAY_LOG_EVENTS", + 0x2965: "ER_SLAVE_CHANGE_MASTER_TO_EXECUTED", + 0x2966: "ER_RPL_SLAVE_NEW_MASTER_INFO_NEEDS_REPOS_TYPE_OTHER_THAN_FILE", + 0x2967: "ER_RPL_FAILED_TO_STAT_LOG_IN_INDEX", + 0x2968: "ER_RPL_LOG_NOT_FOUND_WHILE_COUNTING_RELAY_LOG_SPACE", + 0x2969: "ER_SLAVE_CANT_USE_TEMPDIR", + 0x296a: "ER_RPL_RELAY_LOG_NEEDS_FILE_NOT_DIRECTORY", + 0x296b: "ER_RPL_RELAY_LOG_INDEX_NEEDS_FILE_NOT_DIRECTORY", + 0x296c: "ER_RPL_PLEASE_USE_OPTION_RELAY_LOG", + 0x296d: "ER_RPL_OPEN_INDEX_FILE_FAILED", + 0x296e: "ER_RPL_CANT_INITIALIZE_GTID_SETS_IN_RLI_INIT_INFO", + 0x296f: "ER_RPL_CANT_OPEN_LOG_IN_RLI_INIT_INFO", + 0x2970: "ER_RPL_ERROR_WRITING_RELAY_LOG_CONFIGURATION", + 0x2971: "ER_NDB_OOM_GET_NDB_BLOBS_VALUE", + 0x2972: "ER_NDB_THREAD_TIMED_OUT", + 0x2973: "ER_NDB_TABLE_IS_NOT_DISTRIBUTED", + 0x2974: "ER_NDB_CREATING_TABLE", + 0x2975: "ER_NDB_FLUSHING_TABLE_INFO", + 0x2976: "ER_NDB_CLEANING_STRAY_TABLES", + 0x2977: "ER_NDB_DISCOVERED_MISSING_DB", + 0x2978: "ER_NDB_DISCOVERED_REMAINING_DB", + 0x2979: "ER_NDB_CLUSTER_FIND_ALL_DBS_RETRY", + 0x297a: "ER_NDB_CLUSTER_FIND_ALL_DBS_FAIL", + 0x297b: "ER_NDB_SKIPPING_SETUP_TABLE", + 0x297c: "ER_NDB_FAILED_TO_SET_UP_TABLE", + 0x297d: "ER_NDB_MISSING_FRM_DISCOVERING", + 0x297e: "ER_NDB_MISMATCH_IN_FRM_DISCOVERING", + 0x297f: "ER_NDB_BINLOG_CLEANING_UP_SETUP_LEFTOVERS", + 0x2980: "ER_NDB_WAITING_INFO", + 0x2981: "ER_NDB_WAITING_INFO_WITH_MAP", + 0x2982: "ER_NDB_TIMEOUT_WHILE_DISTRIBUTING", + 0x2983: "ER_NDB_NOT_WAITING_FOR_DISTRIBUTING", + 0x2984: "ER_NDB_DISTRIBUTED_INFO", + 0x2985: "ER_NDB_DISTRIBUTION_COMPLETE", + 0x2986: "ER_NDB_SCHEMA_DISTRIBUTION_FAILED", + 0x2987: "ER_NDB_SCHEMA_DISTRIBUTION_REPORTS_SUBSCRIBE", + 0x2988: "ER_NDB_SCHEMA_DISTRIBUTION_REPORTS_UNSUBSCRIBE", + 0x2989: "ER_NDB_BINLOG_CANT_DISCOVER_TABLE_FROM_SCHEMA_EVENT", + 0x298a: "ER_NDB_BINLOG_SIGNALLING_UNKNOWN_VALUE", + 0x298b: "ER_NDB_BINLOG_REPLY_TO", + 0x298c: "ER_NDB_BINLOG_CANT_RELEASE_SLOCK", + 0x298d: "ER_NDB_CANT_FIND_TABLE", + 0x298e: "ER_NDB_DISCARDING_EVENT_NO_OBJ", + 0x298f: "ER_NDB_DISCARDING_EVENT_ID_VERSION_MISMATCH", + 0x2990: "ER_NDB_CLEAR_SLOCK_INFO", + 0x2991: "ER_NDB_BINLOG_SKIPPING_LOCAL_TABLE", + 0x2992: "ER_NDB_BINLOG_ONLINE_ALTER_RENAME", + 0x2993: "ER_NDB_BINLOG_CANT_REOPEN_SHADOW_TABLE", + 0x2994: "ER_NDB_BINLOG_ONLINE_ALTER_RENAME_COMPLETE", + 0x2995: "ER_NDB_BINLOG_SKIPPING_DROP_OF_LOCAL_TABLE", + 0x2996: "ER_NDB_BINLOG_SKIPPING_RENAME_OF_LOCAL_TABLE", + 0x2997: "ER_NDB_BINLOG_SKIPPING_DROP_OF_DB_CONTAINING_LOCAL_TABLES", + 0x2998: "ER_NDB_BINLOG_GOT_DIST_PRIV_EVENT_FLUSHING_PRIVILEGES", + 0x2999: "ER_NDB_BINLOG_GOT_SCHEMA_EVENT", + 0x299a: "ER_NDB_BINLOG_SKIPPING_OLD_SCHEMA_OPERATION", + 0x299b: "ER_NDB_CLUSTER_FAILURE", + 0x299c: "ER_NDB_TABLES_INITIALLY_READ_ONLY_ON_RECONNECT", + 0x299d: "ER_NDB_IGNORING_UNKNOWN_EVENT", + 0x299e: "ER_NDB_BINLOG_OPENING_INDEX", + 0x299f: "ER_NDB_BINLOG_CANT_LOCK_NDB_BINLOG_INDEX", + 0x29a0: "ER_NDB_BINLOG_INJECTING_RANDOM_WRITE_FAILURE", + 0x29a1: "ER_NDB_BINLOG_CANT_WRITE_TO_NDB_BINLOG_INDEX", + 0x29a2: "ER_NDB_BINLOG_WRITING_TO_NDB_BINLOG_INDEX", + 0x29a3: "ER_NDB_BINLOG_CANT_COMMIT_TO_NDB_BINLOG_INDEX", + 0x29a4: "ER_NDB_BINLOG_WRITE_TO_NDB_BINLOG_INDEX_FAILED_AFTER_KILL", + 0x29a5: "ER_NDB_BINLOG_USING_SERVER_ID_0_SLAVES_WILL_NOT", + 0x29a6: "ER_NDB_SERVER_ID_RESERVED_OR_TOO_LARGE", + 0x29a7: "ER_NDB_BINLOG_NDB_LOG_TRANSACTION_ID_REQUIRES_V2_ROW_EVENTS", + 0x29a8: "ER_NDB_BINLOG_NDB_LOG_APPLY_STATUS_FORCING_FULL_USE_WRITE", + 0x29a9: "ER_NDB_BINLOG_GENERIC_MESSAGE", + 0x29aa: "ER_NDB_CONFLICT_GENERIC_MESSAGE", + 0x29ab: "ER_NDB_TRANS_DEPENDENCY_TRACKER_ERROR", + 0x29ac: "ER_NDB_CONFLICT_FN_PARSE_ERROR", + 0x29ad: "ER_NDB_CONFLICT_FN_SETUP_ERROR", + 0x29ae: "ER_NDB_BINLOG_FAILED_TO_GET_TABLE", + 0x29af: "ER_NDB_BINLOG_NOT_LOGGING", + 0x29b0: "ER_NDB_BINLOG_CREATE_TABLE_EVENT_FAILED", + 0x29b1: "ER_NDB_BINLOG_CREATE_TABLE_EVENT_INFO", + 0x29b2: "ER_NDB_BINLOG_DISCOVER_TABLE_EVENT_INFO", + 0x29b3: "ER_NDB_BINLOG_BLOB_REQUIRES_PK", + 0x29b4: "ER_NDB_BINLOG_CANT_CREATE_EVENT_IN_DB", + 0x29b5: "ER_NDB_BINLOG_CANT_CREATE_EVENT_IN_DB_AND_CANT_DROP", + 0x29b6: "ER_NDB_BINLOG_CANT_CREATE_EVENT_IN_DB_DROPPED", + 0x29b7: "ER_NDB_BINLOG_DISCOVER_REUSING_OLD_EVENT_OPS", + 0x29b8: "ER_NDB_BINLOG_CREATING_NDBEVENTOPERATION_FAILED", + 0x29b9: "ER_NDB_BINLOG_CANT_CREATE_BLOB", + 0x29ba: "ER_NDB_BINLOG_NDBEVENT_EXECUTE_FAILED", + 0x29bb: "ER_NDB_CREATE_EVENT_OPS_LOGGING_INFO", + 0x29bc: "ER_NDB_BINLOG_CANT_DROP_EVENT_FROM_DB", + 0x29bd: "ER_NDB_TIMED_OUT_IN_DROP_TABLE", + 0x29be: "ER_NDB_BINLOG_UNHANDLED_ERROR_FOR_TABLE", + 0x29bf: "ER_NDB_BINLOG_CLUSTER_FAILURE", + 0x29c0: "ER_NDB_BINLOG_UNKNOWN_NON_DATA_EVENT", + 0x29c1: "ER_NDB_BINLOG_INJECTOR_DISCARDING_ROW_EVENT_METADATA", + 0x29c2: "ER_NDB_REMAINING_OPEN_TABLES", + 0x29c3: "ER_NDB_REMAINING_OPEN_TABLE_INFO", + 0x29c4: "ER_NDB_COULD_NOT_GET_APPLY_STATUS_SHARE", + 0x29c5: "ER_NDB_BINLOG_SERVER_SHUTDOWN_DURING_NDB_CLUSTER_START", + 0x29c6: "ER_NDB_BINLOG_CLUSTER_RESTARTED_RESET_MASTER_SUGGESTED", + 0x29c7: "ER_NDB_BINLOG_CLUSTER_HAS_RECONNECTED", + 0x29c8: "ER_NDB_BINLOG_STARTING_LOG_AT_EPOCH", + 0x29c9: "ER_NDB_BINLOG_NDB_TABLES_WRITABLE", + 0x29ca: "ER_NDB_BINLOG_SHUTDOWN_DETECTED", + 0x29cb: "ER_NDB_BINLOG_LOST_SCHEMA_CONNECTION_WAITING", + 0x29cc: "ER_NDB_BINLOG_LOST_SCHEMA_CONNECTION_CONTINUING", + 0x29cd: "ER_NDB_BINLOG_ERROR_HANDLING_SCHEMA_EVENT", + 0x29ce: "ER_NDB_BINLOG_CANT_INJECT_APPLY_STATUS_WRITE_ROW", + 0x29cf: "ER_NDB_BINLOG_ERROR_DURING_GCI_ROLLBACK", + 0x29d0: "ER_NDB_BINLOG_ERROR_DURING_GCI_COMMIT", + 0x29d1: "ER_NDB_BINLOG_LATEST_TRX_IN_EPOCH_NOT_IN_BINLOG", + 0x29d2: "ER_NDB_BINLOG_RELEASING_EXTRA_SHARE_REFERENCES", + 0x29d3: "ER_NDB_BINLOG_REMAINING_OPEN_TABLES", + 0x29d4: "ER_NDB_BINLOG_REMAINING_OPEN_TABLE_INFO", + 0x29d5: "ER_TREE_CORRUPT_PARENT_SHOULD_POINT_AT_PARENT", + 0x29d6: "ER_TREE_CORRUPT_ROOT_SHOULD_BE_BLACK", + 0x29d7: "ER_TREE_CORRUPT_2_CONSECUTIVE_REDS", + 0x29d8: "ER_TREE_CORRUPT_RIGHT_IS_LEFT", + 0x29d9: "ER_TREE_CORRUPT_INCORRECT_BLACK_COUNT", + 0x29da: "ER_WRONG_COUNT_FOR_ORIGIN", + 0x29db: "ER_WRONG_COUNT_FOR_KEY", + 0x29dc: "ER_WRONG_COUNT_OF_ELEMENTS", + 0x29dd: "ER_RPL_ERROR_READING_SLAVE_WORKER_CONFIGURATION", + 0x29de: "ER_RPL_ERROR_WRITING_SLAVE_WORKER_CONFIGURATION", + 0x29df: "ER_RPL_FAILED_TO_OPEN_RELAY_LOG", + 0x29e0: "ER_RPL_WORKER_CANT_READ_RELAY_LOG", + 0x29e1: "ER_RPL_WORKER_CANT_FIND_NEXT_RELAY_LOG", + 0x29e2: "ER_RPL_MTS_SLAVE_COORDINATOR_HAS_WAITED", + 0x29e3: "ER_BINLOG_FAILED_TO_WRITE_DROP_FOR_TEMP_TABLES", + 0x29e4: "ER_BINLOG_OOM_WRITING_DELETE_WHILE_OPENING_HEAP_TABLE", + 0x29e5: "ER_FAILED_TO_REPAIR_TABLE", + 0x29e6: "ER_FAILED_TO_REMOVE_TEMP_TABLE", + 0x29e7: "ER_SYSTEM_TABLE_NOT_TRANSACTIONAL", + 0x29e8: "ER_RPL_ERROR_WRITING_MASTER_CONFIGURATION", + 0x29e9: "ER_RPL_ERROR_READING_MASTER_CONFIGURATION", + 0x29ea: "ER_RPL_SSL_INFO_IN_MASTER_INFO_IGNORED", + 0x29eb: "ER_PLUGIN_FAILED_DEINITIALIZATION", + 0x29ec: "ER_PLUGIN_HAS_NONZERO_REFCOUNT_AFTER_DEINITIALIZATION", + 0x29ed: "ER_PLUGIN_SHUTTING_DOWN_PLUGIN", + 0x29ee: "ER_PLUGIN_REGISTRATION_FAILED", + 0x29ef: "ER_PLUGIN_CANT_OPEN_PLUGIN_TABLE", + 0x29f0: "ER_PLUGIN_CANT_LOAD", + 0x29f1: "ER_PLUGIN_LOAD_PARAMETER_TOO_LONG", + 0x29f2: "ER_PLUGIN_FORCING_SHUTDOWN", + 0x29f3: "ER_PLUGIN_HAS_NONZERO_REFCOUNT_AFTER_SHUTDOWN", + 0x29f4: "ER_PLUGIN_UNKNOWN_VARIABLE_TYPE", + 0x29f5: "ER_PLUGIN_VARIABLE_SET_READ_ONLY", + 0x29f6: "ER_PLUGIN_VARIABLE_MISSING_NAME", + 0x29f7: "ER_PLUGIN_VARIABLE_NOT_ALLOCATED_THREAD_LOCAL", + 0x29f8: "ER_PLUGIN_OOM", + 0x29f9: "ER_PLUGIN_BAD_OPTIONS", + 0x29fa: "ER_PLUGIN_PARSING_OPTIONS_FAILED", + 0x29fb: "ER_PLUGIN_DISABLED", + 0x29fc: "ER_PLUGIN_HAS_CONFLICTING_SYSTEM_VARIABLES", + 0x29fd: "ER_PLUGIN_CANT_SET_PERSISTENT_OPTIONS", + 0x29fe: "ER_MY_NET_WRITE_FAILED_FALLING_BACK_ON_STDERR", + 0x29ff: "ER_RETRYING_REPAIR_WITHOUT_QUICK", + 0x2a00: "ER_RETRYING_REPAIR_WITH_KEYCACHE", + 0x2a01: "ER_FOUND_ROWS_WHILE_REPAIRING", + 0x2a02: "ER_ERROR_DURING_OPTIMIZE_TABLE", + 0x2a03: "ER_ERROR_ENABLING_KEYS", + 0x2a04: "ER_CHECKING_TABLE", + 0x2a05: "ER_RECOVERING_TABLE", + 0x2a06: "ER_CANT_CREATE_TABLE_SHARE_FROM_FRM", + 0x2a07: "ER_CANT_LOCK_TABLE", + 0x2a08: "ER_CANT_ALLOC_TABLE_OBJECT", + 0x2a09: "ER_CANT_CREATE_HANDLER_OBJECT_FOR_TABLE", + 0x2a0a: "ER_CANT_SET_HANDLER_REFERENCE_FOR_TABLE", + 0x2a0b: "ER_CANT_LOCK_TABLESPACE", + 0x2a0c: "ER_CANT_UPGRADE_GENERATED_COLUMNS_TO_DD", + 0x2a0d: "ER_DD_ERROR_CREATING_ENTRY", + 0x2a0e: "ER_DD_CANT_FETCH_TABLE_DATA", + 0x2a0f: "ER_DD_CANT_FIX_SE_DATA", + 0x2a10: "ER_DD_CANT_CREATE_SP", + 0x2a11: "ER_CANT_OPEN_DB_OPT_USING_DEFAULT_CHARSET", + 0x2a12: "ER_CANT_CREATE_CACHE_FOR_DB_OPT", + 0x2a13: "ER_CANT_IDENTIFY_CHARSET_USING_DEFAULT", + 0x2a14: "ER_DB_OPT_NOT_FOUND_USING_DEFAULT_CHARSET", + 0x2a15: "ER_EVENT_CANT_GET_TIMEZONE_FROM_FIELD", + 0x2a16: "ER_EVENT_CANT_FIND_TIMEZONE", + 0x2a17: "ER_EVENT_CANT_GET_CHARSET", + 0x2a18: "ER_EVENT_CANT_GET_COLLATION", + 0x2a19: "ER_EVENT_CANT_OPEN_TABLE_MYSQL_EVENT", + 0x2a1a: "ER_CANT_PARSE_STORED_ROUTINE_BODY", + 0x2a1b: "ER_CANT_OPEN_TABLE_MYSQL_PROC", + 0x2a1c: "ER_CANT_READ_TABLE_MYSQL_PROC", + 0x2a1d: "ER_FILE_EXISTS_DURING_UPGRADE", + 0x2a1e: "ER_CANT_OPEN_DATADIR_AFTER_UPGRADE_FAILURE", + 0x2a1f: "ER_CANT_SET_PATH_FOR", + 0x2a20: "ER_CANT_OPEN_DIR", + 0x2a21: "ER_NDB_EMPTY_NODEID_IN_NDB_CLUSTER_CONNECTION_POOL_NODEIDS", + 0x2a22: "ER_NDB_CANT_PARSE_NDB_CLUSTER_CONNECTION_POOL_NODEIDS", + 0x2a23: "ER_NDB_INVALID_NODEID_IN_NDB_CLUSTER_CONNECTION_POOL_NODEIDS", + 0x2a24: "ER_NDB_DUPLICATE_NODEID_IN_NDB_CLUSTER_CONNECTION_POOL_NODEIDS", + 0x2a25: "ER_NDB_POOL_SIZE_MUST_MATCH_NDB_CLUSTER_CONNECTION_POOL_NODEIDS", + 0x2a26: "ER_NDB_NODEID_NOT_FIRST_IN_NDB_CLUSTER_CONNECTION_POOL_NODEIDS", + 0x2a27: "ER_NDB_USING_NODEID", + 0x2a28: "ER_NDB_CANT_ALLOC_GLOBAL_NDB_CLUSTER_CONNECTION", + 0x2a29: "ER_NDB_CANT_ALLOC_GLOBAL_NDB_OBJECT", + 0x2a2a: "ER_NDB_USING_NODEID_LIST", + 0x2a2b: "ER_NDB_CANT_ALLOC_NDB_CLUSTER_CONNECTION", + 0x2a2c: "ER_NDB_STARTING_CONNECT_THREAD", + 0x2a2d: "ER_NDB_NODE_INFO", + 0x2a2e: "ER_NDB_CANT_START_CONNECT_THREAD", + 0x2a2f: "ER_NDB_GENERIC_ERROR", + 0x2a30: "ER_NDB_CPU_MASK_TOO_SHORT", + 0x2a31: "ER_EVENT_ERROR_CREATING_QUERY_TO_WRITE_TO_BINLOG", + 0x2a32: "ER_EVENT_SCHEDULER_ERROR_LOADING_FROM_DB", + 0x2a33: "ER_EVENT_SCHEDULER_ERROR_GETTING_EVENT_OBJECT", + 0x2a34: "ER_EVENT_SCHEDULER_GOT_BAD_DATA_FROM_TABLE", + 0x2a35: "ER_EVENT_CANT_GET_LOCK_FOR_DROPPING_EVENT", + 0x2a36: "ER_EVENT_UNABLE_TO_DROP_EVENT", + 0x2a37: "ER_BINLOG_ATTACHING_THREAD_MEMORY_FINALLY_AVAILABLE", + 0x2a38: "ER_BINLOG_CANT_RESIZE_CACHE", + 0x2a39: "ER_BINLOG_FILE_BEING_READ_NOT_PURGED", + 0x2a3a: "ER_BINLOG_IO_ERROR_READING_HEADER", + 0x2a3b: "ER_BINLOG_CANT_OPEN_LOG", + 0x2a3c: "ER_BINLOG_CANT_CREATE_CACHE_FOR_LOG", + 0x2a3d: "ER_BINLOG_FILE_EXTENSION_NUMBER_EXHAUSTED", + 0x2a3e: "ER_BINLOG_FILE_NAME_TOO_LONG", + 0x2a3f: "ER_BINLOG_FILE_EXTENSION_NUMBER_RUNNING_LOW", + 0x2a40: "ER_BINLOG_CANT_OPEN_FOR_LOGGING", + 0x2a41: "ER_BINLOG_FAILED_TO_SYNC_INDEX_FILE", + 0x2a42: "ER_BINLOG_ERROR_READING_GTIDS_FROM_RELAY_LOG", + 0x2a43: "ER_BINLOG_EVENTS_READ_FROM_RELAY_LOG_INFO", + 0x2a44: "ER_BINLOG_ERROR_READING_GTIDS_FROM_BINARY_LOG", + 0x2a45: "ER_BINLOG_EVENTS_READ_FROM_BINLOG_INFO", + 0x2a46: "ER_BINLOG_CANT_GENERATE_NEW_FILE_NAME", + 0x2a47: "ER_BINLOG_FAILED_TO_SYNC_INDEX_FILE_IN_OPEN", + 0x2a48: "ER_BINLOG_CANT_USE_FOR_LOGGING", + 0x2a49: "ER_BINLOG_FAILED_TO_CLOSE_INDEX_FILE_WHILE_REBUILDING", + 0x2a4a: "ER_BINLOG_FAILED_TO_DELETE_INDEX_FILE_WHILE_REBUILDING", + 0x2a4b: "ER_BINLOG_FAILED_TO_RENAME_INDEX_FILE_WHILE_REBUILDING", + 0x2a4c: "ER_BINLOG_FAILED_TO_OPEN_INDEX_FILE_AFTER_REBUILDING", + 0x2a4d: "ER_BINLOG_CANT_APPEND_LOG_TO_TMP_INDEX", + 0x2a4e: "ER_BINLOG_CANT_LOCATE_OLD_BINLOG_OR_RELAY_LOG_FILES", + 0x2a4f: "ER_BINLOG_CANT_DELETE_FILE", + 0x2a50: "ER_BINLOG_CANT_SET_TMP_INDEX_NAME", + 0x2a51: "ER_BINLOG_FAILED_TO_OPEN_TEMPORARY_INDEX_FILE", + 0x2a52: "ER_BINLOG_ERROR_GETTING_NEXT_LOG_FROM_INDEX", + 0x2a53: "ER_BINLOG_CANT_OPEN_TMP_INDEX", + 0x2a54: "ER_BINLOG_CANT_COPY_INDEX_TO_TMP", + 0x2a55: "ER_BINLOG_CANT_CLOSE_TMP_INDEX", + 0x2a56: "ER_BINLOG_CANT_MOVE_TMP_TO_INDEX", + 0x2a57: "ER_BINLOG_PURGE_LOGS_CALLED_WITH_FILE_NOT_IN_INDEX", + 0x2a58: "ER_BINLOG_PURGE_LOGS_CANT_SYNC_INDEX_FILE", + 0x2a59: "ER_BINLOG_PURGE_LOGS_CANT_COPY_TO_REGISTER_FILE", + 0x2a5a: "ER_BINLOG_PURGE_LOGS_CANT_FLUSH_REGISTER_FILE", + 0x2a5b: "ER_BINLOG_PURGE_LOGS_CANT_UPDATE_INDEX_FILE", + 0x2a5c: "ER_BINLOG_PURGE_LOGS_FAILED_TO_PURGE_LOG", + 0x2a5d: "ER_BINLOG_FAILED_TO_SET_PURGE_INDEX_FILE_NAME", + 0x2a5e: "ER_BINLOG_FAILED_TO_OPEN_REGISTER_FILE", + 0x2a5f: "ER_BINLOG_FAILED_TO_REINIT_REGISTER_FILE", + 0x2a60: "ER_BINLOG_FAILED_TO_READ_REGISTER_FILE", + 0x2a61: "ER_CANT_STAT_FILE", + 0x2a62: "ER_BINLOG_CANT_DELETE_LOG_FILE_DOES_INDEX_MATCH_FILES", + 0x2a63: "ER_BINLOG_CANT_DELETE_FILE_AND_READ_BINLOG_INDEX", + 0x2a64: "ER_BINLOG_FAILED_TO_DELETE_LOG_FILE", + 0x2a65: "ER_BINLOG_LOGGING_INCIDENT_TO_STOP_SLAVES", + 0x2a66: "ER_BINLOG_CANT_FIND_LOG_IN_INDEX", + 0x2a67: "ER_BINLOG_RECOVERING_AFTER_CRASH_USING", + 0x2a68: "ER_BINLOG_CANT_OPEN_CRASHED_BINLOG", + 0x2a69: "ER_BINLOG_CANT_TRIM_CRASHED_BINLOG", + 0x2a6a: "ER_BINLOG_CRASHED_BINLOG_TRIMMED", + 0x2a6b: "ER_BINLOG_CANT_CLEAR_IN_USE_FLAG_FOR_CRASHED_BINLOG", + 0x2a6c: "ER_BINLOG_FAILED_TO_RUN_AFTER_SYNC_HOOK", + 0x2a6d: "ER_TURNING_LOGGING_OFF_FOR_THE_DURATION", + 0x2a6e: "ER_BINLOG_FAILED_TO_RUN_AFTER_FLUSH_HOOK", + 0x2a6f: "ER_BINLOG_CRASH_RECOVERY_FAILED", + 0x2a70: "ER_BINLOG_WARNING_SUPPRESSED", + 0x2a71: "ER_NDB_LOG_ENTRY", + 0x2a72: "ER_NDB_LOG_ENTRY_WITH_PREFIX", + 0x2a73: "ER_NDB_BINLOG_CANT_CREATE_PURGE_THD", + 0x2a74: "ER_INNODB_UNKNOWN_COLLATION", + 0x2a75: "ER_INNODB_INVALID_LOG_GROUP_HOME_DIR", + 0x2a76: "ER_INNODB_INVALID_INNODB_UNDO_DIRECTORY", + 0x2a77: "ER_INNODB_ILLEGAL_COLON_IN_POOL", + 0x2a78: "ER_INNODB_INVALID_PAGE_SIZE", + 0x2a79: "ER_INNODB_DIRTY_WATER_MARK_NOT_LOW", + 0x2a7a: "ER_INNODB_IO_CAPACITY_EXCEEDS_MAX", + 0x2a7b: "ER_INNODB_FILES_SAME", + 0x2a7c: "ER_INNODB_UNREGISTERED_TRX_ACTIVE", + 0x2a7d: "ER_INNODB_CLOSING_CONNECTION_ROLLS_BACK", + 0x2a7e: "ER_INNODB_TRX_XLATION_TABLE_OOM", + 0x2a7f: "ER_INNODB_CANT_FIND_INDEX_IN_INNODB_DD", + 0x2a80: "ER_INNODB_INDEX_COLUMN_INFO_UNLIKE_MYSQLS", + 0x2a81: "ER_INNODB_CANT_OPEN_TABLE", + 0x2a82: "ER_INNODB_CANT_BUILD_INDEX_XLATION_TABLE_FOR", + 0x2a83: "ER_INNODB_PK_NOT_IN_MYSQL", + 0x2a84: "ER_INNODB_PK_ONLY_IN_MYSQL", + 0x2a85: "ER_INNODB_CLUSTERED_INDEX_PRIVATE", + 0x2a86: "ER_INNODB_PARTITION_TABLE_LOWERCASED", + 0x2a87: "ER_ERRMSG_REPLACEMENT_DODGY", + 0x2a88: "ER_ERRMSG_REPLACEMENTS_FAILED", + 0x2a89: "ER_NPIPE_CANT_CREATE", + 0x2a8a: "ER_PARTITION_MOVE_CREATED_DUPLICATE_ROW_PLEASE_FIX", + 0x2a8b: "ER_AUDIT_CANT_ABORT_COMMAND", + 0x2a8c: "ER_AUDIT_CANT_ABORT_EVENT", + 0x2a8d: "ER_AUDIT_WARNING", + 0x2a8e: "ER_NDB_NUMBER_OF_CHANNELS", + 0x2a8f: "ER_NDB_SLAVE_PARALLEL_WORKERS", + 0x2a90: "ER_NDB_DISTRIBUTING_ERR", + 0x2a91: "ER_RPL_SLAVE_INSECURE_CHANGE_MASTER", + 0x2a92: "ER_RPL_SLAVE_FLUSH_RELAY_LOGS_NOT_ALLOWED", + 0x2a93: "ER_RPL_SLAVE_INCORRECT_CHANNEL", + 0x2a94: "ER_FAILED_TO_FIND_DL_ENTRY", + 0x2a95: "ER_FAILED_TO_OPEN_SHARED_LIBRARY", + 0x2a96: "ER_THREAD_PRIORITY_IGNORED", + 0x2a97: "ER_BINLOG_CACHE_SIZE_TOO_LARGE", + 0x2a98: "ER_BINLOG_STMT_CACHE_SIZE_TOO_LARGE", + 0x2a99: "ER_FAILED_TO_GENERATE_UNIQUE_LOGFILE", + 0x2a9a: "ER_FAILED_TO_READ_FILE", + 0x2a9b: "ER_FAILED_TO_WRITE_TO_FILE", + 0x2a9c: "ER_BINLOG_UNSAFE_MESSAGE_AND_STATEMENT", + 0x2a9d: "ER_FORCE_CLOSE_THREAD", + 0x2a9e: "ER_SERVER_SHUTDOWN_COMPLETE", + 0x2a9f: "ER_RPL_CANT_HAVE_SAME_BASENAME", + 0x2aa0: "ER_RPL_GTID_MODE_REQUIRES_ENFORCE_GTID_CONSISTENCY_ON", + 0x2aa1: "ER_WARN_NO_SERVERID_SPECIFIED", + 0x2aa2: "ER_ABORTING_USER_CONNECTION", + 0x2aa3: "ER_SQL_MODE_MERGED_WITH_STRICT_MODE", + 0x2aa4: "ER_GTID_PURGED_WAS_UPDATED", + 0x2aa5: "ER_GTID_EXECUTED_WAS_UPDATED", + 0x2aa6: "ER_DEPRECATE_MSG_WITH_REPLACEMENT", + 0x2aa7: "ER_TRG_CREATION_CTX_NOT_SET", + 0x2aa8: "ER_FILE_HAS_OLD_FORMAT", + 0x2aa9: "ER_VIEW_CREATION_CTX_NOT_SET", + 0x2aaa: "ER_TABLE_NAME_CAUSES_TOO_LONG_PATH", + 0x2aab: "ER_TABLE_UPGRADE_REQUIRED", + 0x2aac: "ER_GET_ERRNO_FROM_STORAGE_ENGINE", + 0x2aad: "ER_ACCESS_DENIED_ERROR_WITHOUT_PASSWORD", + 0x2aae: "ER_ACCESS_DENIED_ERROR_WITH_PASSWORD", + 0x2aaf: "ER_ACCESS_DENIED_FOR_USER_ACCOUNT_LOCKED", + 0x2ab0: "ER_MUST_CHANGE_EXPIRED_PASSWORD", + 0x2ab1: "ER_SYSTEM_TABLES_NOT_SUPPORTED_BY_STORAGE_ENGINE", + 0x2ab2: "ER_FILESORT_TERMINATED", + 0x2ab3: "ER_SERVER_STARTUP_MSG", + 0x2ab4: "ER_FAILED_TO_FIND_LOCALE_NAME", + 0x2ab5: "ER_FAILED_TO_FIND_COLLATION_NAME", + 0x2ab6: "ER_SERVER_OUT_OF_RESOURCES", + 0x2ab7: "ER_SERVER_OUTOFMEMORY", + 0x2ab8: "ER_INVALID_COLLATION_FOR_CHARSET", + 0x2ab9: "ER_CANT_START_ERROR_LOG_SERVICE", + 0x2aba: "ER_CREATING_NEW_UUID_FIRST_START", + 0x2abb: "ER_FAILED_TO_GET_ABSOLUTE_PATH", + 0x2abc: "ER_PERFSCHEMA_COMPONENTS_INFRASTRUCTURE_BOOTSTRAP", + 0x2abd: "ER_PERFSCHEMA_COMPONENTS_INFRASTRUCTURE_SHUTDOWN", + 0x2abe: "ER_DUP_FD_OPEN_FAILED", + 0x2abf: "ER_SYSTEM_VIEW_INIT_FAILED", + 0x2ac0: "ER_RESOURCE_GROUP_POST_INIT_FAILED", + 0x2ac1: "ER_RESOURCE_GROUP_SUBSYSTEM_INIT_FAILED", + 0x2ac2: "ER_FAILED_START_MYSQLD_DAEMON", + 0x2ac3: "ER_CANNOT_CHANGE_TO_ROOT_DIR", + 0x2ac4: "ER_PERSISTENT_PRIVILEGES_BOOTSTRAP", + 0x2ac5: "ER_BASEDIR_SET_TO", + 0x2ac6: "ER_RPL_FILTER_ADD_WILD_DO_TABLE_FAILED", + 0x2ac7: "ER_RPL_FILTER_ADD_WILD_IGNORE_TABLE_FAILED", + 0x2ac8: "ER_PRIVILEGE_SYSTEM_INIT_FAILED", + 0x2ac9: "ER_CANNOT_SET_LOG_ERROR_SERVICES", + 0x2aca: "ER_PERFSCHEMA_TABLES_INIT_FAILED", + 0x2acb: "ER_TX_EXTRACTION_ALGORITHM_FOR_BINLOG_TX_DEPEDENCY_TRACKING", + 0x2acc: "ER_INVALID_REPLICATION_TIMESTAMPS", + 0x2acd: "ER_RPL_TIMESTAMPS_RETURNED_TO_NORMAL", + 0x2ace: "ER_BINLOG_FILE_OPEN_FAILED", + 0x2acf: "ER_BINLOG_EVENT_WRITE_TO_STMT_CACHE_FAILED", + 0x2ad0: "ER_SLAVE_RELAY_LOG_TRUNCATE_INFO", + 0x2ad1: "ER_SLAVE_RELAY_LOG_PURGE_FAILED", + 0x2ad2: "ER_RPL_SLAVE_FILTER_CREATE_FAILED", + 0x2ad3: "ER_RPL_SLAVE_GLOBAL_FILTERS_COPY_FAILED", + 0x2ad4: "ER_RPL_SLAVE_RESET_FILTER_OPTIONS", + 0x2ad5: "ER_MISSING_GRANT_SYSTEM_TABLE", + 0x2ad6: "ER_MISSING_ACL_SYSTEM_TABLE", + 0x2ad7: "ER_ANONYMOUS_AUTH_ID_NOT_ALLOWED_IN_MANDATORY_ROLES", + 0x2ad8: "ER_UNKNOWN_AUTH_ID_IN_MANDATORY_ROLE", + 0x2ad9: "ER_WRITE_ROW_TO_PARTITION_FAILED", + 0x2ada: "ER_RESOURCE_GROUP_METADATA_UPDATE_SKIPPED", + 0x2adb: "ER_FAILED_TO_PERSIST_RESOURCE_GROUP_METADATA", + 0x2adc: "ER_FAILED_TO_DESERIALIZE_RESOURCE_GROUP", + 0x2add: "ER_FAILED_TO_UPDATE_RESOURCE_GROUP", + 0x2ade: "ER_RESOURCE_GROUP_VALIDATION_FAILED", + 0x2adf: "ER_FAILED_TO_ALLOCATE_MEMORY_FOR_RESOURCE_GROUP", + 0x2ae0: "ER_FAILED_TO_ALLOCATE_MEMORY_FOR_RESOURCE_GROUP_HASH", + 0x2ae1: "ER_FAILED_TO_ADD_RESOURCE_GROUP_TO_MAP", + 0x2ae2: "ER_RESOURCE_GROUP_IS_DISABLED", + 0x2ae3: "ER_FAILED_TO_APPLY_RESOURCE_GROUP_CONTROLLER", + 0x2ae4: "ER_FAILED_TO_ACQUIRE_LOCK_ON_RESOURCE_GROUP", + 0x2ae5: "ER_PFS_NOTIFICATION_FUNCTION_REGISTER_FAILED", + 0x2ae6: "ER_RES_GRP_SET_THR_AFFINITY_FAILED", + 0x2ae7: "ER_RES_GRP_SET_THR_AFFINITY_TO_CPUS_FAILED", + 0x2ae8: "ER_RES_GRP_THD_UNBIND_FROM_CPU_FAILED", + 0x2ae9: "ER_RES_GRP_SET_THREAD_PRIORITY_FAILED", + 0x2aea: "ER_RES_GRP_FAILED_TO_DETERMINE_NICE_CAPABILITY", + 0x2aeb: "ER_RES_GRP_FAILED_TO_GET_THREAD_HANDLE", + 0x2aec: "ER_RES_GRP_GET_THREAD_PRIO_NOT_SUPPORTED", + 0x2aed: "ER_RES_GRP_FAILED_DETERMINE_CPU_COUNT", + 0x2aee: "ER_RES_GRP_FEATURE_NOT_AVAILABLE", + 0x2aef: "ER_RES_GRP_INVALID_THREAD_PRIORITY", + 0x2af0: "ER_RES_GRP_SOLARIS_PROCESSOR_BIND_TO_CPUID_FAILED", + 0x2af1: "ER_RES_GRP_SOLARIS_PROCESSOR_BIND_TO_THREAD_FAILED", + 0x2af2: "ER_RES_GRP_SOLARIS_PROCESSOR_AFFINITY_FAILED", + 0x2af3: "ER_DD_UPGRADE_RENAME_IDX_STATS_FILE_FAILED", + 0x2af4: "ER_DD_UPGRADE_DD_OPEN_FAILED", + 0x2af5: "ER_DD_UPGRADE_FAILED_TO_FETCH_TABLESPACES", + 0x2af6: "ER_DD_UPGRADE_FAILED_TO_ACQUIRE_TABLESPACE", + 0x2af7: "ER_DD_UPGRADE_FAILED_TO_RESOLVE_TABLESPACE_ENGINE", + 0x2af8: "ER_FAILED_TO_CREATE_SDI_FOR_TABLESPACE", + 0x2af9: "ER_FAILED_TO_STORE_SDI_FOR_TABLESPACE", + 0x2afa: "ER_DD_UPGRADE_FAILED_TO_FETCH_TABLES", + 0x2afb: "ER_DD_UPGRADE_DD_POPULATED", + 0x2afc: "ER_DD_UPGRADE_INFO_FILE_OPEN_FAILED", + 0x2afd: "ER_DD_UPGRADE_INFO_FILE_CLOSE_FAILED", + 0x2afe: "ER_DD_UPGRADE_TABLESPACE_MIGRATION_FAILED", + 0x2aff: "ER_DD_UPGRADE_FAILED_TO_CREATE_TABLE_STATS", + 0x2b00: "ER_DD_UPGRADE_TABLE_STATS_MIGRATE_COMPLETED", + 0x2b01: "ER_DD_UPGRADE_FAILED_TO_CREATE_INDEX_STATS", + 0x2b02: "ER_DD_UPGRADE_INDEX_STATS_MIGRATE_COMPLETED", + 0x2b03: "ER_DD_UPGRADE_FAILED_FIND_VALID_DATA_DIR", + 0x2b04: "ER_DD_UPGRADE_START", + 0x2b05: "ER_DD_UPGRADE_FAILED_INIT_DD_SE", + 0x2b06: "ER_DD_UPGRADE_FOUND_PARTIALLY_UPGRADED_DD_ABORT", + 0x2b07: "ER_DD_UPGRADE_FOUND_PARTIALLY_UPGRADED_DD_CONTINUE", + 0x2b08: "ER_DD_UPGRADE_SE_LOGS_FAILED", + 0x2b09: "ER_DD_UPGRADE_SDI_INFO_UPDATE_FAILED", + 0x2b0a: "ER_SKIP_UPDATING_METADATA_IN_SE_RO_MODE", + 0x2b0b: "ER_CREATED_SYSTEM_WITH_VERSION", + 0x2b0c: "ER_UNKNOWN_ERROR_DETECTED_IN_SE", + 0x2b0d: "ER_READ_LOG_EVENT_FAILED", + 0x2b0e: "ER_ROW_DATA_TOO_BIG_TO_WRITE_IN_BINLOG", + 0x2b0f: "ER_FAILED_TO_CONSTRUCT_DROP_EVENT_QUERY", + 0x2b10: "ER_FAILED_TO_BINLOG_DROP_EVENT", + 0x2b11: "ER_FAILED_TO_START_SLAVE_THREAD", + 0x2b12: "ER_RPL_IO_THREAD_KILLED", + 0x2b13: "ER_SLAVE_RECONNECT_FAILED", + 0x2b14: "ER_SLAVE_KILLED_AFTER_RECONNECT", + 0x2b15: "ER_SLAVE_NOT_STARTED_ON_SOME_CHANNELS", + 0x2b16: "ER_FAILED_TO_ADD_RPL_FILTER", + 0x2b17: "ER_PER_CHANNEL_RPL_FILTER_CONF_FOR_GRP_RPL", + 0x2b18: "ER_RPL_FILTERS_NOT_ATTACHED_TO_CHANNEL", + 0x2b19: "ER_FAILED_TO_BUILD_DO_AND_IGNORE_TABLE_HASHES", + 0x2b1a: "ER_CLONE_PLUGIN_NOT_LOADED", + 0x2b1b: "ER_CLONE_HANDLER_EXISTS", + 0x2b1c: "ER_FAILED_TO_CREATE_CLONE_HANDLER", + 0x2b1d: "ER_CYCLE_TIMER_IS_NOT_AVAILABLE", + 0x2b1e: "ER_NANOSECOND_TIMER_IS_NOT_AVAILABLE", + 0x2b1f: "ER_MICROSECOND_TIMER_IS_NOT_AVAILABLE", + 0x2b20: "ER_PFS_MALLOC_ARRAY_OVERFLOW", + 0x2b21: "ER_PFS_MALLOC_ARRAY_OOM", + 0x2b22: "ER_INNODB_FAILED_TO_FIND_IDX_WITH_KEY_NO", + 0x2b23: "ER_INNODB_FAILED_TO_FIND_IDX", + 0x2b24: "ER_INNODB_FAILED_TO_FIND_IDX_FROM_DICT_CACHE", + 0x2b25: "ER_INNODB_ACTIVE_INDEX_CHANGE_FAILED", + 0x2b26: "ER_INNODB_DIFF_IN_REF_LEN", + 0x2b27: "ER_WRONG_TYPE_FOR_COLUMN_PREFIX_IDX_FLD", + 0x2b28: "ER_INNODB_CANNOT_CREATE_TABLE", + 0x2b29: "ER_INNODB_INTERNAL_INDEX", + 0x2b2a: "ER_INNODB_IDX_CNT_MORE_THAN_DEFINED_IN_MYSQL", + 0x2b2b: "ER_INNODB_IDX_CNT_FEWER_THAN_DEFINED_IN_MYSQL", + 0x2b2c: "ER_INNODB_IDX_COLUMN_CNT_DIFF", + 0x2b2d: "ER_INNODB_USE_MONITOR_GROUP_NAME", + 0x2b2e: "ER_INNODB_MONITOR_DEFAULT_VALUE_NOT_DEFINED", + 0x2b2f: "ER_INNODB_MONITOR_IS_ENABLED", + 0x2b30: "ER_INNODB_INVALID_MONITOR_COUNTER_NAME", + 0x2b31: "ER_WIN_LOAD_LIBRARY_FAILED", + 0x2b32: "ER_PARTITION_HANDLER_ADMIN_MSG", + 0x2b33: "ER_RPL_RLI_INIT_INFO_MSG", + 0x2b34: "ER_DD_UPGRADE_TABLE_INTACT_ERROR", + 0x2b35: "ER_SERVER_INIT_COMPILED_IN_COMMANDS", + 0x2b36: "ER_MYISAM_CHECK_METHOD_ERROR", + 0x2b37: "ER_MYISAM_CRASHED_ERROR", + 0x2b38: "ER_WAITPID_FAILED", + 0x2b39: "ER_FAILED_TO_FIND_MYSQLD_STATUS", + 0x2b3a: "ER_INNODB_ERROR_LOGGER_MSG", + 0x2b3b: "ER_INNODB_ERROR_LOGGER_FATAL_MSG", + 0x2b3c: "ER_DEPRECATED_SYNTAX_WITH_REPLACEMENT", + 0x2b3d: "ER_DEPRECATED_SYNTAX_NO_REPLACEMENT", + 0x2b3e: "ER_DEPRECATE_MSG_NO_REPLACEMENT", + 0x2b3f: "ER_LOG_PRINTF_MSG", + 0x2b40: "ER_BINLOG_LOGGING_NOT_POSSIBLE", + 0x2b41: "ER_FAILED_TO_SET_PERSISTED_OPTIONS", + 0x2b42: "ER_COMPONENTS_FAILED_TO_ACQUIRE_SERVICE_IMPLEMENTATION", + 0x2b43: "ER_RES_GRP_INVALID_VCPU_RANGE", + 0x2b44: "ER_RES_GRP_INVALID_VCPU_ID", + 0x2b45: "ER_ERROR_DURING_FLUSH_LOG_COMMIT_PHASE", + 0x2b46: "ER_DROP_DATABASE_FAILED_RMDIR_MANUALLY", + 0x2b47: "ER_EXPIRE_LOGS_DAYS_IGNORED", + 0x2b48: "ER_BINLOG_MALFORMED_OR_OLD_RELAY_LOG", + 0x2b49: "ER_DD_UPGRADE_VIEW_COLUMN_NAME_TOO_LONG", + 0x2b4a: "ER_TABLE_NEEDS_DUMP_UPGRADE", + 0x2b4b: "ER_DD_UPGRADE_FAILED_TO_UPDATE_VER_NO_IN_TABLESPACE", + 0x2b4c: "ER_KEYRING_MIGRATION_FAILED", + 0x2b4d: "ER_KEYRING_MIGRATION_SUCCESSFUL", + 0x2b4e: "ER_RESTART_RECEIVED_INFO", + 0x2b4f: "ER_LCTN_CHANGED", + 0x2b50: "ER_DD_INITIALIZE", + 0x2b51: "ER_DD_RESTART", + 0x2b52: "ER_DD_UPGRADE", + 0x2b53: "ER_DD_UPGRADE_OFF", + 0x2b54: "ER_DD_UPGRADE_VERSION_NOT_SUPPORTED", + 0x2b55: "ER_DD_UPGRADE_SCHEMA_UNAVAILABLE", + 0x2b56: "ER_DD_MINOR_DOWNGRADE", + 0x2b57: "ER_DD_MINOR_DOWNGRADE_VERSION_NOT_SUPPORTED", + 0x2b58: "ER_DD_NO_VERSION_FOUND", + 0x2b59: "ER_THREAD_POOL_NOT_SUPPORTED_ON_PLATFORM", + 0x2b5a: "ER_THREAD_POOL_SIZE_TOO_LOW", + 0x2b5b: "ER_THREAD_POOL_SIZE_TOO_HIGH", + 0x2b5c: "ER_THREAD_POOL_ALGORITHM_INVALID", + 0x2b5d: "ER_THREAD_POOL_INVALID_STALL_LIMIT", + 0x2b5e: "ER_THREAD_POOL_INVALID_PRIO_KICKUP_TIMER", + 0x2b5f: "ER_THREAD_POOL_MAX_UNUSED_THREADS_INVALID", + 0x2b60: "ER_THREAD_POOL_CON_HANDLER_INIT_FAILED", + 0x2b61: "ER_THREAD_POOL_INIT_FAILED", + 0x2b62: "ER_THREAD_POOL_PLUGIN_STARTED", + 0x2b63: "ER_THREAD_POOL_CANNOT_SET_THREAD_SPECIFIC_DATA", + 0x2b64: "ER_THREAD_POOL_FAILED_TO_CREATE_CONNECT_HANDLER_THD", + 0x2b65: "ER_THREAD_POOL_FAILED_TO_CREATE_THD_AND_AUTH_CONN", + 0x2b66: "ER_THREAD_POOL_FAILED_PROCESS_CONNECT_EVENT", + 0x2b67: "ER_THREAD_POOL_FAILED_TO_CREATE_POOL", + 0x2b68: "ER_THREAD_POOL_RATE_LIMITED_ERROR_MSGS", + 0x2b69: "ER_TRHEAD_POOL_LOW_LEVEL_INIT_FAILED", + 0x2b6a: "ER_THREAD_POOL_LOW_LEVEL_REARM_FAILED", + 0x2b6b: "ER_THREAD_POOL_BUFFER_TOO_SMALL", + 0x2b6c: "ER_MECAB_NOT_SUPPORTED", + 0x2b6d: "ER_MECAB_NOT_VERIFIED", + 0x2b6e: "ER_MECAB_CREATING_MODEL", + 0x2b6f: "ER_MECAB_FAILED_TO_CREATE_MODEL", + 0x2b70: "ER_MECAB_FAILED_TO_CREATE_TRIGGER", + 0x2b71: "ER_MECAB_UNSUPPORTED_CHARSET", + 0x2b72: "ER_MECAB_CHARSET_LOADED", + 0x2b73: "ER_MECAB_PARSE_FAILED", + 0x2b74: "ER_MECAB_OOM_WHILE_PARSING_TEXT", + 0x2b75: "ER_MECAB_CREATE_LATTICE_FAILED", + 0x2b76: "ER_SEMISYNC_TRACE_ENTER_FUNC", + 0x2b77: "ER_SEMISYNC_TRACE_EXIT_WITH_INT_EXIT_CODE", + 0x2b78: "ER_SEMISYNC_TRACE_EXIT_WITH_BOOL_EXIT_CODE", + 0x2b79: "ER_SEMISYNC_TRACE_EXIT", + 0x2b7a: "ER_SEMISYNC_RPL_INIT_FOR_TRX", + 0x2b7b: "ER_SEMISYNC_FAILED_TO_ALLOCATE_TRX_NODE", + 0x2b7c: "ER_SEMISYNC_BINLOG_WRITE_OUT_OF_ORDER", + 0x2b7d: "ER_SEMISYNC_INSERT_LOG_INFO_IN_ENTRY", + 0x2b7e: "ER_SEMISYNC_PROBE_LOG_INFO_IN_ENTRY", + 0x2b7f: "ER_SEMISYNC_CLEARED_ALL_ACTIVE_TRANSACTION_NODES", + 0x2b80: "ER_SEMISYNC_CLEARED_ACTIVE_TRANSACTION_TILL_POS", + 0x2b81: "ER_SEMISYNC_REPLY_MAGIC_NO_ERROR", + 0x2b82: "ER_SEMISYNC_REPLY_PKT_LENGTH_TOO_SMALL", + 0x2b83: "ER_SEMISYNC_REPLY_BINLOG_FILE_TOO_LARGE", + 0x2b84: "ER_SEMISYNC_SERVER_REPLY", + 0x2b85: "ER_SEMISYNC_FUNCTION_CALLED_TWICE", + 0x2b86: "ER_SEMISYNC_RPL_ENABLED_ON_MASTER", + 0x2b87: "ER_SEMISYNC_MASTER_OOM", + 0x2b88: "ER_SEMISYNC_DISABLED_ON_MASTER", + 0x2b89: "ER_SEMISYNC_FORCED_SHUTDOWN", + 0x2b8a: "ER_SEMISYNC_MASTER_GOT_REPLY_AT_POS", + 0x2b8b: "ER_SEMISYNC_MASTER_SIGNAL_ALL_WAITING_THREADS", + 0x2b8c: "ER_SEMISYNC_MASTER_TRX_WAIT_POS", + 0x2b8d: "ER_SEMISYNC_BINLOG_REPLY_IS_AHEAD", + 0x2b8e: "ER_SEMISYNC_MOVE_BACK_WAIT_POS", + 0x2b8f: "ER_SEMISYNC_INIT_WAIT_POS", + 0x2b90: "ER_SEMISYNC_WAIT_TIME_FOR_BINLOG_SENT", + 0x2b91: "ER_SEMISYNC_WAIT_FOR_BINLOG_TIMEDOUT", + 0x2b92: "ER_SEMISYNC_WAIT_TIME_ASSESSMENT_FOR_COMMIT_TRX_FAILED", + 0x2b93: "ER_SEMISYNC_RPL_SWITCHED_OFF", + 0x2b94: "ER_SEMISYNC_RPL_SWITCHED_ON", + 0x2b95: "ER_SEMISYNC_NO_SPACE_IN_THE_PKT", + 0x2b96: "ER_SEMISYNC_SYNC_HEADER_UPDATE_INFO", + 0x2b97: "ER_SEMISYNC_FAILED_TO_INSERT_TRX_NODE", + 0x2b98: "ER_SEMISYNC_TRX_SKIPPED_AT_POS", + 0x2b99: "ER_SEMISYNC_MASTER_FAILED_ON_NET_FLUSH", + 0x2b9a: "ER_SEMISYNC_RECEIVED_ACK_IS_SMALLER", + 0x2b9b: "ER_SEMISYNC_ADD_ACK_TO_SLOT", + 0x2b9c: "ER_SEMISYNC_UPDATE_EXISTING_SLAVE_ACK", + 0x2b9d: "ER_SEMISYNC_FAILED_TO_START_ACK_RECEIVER_THD", + 0x2b9e: "ER_SEMISYNC_STARTING_ACK_RECEIVER_THD", + 0x2b9f: "ER_SEMISYNC_FAILED_TO_WAIT_ON_DUMP_SOCKET", + 0x2ba0: "ER_SEMISYNC_STOPPING_ACK_RECEIVER_THREAD", + 0x2ba1: "ER_SEMISYNC_FAILED_REGISTER_SLAVE_TO_RECEIVER", + 0x2ba2: "ER_SEMISYNC_START_BINLOG_DUMP_TO_SLAVE", + 0x2ba3: "ER_SEMISYNC_STOP_BINLOG_DUMP_TO_SLAVE", + 0x2ba4: "ER_SEMISYNC_UNREGISTER_TRX_OBSERVER_FAILED", + 0x2ba5: "ER_SEMISYNC_UNREGISTER_BINLOG_STORAGE_OBSERVER_FAILED", + 0x2ba6: "ER_SEMISYNC_UNREGISTER_BINLOG_TRANSMIT_OBSERVER_FAILED", + 0x2ba7: "ER_SEMISYNC_UNREGISTERED_REPLICATOR", + 0x2ba8: "ER_SEMISYNC_SOCKET_FD_TOO_LARGE", + 0x2ba9: "ER_SEMISYNC_SLAVE_REPLY", + 0x2baa: "ER_SEMISYNC_MISSING_MAGIC_NO_FOR_SEMISYNC_PKT", + 0x2bab: "ER_SEMISYNC_SLAVE_START", + 0x2bac: "ER_SEMISYNC_SLAVE_REPLY_WITH_BINLOG_INFO", + 0x2bad: "ER_SEMISYNC_SLAVE_NET_FLUSH_REPLY_FAILED", + 0x2bae: "ER_SEMISYNC_SLAVE_SEND_REPLY_FAILED", + 0x2baf: "ER_SEMISYNC_EXECUTION_FAILED_ON_MASTER", + 0x2bb0: "ER_SEMISYNC_NOT_SUPPORTED_BY_MASTER", + 0x2bb1: "ER_SEMISYNC_SLAVE_SET_FAILED", + 0x2bb2: "ER_SEMISYNC_FAILED_TO_STOP_ACK_RECEIVER_THD", + 0x2bb3: "ER_FIREWALL_FAILED_TO_READ_FIREWALL_TABLES", + 0x2bb4: "ER_FIREWALL_FAILED_TO_REG_DYNAMIC_PRIVILEGES", + 0x2bb5: "ER_FIREWALL_RECORDING_STMT_WAS_TRUNCATED", + 0x2bb6: "ER_FIREWALL_RECORDING_STMT_WITHOUT_TEXT", + 0x2bb7: "ER_FIREWALL_SUSPICIOUS_STMT", + 0x2bb8: "ER_FIREWALL_ACCESS_DENIED", + 0x2bb9: "ER_FIREWALL_SKIPPED_UNKNOWN_USER_MODE", + 0x2bba: "ER_FIREWALL_RELOADING_CACHE", + 0x2bbb: "ER_FIREWALL_RESET_FOR_USER", + 0x2bbc: "ER_FIREWALL_STATUS_FLUSHED", + 0x2bbd: "ER_KEYRING_LOGGER_ERROR_MSG", + 0x2bbe: "ER_AUDIT_LOG_FILTER_IS_NOT_INSTALLED", + 0x2bbf: "ER_AUDIT_LOG_SWITCHING_TO_INCLUDE_LIST", + 0x2bc0: "ER_AUDIT_LOG_CANNOT_SET_LOG_POLICY_WITH_OTHER_POLICIES", + 0x2bc1: "ER_AUDIT_LOG_ONLY_INCLUDE_LIST_USED", + 0x2bc2: "ER_AUDIT_LOG_INDEX_MAP_CANNOT_ACCESS_DIR", + 0x2bc3: "ER_AUDIT_LOG_WRITER_RENAME_FILE_FAILED", + 0x2bc4: "ER_AUDIT_LOG_WRITER_DEST_FILE_ALREADY_EXISTS", + 0x2bc5: "ER_AUDIT_LOG_WRITER_RENAME_FILE_FAILED_REMOVE_FILE_MANUALLY", + 0x2bc6: "ER_AUDIT_LOG_WRITER_INCOMPLETE_FILE_RENAMED", + 0x2bc7: "ER_AUDIT_LOG_WRITER_FAILED_TO_WRITE_TO_FILE", + 0x2bc8: "ER_AUDIT_LOG_EC_WRITER_FAILED_TO_INIT_ENCRYPTION", + 0x2bc9: "ER_AUDIT_LOG_EC_WRITER_FAILED_TO_INIT_COMPRESSION", + 0x2bca: "ER_AUDIT_LOG_EC_WRITER_FAILED_TO_CREATE_FILE", + 0x2bcb: "ER_AUDIT_LOG_RENAME_LOG_FILE_BEFORE_FLUSH", + 0x2bcc: "ER_AUDIT_LOG_FILTER_RESULT_MSG", + 0x2bcd: "ER_AUDIT_LOG_JSON_READER_FAILED_TO_PARSE", + 0x2bce: "ER_AUDIT_LOG_JSON_READER_BUF_TOO_SMALL", + 0x2bcf: "ER_AUDIT_LOG_JSON_READER_FAILED_TO_OPEN_FILE", + 0x2bd0: "ER_AUDIT_LOG_JSON_READER_FILE_PARSING_ERROR", + 0x2bd1: "ER_AUDIT_LOG_FILTER_INVALID_COLUMN_COUNT", + 0x2bd2: "ER_AUDIT_LOG_FILTER_INVALID_COLUMN_DEFINITION", + 0x2bd3: "ER_AUDIT_LOG_FILTER_FAILED_TO_STORE_TABLE_FLDS", + 0x2bd4: "ER_AUDIT_LOG_FILTER_FAILED_TO_UPDATE_TABLE", + 0x2bd5: "ER_AUDIT_LOG_FILTER_FAILED_TO_INSERT_INTO_TABLE", + 0x2bd6: "ER_AUDIT_LOG_FILTER_FAILED_TO_DELETE_FROM_TABLE", + 0x2bd7: "ER_AUDIT_LOG_FILTER_FAILED_TO_INIT_TABLE_FOR_READ", + 0x2bd8: "ER_AUDIT_LOG_FILTER_FAILED_TO_READ_TABLE", + 0x2bd9: "ER_AUDIT_LOG_FILTER_FAILED_TO_CLOSE_TABLE_AFTER_READING", + 0x2bda: "ER_AUDIT_LOG_FILTER_USER_AND_HOST_CANNOT_BE_EMPTY", + 0x2bdb: "ER_AUDIT_LOG_FILTER_FLD_FILTERNAME_CANNOT_BE_EMPTY", + 0x2bdc: "ER_VALIDATE_PWD_DICT_FILE_NOT_SPECIFIED", + 0x2bdd: "ER_VALIDATE_PWD_DICT_FILE_NOT_LOADED", + 0x2bde: "ER_VALIDATE_PWD_DICT_FILE_TOO_BIG", + 0x2bdf: "ER_VALIDATE_PWD_FAILED_TO_READ_DICT_FILE", + 0x2be0: "ER_VALIDATE_PWD_FAILED_TO_GET_FLD_FROM_SECURITY_CTX", + 0x2be1: "ER_VALIDATE_PWD_FAILED_TO_GET_SECURITY_CTX", + 0x2be2: "ER_VALIDATE_PWD_LENGTH_CHANGED", + 0x2be3: "ER_REWRITER_QUERY_ERROR_MSG", + 0x2be4: "ER_REWRITER_QUERY_FAILED", + 0x2be5: "ER_XPLUGIN_STARTUP_FAILED", + 0x2be6: "ER_XPLUGIN_SERVER_EXITING", + 0x2be7: "ER_XPLUGIN_SERVER_EXITED", + 0x2be8: "ER_XPLUGIN_USING_SSL_CONF_FROM_SERVER", + 0x2be9: "ER_XPLUGIN_USING_SSL_CONF_FROM_MYSQLX", + 0x2bea: "ER_XPLUGIN_FAILED_TO_USE_SSL_CONF", + 0x2beb: "ER_XPLUGIN_USING_SSL_FOR_TLS_CONNECTION", + 0x2bec: "ER_XPLUGIN_REFERENCE_TO_SECURE_CONN_WITH_XPLUGIN", + 0x2bed: "ER_XPLUGIN_ERROR_MSG", + 0x2bee: "ER_SHA_PWD_FAILED_TO_PARSE_AUTH_STRING", + 0x2bef: "ER_SHA_PWD_FAILED_TO_GENERATE_MULTI_ROUND_HASH", + 0x2bf0: "ER_SHA_PWD_AUTH_REQUIRES_RSA_OR_SSL", + 0x2bf1: "ER_SHA_PWD_RSA_KEY_TOO_LONG", + 0x2bf2: "ER_PLUGIN_COMMON_FAILED_TO_OPEN_FILTER_TABLES", + 0x2bf3: "ER_PLUGIN_COMMON_FAILED_TO_OPEN_TABLE", + 0x2bf4: "ER_AUTH_LDAP_ERROR_LOGGER_ERROR_MSG", + 0x2bf5: "ER_CONN_CONTROL_ERROR_MSG", + 0x2bf6: "ER_GRP_RPL_ERROR_MSG", + 0x2bf7: "ER_SHA_PWD_SALT_FOR_USER_CORRUPT", + 0x2bf8: "ER_SYS_VAR_COMPONENT_OOM", + 0x2bf9: "ER_SYS_VAR_COMPONENT_VARIABLE_SET_READ_ONLY", + 0x2bfa: "ER_SYS_VAR_COMPONENT_UNKNOWN_VARIABLE_TYPE", + 0x2bfb: "ER_SYS_VAR_COMPONENT_FAILED_TO_PARSE_VARIABLE_OPTIONS", + 0x2bfc: "ER_SYS_VAR_COMPONENT_FAILED_TO_MAKE_VARIABLE_PERSISTENT", + 0x2bfd: "ER_COMPONENT_FILTER_CONFUSED", + 0x2bfe: "ER_STOP_SLAVE_IO_THREAD_DISK_SPACE", + 0x2bff: "ER_LOG_FILE_CANNOT_OPEN", + 0x2c04: "ER_PERSIST_OPTION_STATUS", + 0x2c05: "ER_NOT_IMPLEMENTED_GET_TABLESPACE_STATISTICS", + 0x2c08: "ER_SSL_FIPS_MODE_ERROR", + 0x2c09: "ER_CONN_INIT_CONNECT_IGNORED", + 0x2c0a: "ER_UNSUPPORTED_SQL_MODE", + 0x2c0b: "ER_REWRITER_OOM", + 0x2c0c: "ER_REWRITER_TABLE_MALFORMED_ERROR", + 0x2c0d: "ER_REWRITER_LOAD_FAILED", + 0x2c0e: "ER_REWRITER_READ_FAILED", + 0x2c0f: "ER_CONN_CONTROL_EVENT_COORDINATOR_INIT_FAILED", + 0x2c10: "ER_CONN_CONTROL_STAT_CONN_DELAY_TRIGGERED_UPDATE_FAILED", + 0x2c11: "ER_CONN_CONTROL_STAT_CONN_DELAY_TRIGGERED_RESET_FAILED", + 0x2c12: "ER_CONN_CONTROL_INVALID_CONN_DELAY_TYPE", + 0x2c13: "ER_CONN_CONTROL_DELAY_ACTION_INIT_FAILED", + 0x2c14: "ER_CONN_CONTROL_FAILED_TO_SET_CONN_DELAY", + 0x2c15: "ER_CONN_CONTROL_FAILED_TO_UPDATE_CONN_DELAY_HASH", + 0x2c16: "ER_XPLUGIN_FORCE_STOP_CLIENT", + 0x2c17: "ER_XPLUGIN_MAX_AUTH_ATTEMPTS_REACHED", + 0x2c18: "ER_XPLUGIN_BUFFER_PAGE_ALLOC_FAILED", + 0x2c19: "ER_XPLUGIN_DETECTED_HANGING_CLIENTS", + 0x2c1a: "ER_XPLUGIN_FAILED_TO_ACCEPT_CLIENT", + 0x2c1b: "ER_XPLUGIN_FAILED_TO_SCHEDULE_CLIENT", + 0x2c1c: "ER_XPLUGIN_FAILED_TO_PREPARE_IO_INTERFACES", + 0x2c1d: "ER_XPLUGIN_SRV_SESSION_INIT_THREAD_FAILED", + 0x2c1e: "ER_XPLUGIN_UNABLE_TO_USE_USER_SESSION_ACCOUNT", + 0x2c1f: "ER_XPLUGIN_REFERENCE_TO_USER_ACCOUNT_DOC_SECTION", + 0x2c20: "ER_XPLUGIN_UNEXPECTED_EXCEPTION_DISPATCHING_CMD", + 0x2c21: "ER_XPLUGIN_EXCEPTION_IN_TASK_SCHEDULER", + 0x2c22: "ER_XPLUGIN_TASK_SCHEDULING_FAILED", + 0x2c23: "ER_XPLUGIN_EXCEPTION_IN_EVENT_LOOP", + 0x2c24: "ER_XPLUGIN_LISTENER_SETUP_FAILED", + 0x2c25: "ER_XPLUING_NET_STARTUP_FAILED", + 0x2c26: "ER_XPLUGIN_FAILED_AT_SSL_CONF", + 0x2c27: "ER_XPLUGIN_CLIENT_SSL_HANDSHAKE_FAILED", + 0x2c28: "ER_XPLUGIN_SSL_HANDSHAKE_WITH_SERVER_FAILED", + 0x2c29: "ER_XPLUGIN_FAILED_TO_CREATE_SESSION_FOR_CONN", + 0x2c2a: "ER_XPLUGIN_FAILED_TO_INITIALIZE_SESSION", + 0x2c2b: "ER_XPLUGIN_MESSAGE_TOO_LONG", + 0x2c2c: "ER_XPLUGIN_UNINITIALIZED_MESSAGE", + 0x2c2d: "ER_XPLUGIN_FAILED_TO_SET_MIN_NUMBER_OF_WORKERS", + 0x2c2e: "ER_XPLUGIN_UNABLE_TO_ACCEPT_CONNECTION", + 0x2c2f: "ER_XPLUGIN_ALL_IO_INTERFACES_DISABLED", + 0x2c30: "ER_XPLUGIN_INVALID_MSG_DURING_CLIENT_INIT", + 0x2c31: "ER_XPLUGIN_CLOSING_CLIENTS_ON_SHUTDOWN", + 0x2c32: "ER_XPLUGIN_ERROR_READING_SOCKET", + 0x2c33: "ER_XPLUGIN_PEER_DISCONNECTED_WHILE_READING_MSG_BODY", + 0x2c34: "ER_XPLUGIN_READ_FAILED_CLOSING_CONNECTION", + 0x2c35: "ER_XPLUGIN_INVALID_AUTH_METHOD", + 0x2c36: "ER_XPLUGIN_UNEXPECTED_MSG_DURING_AUTHENTICATION", + 0x2c37: "ER_XPLUGIN_ERROR_WRITING_TO_CLIENT", + 0x2c38: "ER_XPLUGIN_SCHEDULER_STARTED", + 0x2c39: "ER_XPLUGIN_SCHEDULER_STOPPED", + 0x2c3a: "ER_XPLUGIN_LISTENER_SYS_VARIABLE_ERROR", + 0x2c3b: "ER_XPLUGIN_LISTENER_STATUS_MSG", + 0x2c3c: "ER_XPLUGIN_RETRYING_BIND_ON_PORT", + 0x2c3d: "ER_XPLUGIN_SHUTDOWN_TRIGGERED", + 0x2c3e: "ER_XPLUGIN_USER_ACCOUNT_WITH_ALL_PERMISSIONS", + 0x2c3f: "ER_XPLUGIN_EXISTING_USER_ACCOUNT_WITH_INCOMPLETE_GRANTS", + 0x2c40: "ER_XPLUGIN_SERVER_STARTS_HANDLING_CONNECTIONS", + 0x2c41: "ER_XPLUGIN_SERVER_STOPPED_HANDLING_CONNECTIONS", + 0x2c42: "ER_XPLUGIN_FAILED_TO_INTERRUPT_SESSION", + 0x2c43: "ER_XPLUGIN_CLIENT_RELEASE_TRIGGERED", + 0x2c44: "ER_XPLUGIN_IPv6_AVAILABLE", + 0x2c45: "ER_XPLUGIN_UNIX_SOCKET_NOT_CONFIGURED", + 0x2c46: "ER_XPLUGIN_CLIENT_KILL_MSG", + 0x2c47: "ER_XPLUGIN_FAILED_TO_GET_SECURITY_CTX", + 0x2c48: "ER_XPLUGIN_FAILED_TO_SWITCH_SECURITY_CTX_TO_ROOT", + 0x2c49: "ER_XPLUGIN_FAILED_TO_CLOSE_SQL_SESSION", + 0x2c4a: "ER_XPLUGIN_FAILED_TO_EXECUTE_ADMIN_CMD", + 0x2c4b: "ER_XPLUGIN_EMPTY_ADMIN_CMD", + 0x2c4c: "ER_XPLUGIN_FAILED_TO_GET_SYS_VAR", + 0x2c4d: "ER_XPLUGIN_FAILED_TO_GET_CREATION_STMT", + 0x2c4e: "ER_XPLUGIN_FAILED_TO_GET_ENGINE_INFO", + 0x2c4f: "ER_XPLUGIN_FAIL_TO_GET_RESULT_DATA", + 0x2c50: "ER_XPLUGIN_CAPABILITY_EXPIRED_PASSWORD", + 0x2c51: "ER_XPLUGIN_FAILED_TO_SET_SO_REUSEADDR_FLAG", + 0x2c52: "ER_XPLUGIN_FAILED_TO_OPEN_INTERNAL_SESSION", + 0x2c53: "ER_XPLUGIN_FAILED_TO_SWITCH_CONTEXT", + 0x2c54: "ER_XPLUGIN_FAILED_TO_UNREGISTER_UDF", + 0x2c55: "ER_XPLUGIN_GET_PEER_ADDRESS_FAILED", + 0x2c56: "ER_XPLUGIN_CAPABILITY_CLIENT_INTERACTIVE_FAILED", + 0x2c57: "ER_XPLUGIN_FAILED_TO_RESET_IPV6_V6ONLY_FLAG", + 0x2c58: "ER_KEYRING_INVALID_KEY_TYPE", + 0x2c59: "ER_KEYRING_INVALID_KEY_LENGTH", + 0x2c5a: "ER_KEYRING_FAILED_TO_CREATE_KEYRING_DIR", + 0x2c5b: "ER_KEYRING_FILE_INIT_FAILED", + 0x2c5c: "ER_KEYRING_INTERNAL_EXCEPTION_FAILED_FILE_INIT", + 0x2c5d: "ER_KEYRING_FAILED_TO_GENERATE_KEY", + 0x2c5e: "ER_KEYRING_CHECK_KEY_FAILED_DUE_TO_INVALID_KEY", + 0x2c5f: "ER_KEYRING_CHECK_KEY_FAILED_DUE_TO_EMPTY_KEY_ID", + 0x2c60: "ER_KEYRING_OPERATION_FAILED_DUE_TO_INTERNAL_ERROR", + 0x2c61: "ER_KEYRING_INCORRECT_FILE", + 0x2c62: "ER_KEYRING_FOUND_MALFORMED_BACKUP_FILE", + 0x2c63: "ER_KEYRING_FAILED_TO_RESTORE_FROM_BACKUP_FILE", + 0x2c64: "ER_KEYRING_FAILED_TO_FLUSH_KEYRING_TO_FILE", + 0x2c65: "ER_KEYRING_FAILED_TO_GET_FILE_STAT", + 0x2c66: "ER_KEYRING_FAILED_TO_REMOVE_FILE", + 0x2c67: "ER_KEYRING_FAILED_TO_TRUNCATE_FILE", + 0x2c68: "ER_KEYRING_UNKNOWN_ERROR", + 0x2c69: "ER_KEYRING_FAILED_TO_SET_KEYRING_FILE_DATA", + 0x2c6a: "ER_KEYRING_FILE_IO_ERROR", + 0x2c6b: "ER_KEYRING_FAILED_TO_LOAD_KEYRING_CONTENT", + 0x2c6c: "ER_KEYRING_FAILED_TO_FLUSH_KEYS_TO_KEYRING", + 0x2c6d: "ER_KEYRING_FAILED_TO_FLUSH_KEYS_TO_KEYRING_BACKUP", + 0x2c6e: "ER_KEYRING_KEY_FETCH_FAILED_DUE_TO_EMPTY_KEY_ID", + 0x2c6f: "ER_KEYRING_FAILED_TO_REMOVE_KEY_DUE_TO_EMPTY_ID", + 0x2c70: "ER_KEYRING_OKV_INCORRECT_KEY_VAULT_CONFIGURED", + 0x2c71: "ER_KEYRING_OKV_INIT_FAILED_DUE_TO_INCORRECT_CONF", + 0x2c72: "ER_KEYRING_OKV_INIT_FAILED_DUE_TO_INTERNAL_ERROR", + 0x2c73: "ER_KEYRING_OKV_INVALID_KEY_TYPE", + 0x2c74: "ER_KEYRING_OKV_INVALID_KEY_LENGTH_FOR_CIPHER", + 0x2c75: "ER_KEYRING_OKV_FAILED_TO_GENERATE_KEY_DUE_TO_INTERNAL_ERROR", + 0x2c76: "ER_KEYRING_OKV_FAILED_TO_FIND_SERVER_ENTRY", + 0x2c77: "ER_KEYRING_OKV_FAILED_TO_FIND_STANDBY_SERVER_ENTRY", + 0x2c78: "ER_KEYRING_OKV_FAILED_TO_PARSE_CONF_FILE", + 0x2c79: "ER_KEYRING_OKV_FAILED_TO_LOAD_KEY_UID", + 0x2c7a: "ER_KEYRING_OKV_FAILED_TO_INIT_SSL_LAYER", + 0x2c7b: "ER_KEYRING_OKV_FAILED_TO_INIT_CLIENT", + 0x2c7c: "ER_KEYRING_OKV_CONNECTION_TO_SERVER_FAILED", + 0x2c7d: "ER_KEYRING_OKV_FAILED_TO_REMOVE_KEY", + 0x2c7e: "ER_KEYRING_OKV_FAILED_TO_ADD_ATTRIBUTE", + 0x2c7f: "ER_KEYRING_OKV_FAILED_TO_GENERATE_KEY", + 0x2c80: "ER_KEYRING_OKV_FAILED_TO_STORE_KEY", + 0x2c81: "ER_KEYRING_OKV_FAILED_TO_ACTIVATE_KEYS", + 0x2c82: "ER_KEYRING_OKV_FAILED_TO_FETCH_KEY", + 0x2c83: "ER_KEYRING_OKV_FAILED_TO_STORE_OR_GENERATE_KEY", + 0x2c84: "ER_KEYRING_OKV_FAILED_TO_RETRIEVE_KEY_SIGNATURE", + 0x2c85: "ER_KEYRING_OKV_FAILED_TO_RETRIEVE_KEY", + 0x2c86: "ER_KEYRING_OKV_FAILED_TO_LOAD_SSL_TRUST_STORE", + 0x2c87: "ER_KEYRING_OKV_FAILED_TO_SET_CERTIFICATE_FILE", + 0x2c88: "ER_KEYRING_OKV_FAILED_TO_SET_KEY_FILE", + 0x2c89: "ER_KEYRING_OKV_KEY_MISMATCH", + 0x2c8a: "ER_KEYRING_ENCRYPTED_FILE_INCORRECT_KEYRING_FILE", + 0x2c8b: "ER_KEYRING_ENCRYPTED_FILE_DECRYPTION_FAILED", + 0x2c8c: "ER_KEYRING_ENCRYPTED_FILE_FOUND_MALFORMED_BACKUP_FILE", + 0x2c8d: "ER_KEYRING_ENCRYPTED_FILE_FAILED_TO_RESTORE_KEYRING", + 0x2c8e: "ER_KEYRING_ENCRYPTED_FILE_FAILED_TO_FLUSH_KEYRING", + 0x2c8f: "ER_KEYRING_ENCRYPTED_FILE_ENCRYPTION_FAILED", + 0x2c90: "ER_KEYRING_ENCRYPTED_FILE_INVALID_KEYRING_DIR", + 0x2c91: "ER_KEYRING_ENCRYPTED_FILE_FAILED_TO_CREATE_KEYRING_DIR", + 0x2c92: "ER_KEYRING_ENCRYPTED_FILE_PASSWORD_IS_INVALID", + 0x2c93: "ER_KEYRING_ENCRYPTED_FILE_PASSWORD_IS_TOO_LONG", + 0x2c94: "ER_KEYRING_ENCRYPTED_FILE_INIT_FAILURE", + 0x2c95: "ER_KEYRING_ENCRYPTED_FILE_INIT_FAILED_DUE_TO_INTERNAL_ERROR", + 0x2c96: "ER_KEYRING_ENCRYPTED_FILE_GEN_KEY_FAILED_DUE_TO_INTERNAL_ERROR", + 0x2c97: "ER_KEYRING_AWS_FAILED_TO_SET_CMK_ID", + 0x2c98: "ER_KEYRING_AWS_FAILED_TO_SET_REGION", + 0x2c99: "ER_KEYRING_AWS_FAILED_TO_OPEN_CONF_FILE", + 0x2c9a: "ER_KEYRING_AWS_FAILED_TO_ACCESS_KEY_ID_FROM_CONF_FILE", + 0x2c9b: "ER_KEYRING_AWS_FAILED_TO_ACCESS_KEY_FROM_CONF_FILE", + 0x2c9c: "ER_KEYRING_AWS_INVALID_CONF_FILE_PATH", + 0x2c9d: "ER_KEYRING_AWS_INVALID_DATA_FILE_PATH", + 0x2c9e: "ER_KEYRING_AWS_FAILED_TO_ACCESS_OR_CREATE_KEYRING_DIR", + 0x2c9f: "ER_KEYRING_AWS_FAILED_TO_ACCESS_OR_CREATE_KEYRING_DATA_FILE", + 0x2ca0: "ER_KEYRING_AWS_FAILED_TO_INIT_DUE_TO_INTERNAL_ERROR", + 0x2ca1: "ER_KEYRING_AWS_FAILED_TO_ACCESS_DATA_FILE", + 0x2ca2: "ER_KEYRING_AWS_CMK_ID_NOT_SET", + 0x2ca3: "ER_KEYRING_AWS_FAILED_TO_GET_KMS_CREDENTIAL_FROM_CONF_FILE", + 0x2ca4: "ER_KEYRING_AWS_INIT_FAILURE", + 0x2ca5: "ER_KEYRING_AWS_FAILED_TO_INIT_DUE_TO_PLUGIN_INTERNAL_ERROR", + 0x2ca6: "ER_KEYRING_AWS_INVALID_KEY_LENGTH_FOR_CIPHER", + 0x2ca7: "ER_KEYRING_AWS_FAILED_TO_GENERATE_KEY_DUE_TO_INTERNAL_ERROR", + 0x2ca8: "ER_KEYRING_AWS_INCORRECT_FILE", + 0x2ca9: "ER_KEYRING_AWS_FOUND_MALFORMED_BACKUP_FILE", + 0x2caa: "ER_KEYRING_AWS_FAILED_TO_RESTORE_FROM_BACKUP_FILE", + 0x2cab: "ER_KEYRING_AWS_FAILED_TO_FLUSH_KEYRING_TO_FILE", + 0x2cac: "ER_KEYRING_AWS_INCORRECT_REGION", + 0x2cad: "ER_KEYRING_AWS_FAILED_TO_CONNECT_KMS", + 0x2cae: "ER_KEYRING_AWS_FAILED_TO_GENERATE_NEW_KEY", + 0x2caf: "ER_KEYRING_AWS_FAILED_TO_ENCRYPT_KEY", + 0x2cb0: "ER_KEYRING_AWS_FAILED_TO_RE_ENCRYPT_KEY", + 0x2cb1: "ER_KEYRING_AWS_FAILED_TO_DECRYPT_KEY", + 0x2cb2: "ER_KEYRING_AWS_FAILED_TO_ROTATE_CMK", + 0x2cb3: "ER_GRP_RPL_GTID_ALREADY_USED", + 0x2cb4: "ER_GRP_RPL_APPLIER_THD_KILLED", + 0x2cb5: "ER_GRP_RPL_EVENT_HANDLING_ERROR", + 0x2cb6: "ER_GRP_RPL_ERROR_GTID_EXECUTION_INFO", + 0x2cb7: "ER_GRP_RPL_CERTIFICATE_SIZE_ERROR", + 0x2cb8: "ER_GRP_RPL_CREATE_APPLIER_CACHE_ERROR", + 0x2cb9: "ER_GRP_RPL_UNBLOCK_WAITING_THD", + 0x2cba: "ER_GRP_RPL_APPLIER_PIPELINE_NOT_DISPOSED", + 0x2cbb: "ER_GRP_RPL_APPLIER_THD_EXECUTION_ABORTED", + 0x2cbc: "ER_GRP_RPL_APPLIER_EXECUTION_FATAL_ERROR", + 0x2cbd: "ER_GRP_RPL_ERROR_STOPPING_CHANNELS", + 0x2cbe: "ER_GRP_RPL_ERROR_SENDING_SINGLE_PRIMARY_MSSG", + 0x2cbf: "ER_GRP_RPL_UPDATE_TRANS_SNAPSHOT_VER_ERROR", + 0x2cc0: "ER_GRP_RPL_SIDNO_FETCH_ERROR", + 0x2cc1: "ER_GRP_RPL_BROADCAST_COMMIT_TRANS_MSSG_FAILED", + 0x2cc2: "ER_GRP_RPL_GROUP_NAME_PARSE_ERROR", + 0x2cc3: "ER_GRP_RPL_ADD_GRPSID_TO_GRPGTIDSID_MAP_ERROR", + 0x2cc4: "ER_GRP_RPL_UPDATE_GRPGTID_EXECUTED_ERROR", + 0x2cc5: "ER_GRP_RPL_DONOR_TRANS_INFO_ERROR", + 0x2cc6: "ER_GRP_RPL_SERVER_CONN_ERROR", + 0x2cc7: "ER_GRP_RPL_ERROR_FETCHING_GTID_EXECUTED_SET", + 0x2cc8: "ER_GRP_RPL_ADD_GTID_TO_GRPGTID_EXECUTED_ERROR", + 0x2cc9: "ER_GRP_RPL_ERROR_FETCHING_GTID_SET", + 0x2cca: "ER_GRP_RPL_ADD_RETRIEVED_SET_TO_GRP_GTID_EXECUTED_ERROR", + 0x2ccb: "ER_GRP_RPL_CERTIFICATION_INITIALIZATION_FAILURE", + 0x2ccc: "ER_GRP_RPL_UPDATE_LAST_CONFLICT_FREE_TRANS_ERROR", + 0x2ccd: "ER_GRP_RPL_UPDATE_TRANS_SNAPSHOT_REF_VER_ERROR", + 0x2cce: "ER_GRP_RPL_FETCH_TRANS_SIDNO_ERROR", + 0x2ccf: "ER_GRP_RPL_ERROR_VERIFYING_SIDNO", + 0x2cd0: "ER_GRP_RPL_CANT_GENERATE_GTID", + 0x2cd1: "ER_GRP_RPL_INVALID_GTID_SET", + 0x2cd2: "ER_GRP_RPL_UPDATE_GTID_SET_ERROR", + 0x2cd3: "ER_GRP_RPL_RECEIVED_SET_MISSING_GTIDS", + 0x2cd4: "ER_GRP_RPL_SKIP_COMPUTATION_TRANS_COMMITTED", + 0x2cd5: "ER_GRP_RPL_NULL_PACKET", + 0x2cd6: "ER_GRP_RPL_CANT_READ_GTID", + 0x2cd7: "ER_GRP_RPL_PROCESS_GTID_SET_ERROR", + 0x2cd8: "ER_GRP_RPL_PROCESS_INTERSECTION_GTID_SET_ERROR", + 0x2cd9: "ER_GRP_RPL_SET_STABLE_TRANS_ERROR", + 0x2cda: "ER_GRP_RPL_CANT_READ_GRP_GTID_EXTRACTED", + 0x2cdb: "ER_GRP_RPL_CANT_READ_WRITE_SET_ITEM", + 0x2cdc: "ER_GRP_RPL_INIT_CERTIFICATION_INFO_FAILURE", + 0x2cdd: "ER_GRP_RPL_CONFLICT_DETECTION_DISABLED", + 0x2cde: "ER_GRP_RPL_MSG_DISCARDED", + 0x2cdf: "ER_GRP_RPL_MISSING_GRP_RPL_APPLIER", + 0x2ce0: "ER_GRP_RPL_CERTIFIER_MSSG_PROCESS_ERROR", + 0x2ce1: "ER_GRP_RPL_SRV_NOT_ONLINE", + 0x2ce2: "ER_GRP_RPL_SRV_ONLINE", + 0x2ce3: "ER_GRP_RPL_DISABLE_SRV_READ_MODE_RESTRICTED", + 0x2ce4: "ER_GRP_RPL_MEM_ONLINE", + 0x2ce5: "ER_GRP_RPL_MEM_UNREACHABLE", + 0x2ce6: "ER_GRP_RPL_MEM_REACHABLE", + 0x2ce7: "ER_GRP_RPL_SRV_BLOCKED", + 0x2ce8: "ER_GRP_RPL_SRV_BLOCKED_FOR_SECS", + 0x2ce9: "ER_GRP_RPL_CHANGE_GRP_MEM_NOT_PROCESSED", + 0x2cea: "ER_GRP_RPL_MEMBER_CONTACT_RESTORED", + 0x2ceb: "ER_GRP_RPL_MEMBER_REMOVED", + 0x2cec: "ER_GRP_RPL_PRIMARY_MEMBER_LEFT_GRP", + 0x2ced: "ER_GRP_RPL_MEMBER_ADDED", + 0x2cee: "ER_GRP_RPL_MEMBER_EXIT_PLUGIN_ERROR", + 0x2cef: "ER_GRP_RPL_MEMBER_CHANGE", + 0x2cf0: "ER_GRP_RPL_MEMBER_LEFT_GRP", + 0x2cf1: "ER_GRP_RPL_MEMBER_EXPELLED", + 0x2cf2: "ER_GRP_RPL_SESSION_OPEN_FAILED", + 0x2cf3: "ER_GRP_RPL_NEW_PRIMARY_ELECTED", + 0x2cf4: "ER_GRP_RPL_DISABLE_READ_ONLY_FAILED", + 0x2cf5: "ER_GRP_RPL_ENABLE_READ_ONLY_FAILED", + 0x2cf6: "ER_GRP_RPL_SRV_PRIMARY_MEM", + 0x2cf7: "ER_GRP_RPL_SRV_SECONDARY_MEM", + 0x2cf8: "ER_GRP_RPL_NO_SUITABLE_PRIMARY_MEM", + 0x2cf9: "ER_GRP_RPL_SUPER_READ_ONLY_ACTIVATE_ERROR", + 0x2cfa: "ER_GRP_RPL_EXCEEDS_AUTO_INC_VALUE", + 0x2cfb: "ER_GRP_RPL_DATA_NOT_PROVIDED_BY_MEM", + 0x2cfc: "ER_GRP_RPL_MEMBER_ALREADY_EXISTS", + 0x2cfd: "ER_GRP_RPL_GRP_CHANGE_INFO_EXTRACT_ERROR", + 0x2cfe: "ER_GRP_RPL_GTID_EXECUTED_EXTRACT_ERROR", + 0x2cff: "ER_GRP_RPL_GTID_SET_EXTRACT_ERROR", + 0x2d00: "ER_GRP_RPL_START_FAILED", + 0x2d01: "ER_GRP_RPL_MEMBER_VER_INCOMPATIBLE", + 0x2d02: "ER_GRP_RPL_TRANS_NOT_PRESENT_IN_GRP", + 0x2d03: "ER_GRP_RPL_TRANS_GREATER_THAN_GRP", + 0x2d04: "ER_GRP_RPL_MEMBER_VERSION_LOWER_THAN_GRP", + 0x2d05: "ER_GRP_RPL_LOCAL_GTID_SETS_PROCESS_ERROR", + 0x2d06: "ER_GRP_RPL_MEMBER_TRANS_GREATER_THAN_GRP", + 0x2d07: "ER_GRP_RPL_BLOCK_SIZE_DIFF_FROM_GRP", + 0x2d08: "ER_GRP_RPL_TRANS_WRITE_SET_EXTRACT_DIFF_FROM_GRP", + 0x2d09: "ER_GRP_RPL_MEMBER_CFG_INCOMPATIBLE_WITH_GRP_CFG", + 0x2d0a: "ER_GRP_RPL_MEMBER_STOP_RPL_CHANNELS_ERROR", + 0x2d0b: "ER_GRP_RPL_PURGE_APPLIER_LOGS", + 0x2d0c: "ER_GRP_RPL_RESET_APPLIER_MODULE_LOGS_ERROR", + 0x2d0d: "ER_GRP_RPL_APPLIER_THD_SETUP_ERROR", + 0x2d0e: "ER_GRP_RPL_APPLIER_THD_START_ERROR", + 0x2d0f: "ER_GRP_RPL_APPLIER_THD_STOP_ERROR", + 0x2d10: "ER_GRP_RPL_FETCH_TRANS_DATA_FAILED", + 0x2d11: "ER_GRP_RPL_SLAVE_IO_THD_PRIMARY_UNKNOWN", + 0x2d12: "ER_GRP_RPL_SALVE_IO_THD_ON_SECONDARY_MEMBER", + 0x2d13: "ER_GRP_RPL_SLAVE_SQL_THD_PRIMARY_UNKNOWN", + 0x2d14: "ER_GRP_RPL_SLAVE_SQL_THD_ON_SECONDARY_MEMBER", + 0x2d15: "ER_GRP_RPL_NEEDS_INNODB_TABLE", + 0x2d16: "ER_GRP_RPL_PRIMARY_KEY_NOT_DEFINED", + 0x2d17: "ER_GRP_RPL_FK_WITH_CASCADE_UNSUPPORTED", + 0x2d18: "ER_GRP_RPL_AUTO_INC_RESET", + 0x2d19: "ER_GRP_RPL_AUTO_INC_OFFSET_RESET", + 0x2d1a: "ER_GRP_RPL_AUTO_INC_SET", + 0x2d1b: "ER_GRP_RPL_AUTO_INC_OFFSET_SET", + 0x2d1c: "ER_GRP_RPL_FETCH_TRANS_CONTEXT_FAILED", + 0x2d1d: "ER_GRP_RPL_FETCH_FORMAT_DESC_LOG_EVENT_FAILED", + 0x2d1e: "ER_GRP_RPL_FETCH_TRANS_CONTEXT_LOG_EVENT_FAILED", + 0x2d1f: "ER_GRP_RPL_FETCH_SNAPSHOT_VERSION_FAILED", + 0x2d20: "ER_GRP_RPL_FETCH_GTID_LOG_EVENT_FAILED", + 0x2d21: "ER_GRP_RPL_UPDATE_SERV_CERTIFICATE_FAILED", + 0x2d22: "ER_GRP_RPL_ADD_GTID_INFO_WITH_LOCAL_GTID_FAILED", + 0x2d23: "ER_GRP_RPL_ADD_GTID_INFO_WITHOUT_LOCAL_GTID_FAILED", + 0x2d24: "ER_GRP_RPL_NOTIFY_CERTIFICATION_OUTCOME_FAILED", + 0x2d25: "ER_GRP_RPL_ADD_GTID_INFO_WITH_REMOTE_GTID_FAILED", + 0x2d26: "ER_GRP_RPL_ADD_GTID_INFO_WITHOUT_REMOTE_GTID_FAILED", + 0x2d27: "ER_GRP_RPL_FETCH_VIEW_CHANGE_LOG_EVENT_FAILED", + 0x2d28: "ER_GRP_RPL_CONTACT_WITH_SRV_FAILED", + 0x2d29: "ER_GRP_RPL_SRV_WAIT_TIME_OUT", + 0x2d2a: "ER_GRP_RPL_FETCH_LOG_EVENT_FAILED", + 0x2d2b: "ER_GRP_RPL_START_GRP_RPL_FAILED", + 0x2d2c: "ER_GRP_RPL_CONN_INTERNAL_PLUGIN_FAIL", + 0x2d2d: "ER_GRP_RPL_SUPER_READ_ON", + 0x2d2e: "ER_GRP_RPL_SUPER_READ_OFF", + 0x2d2f: "ER_GRP_RPL_KILLED_SESSION_ID", + 0x2d30: "ER_GRP_RPL_KILLED_FAILED_ID", + 0x2d31: "ER_GRP_RPL_INTERNAL_QUERY", + 0x2d32: "ER_GRP_RPL_COPY_FROM_EMPTY_STRING", + 0x2d33: "ER_GRP_RPL_QUERY_FAIL", + 0x2d34: "ER_GRP_RPL_CREATE_SESSION_UNABLE", + 0x2d35: "ER_GRP_RPL_MEMBER_NOT_FOUND", + 0x2d36: "ER_GRP_RPL_MAXIMUM_CONNECTION_RETRIES_REACHED", + 0x2d37: "ER_GRP_RPL_ALL_DONORS_LEFT_ABORT_RECOVERY", + 0x2d38: "ER_GRP_RPL_ESTABLISH_RECOVERY_WITH_DONOR", + 0x2d39: "ER_GRP_RPL_ESTABLISH_RECOVERY_WITH_ANOTHER_DONOR", + 0x2d3a: "ER_GRP_RPL_NO_VALID_DONOR", + 0x2d3b: "ER_GRP_RPL_CONFIG_RECOVERY", + 0x2d3c: "ER_GRP_RPL_ESTABLISHING_CONN_GRP_REC_DONOR", + 0x2d3d: "ER_GRP_RPL_CREATE_GRP_RPL_REC_CHANNEL", + 0x2d3e: "ER_GRP_RPL_DONOR_SERVER_CONN", + 0x2d3f: "ER_GRP_RPL_CHECK_STATUS_TABLE", + 0x2d40: "ER_GRP_RPL_STARTING_GRP_REC", + 0x2d41: "ER_GRP_RPL_DONOR_CONN_TERMINATION", + 0x2d42: "ER_GRP_RPL_STOPPING_GRP_REC", + 0x2d43: "ER_GRP_RPL_PURGE_REC", + 0x2d44: "ER_GRP_RPL_UNABLE_TO_KILL_CONN_REC_DONOR_APPLIER", + 0x2d45: "ER_GRP_RPL_UNABLE_TO_KILL_CONN_REC_DONOR_FAILOVER", + 0x2d46: "ER_GRP_RPL_FAILED_TO_NOTIFY_GRP_MEMBERSHIP_EVENT", + 0x2d47: "ER_GRP_RPL_FAILED_TO_BROADCAST_GRP_MEMBERSHIP_NOTIFICATION", + 0x2d48: "ER_GRP_RPL_FAILED_TO_BROADCAST_MEMBER_STATUS_NOTIFICATION", + 0x2d49: "ER_GRP_RPL_OOM_FAILED_TO_GENERATE_IDENTIFICATION_HASH", + 0x2d4a: "ER_GRP_RPL_WRITE_IDENT_HASH_BASE64_ENCODING_FAILED", + 0x2d4b: "ER_GRP_RPL_INVALID_BINLOG_FORMAT", + 0x2d4c: "ER_GRP_RPL_BINLOG_CHECKSUM_SET", + 0x2d4d: "ER_GRP_RPL_TRANS_WRITE_SET_EXTRACTION_NOT_SET", + 0x2d4e: "ER_GRP_RPL_UNSUPPORTED_TRANS_ISOLATION", + 0x2d4f: "ER_GRP_RPL_CANNOT_EXECUTE_TRANS_WHILE_STOPPING", + 0x2d50: "ER_GRP_RPL_CANNOT_EXECUTE_TRANS_WHILE_RECOVERING", + 0x2d51: "ER_GRP_RPL_CANNOT_EXECUTE_TRANS_IN_ERROR_STATE", + 0x2d52: "ER_GRP_RPL_CANNOT_EXECUTE_TRANS_IN_OFFLINE_MODE", + 0x2d53: "ER_GRP_RPL_MULTIPLE_CACHE_TYPE_NOT_SUPPORTED_FOR_SESSION", + 0x2d54: "ER_GRP_RPL_FAILED_TO_REINIT_BINLOG_CACHE_FOR_READ", + 0x2d55: "ER_GRP_RPL_FAILED_TO_CREATE_TRANS_CONTEXT", + 0x2d56: "ER_GRP_RPL_FAILED_TO_EXTRACT_TRANS_WRITE_SET", + 0x2d57: "ER_GRP_RPL_FAILED_TO_GATHER_TRANS_WRITE_SET", + 0x2d58: "ER_GRP_RPL_TRANS_SIZE_EXCEEDS_LIMIT", + 0x2d59: "ER_GRP_RPL_REINIT_OF_INTERNAL_CACHE_FOR_READ_FAILED", + 0x2d5a: "ER_GRP_RPL_APPENDING_DATA_TO_INTERNAL_CACHE_FAILED", + 0x2d5b: "ER_GRP_RPL_WRITE_TO_BINLOG_CACHE_FAILED", + 0x2d5c: "ER_GRP_RPL_FAILED_TO_REGISTER_TRANS_OUTCOME_NOTIFICTION", + 0x2d5d: "ER_GRP_RPL_MSG_TOO_LONG_BROADCASTING_TRANS_FAILED", + 0x2d5e: "ER_GRP_RPL_BROADCASTING_TRANS_TO_GRP_FAILED", + 0x2d5f: "ER_GRP_RPL_ERROR_WHILE_WAITING_FOR_CONFLICT_DETECTION", + 0x2d60: "ER_GRP_RPL_REINIT_OF_INTERNAL_CACHE_FOR_WRITE_FAILED", + 0x2d61: "ER_GRP_RPL_FAILED_TO_CREATE_COMMIT_CACHE", + 0x2d62: "ER_GRP_RPL_REINIT_OF_COMMIT_CACHE_FOR_WRITE_FAILED", + 0x2d63: "ER_GRP_RPL_PREV_REC_SESSION_RUNNING", + 0x2d64: "ER_GRP_RPL_FATAL_REC_PROCESS", + 0x2d65: "ER_GRP_RPL_WHILE_STOPPING_REP_CHANNEL", + 0x2d66: "ER_GRP_RPL_UNABLE_TO_EVALUATE_APPLIER_STATUS", + 0x2d67: "ER_GRP_RPL_ONLY_ONE_SERVER_ALIVE", + 0x2d68: "ER_GRP_RPL_CERTIFICATION_REC_PROCESS", + 0x2d69: "ER_GRP_RPL_UNABLE_TO_ENSURE_EXECUTION_REC", + 0x2d6a: "ER_GRP_RPL_WHILE_SENDING_MSG_REC", + 0x2d6b: "ER_GRP_RPL_READ_UNABLE_FOR_SUPER_READ_ONLY", + 0x2d6c: "ER_GRP_RPL_READ_UNABLE_FOR_READ_ONLY_SUPER_READ_ONLY", + 0x2d6d: "ER_GRP_RPL_UNABLE_TO_RESET_SERVER_READ_MODE", + 0x2d6e: "ER_GRP_RPL_UNABLE_TO_CERTIFY_PLUGIN_TRANS", + 0x2d6f: "ER_GRP_RPL_UNBLOCK_CERTIFIED_TRANS", + 0x2d70: "ER_GRP_RPL_SERVER_WORKING_AS_SECONDARY", + 0x2d71: "ER_GRP_RPL_FAILED_TO_START_WITH_INVALID_SERVER_ID", + 0x2d72: "ER_GRP_RPL_FORCE_MEMBERS_MUST_BE_EMPTY", + 0x2d73: "ER_GRP_RPL_PLUGIN_STRUCT_INIT_NOT_POSSIBLE_ON_SERVER_START", + 0x2d74: "ER_GRP_RPL_FAILED_TO_ENABLE_SUPER_READ_ONLY_MODE", + 0x2d75: "ER_GRP_RPL_FAILED_TO_INIT_COMMUNICATION_ENGINE", + 0x2d76: "ER_GRP_RPL_FAILED_TO_START_ON_SECONDARY_WITH_ASYNC_CHANNELS", + 0x2d77: "ER_GRP_RPL_FAILED_TO_START_COMMUNICATION_ENGINE", + 0x2d78: "ER_GRP_RPL_TIMEOUT_ON_VIEW_AFTER_JOINING_GRP", + 0x2d79: "ER_GRP_RPL_FAILED_TO_CALL_GRP_COMMUNICATION_INTERFACE", + 0x2d7a: "ER_GRP_RPL_MEMBER_SERVER_UUID_IS_INCOMPATIBLE_WITH_GRP", + 0x2d7b: "ER_GRP_RPL_MEMBER_CONF_INFO", + 0x2d7c: "ER_GRP_RPL_FAILED_TO_CONFIRM_IF_SERVER_LEFT_GRP", + 0x2d7d: "ER_GRP_RPL_SERVER_IS_ALREADY_LEAVING", + 0x2d7e: "ER_GRP_RPL_SERVER_ALREADY_LEFT", + 0x2d7f: "ER_GRP_RPL_WAITING_FOR_VIEW_UPDATE", + 0x2d80: "ER_GRP_RPL_TIMEOUT_RECEIVING_VIEW_CHANGE_ON_SHUTDOWN", + 0x2d81: "ER_GRP_RPL_REQUESTING_NON_MEMBER_SERVER_TO_LEAVE", + 0x2d82: "ER_GRP_RPL_IS_STOPPING", + 0x2d83: "ER_GRP_RPL_IS_STOPPED", + 0x2d84: "ER_GRP_RPL_FAILED_TO_ENABLE_READ_ONLY_MODE_ON_SHUTDOWN", + 0x2d85: "ER_GRP_RPL_RECOVERY_MODULE_TERMINATION_TIMED_OUT_ON_SHUTDOWN", + 0x2d86: "ER_GRP_RPL_APPLIER_TERMINATION_TIMED_OUT_ON_SHUTDOWN", + 0x2d87: "ER_GRP_RPL_FAILED_TO_SHUTDOWN_REGISTRY_MODULE", + 0x2d88: "ER_GRP_RPL_FAILED_TO_INIT_HANDLER", + 0x2d89: "ER_GRP_RPL_FAILED_TO_REGISTER_SERVER_STATE_OBSERVER", + 0x2d8a: "ER_GRP_RPL_FAILED_TO_REGISTER_TRANS_STATE_OBSERVER", + 0x2d8b: "ER_GRP_RPL_FAILED_TO_REGISTER_BINLOG_STATE_OBSERVER", + 0x2d8c: "ER_GRP_RPL_FAILED_TO_START_ON_BOOT", + 0x2d8d: "ER_GRP_RPL_FAILED_TO_STOP_ON_PLUGIN_UNINSTALL", + 0x2d8e: "ER_GRP_RPL_FAILED_TO_UNREGISTER_SERVER_STATE_OBSERVER", + 0x2d8f: "ER_GRP_RPL_FAILED_TO_UNREGISTER_TRANS_STATE_OBSERVER", + 0x2d90: "ER_GRP_RPL_FAILED_TO_UNREGISTER_BINLOG_STATE_OBSERVER", + 0x2d91: "ER_GRP_RPL_ALL_OBSERVERS_UNREGISTERED", + 0x2d92: "ER_GRP_RPL_FAILED_TO_PARSE_THE_GRP_NAME", + 0x2d93: "ER_GRP_RPL_FAILED_TO_GENERATE_SIDNO_FOR_GRP", + 0x2d94: "ER_GRP_RPL_APPLIER_NOT_STARTED_DUE_TO_RUNNING_PREV_SHUTDOWN", + 0x2d95: "ER_GRP_RPL_FAILED_TO_INIT_APPLIER_MODULE", + 0x2d96: "ER_GRP_RPL_APPLIER_INITIALIZED", + 0x2d97: "ER_GRP_RPL_COMMUNICATION_SSL_CONF_INFO", + 0x2d98: "ER_GRP_RPL_ABORTS_AS_SSL_NOT_SUPPORTED_BY_MYSQLD", + 0x2d99: "ER_GRP_RPL_SSL_DISABLED", + 0x2d9a: "ER_GRP_RPL_UNABLE_TO_INIT_COMMUNICATION_ENGINE", + 0x2d9b: "ER_GRP_RPL_BINLOG_DISABLED", + 0x2d9c: "ER_GRP_RPL_GTID_MODE_OFF", + 0x2d9d: "ER_GRP_RPL_LOG_SLAVE_UPDATES_NOT_SET", + 0x2d9e: "ER_GRP_RPL_INVALID_TRANS_WRITE_SET_EXTRACTION_VALUE", + 0x2d9f: "ER_GRP_RPL_RELAY_LOG_INFO_REPO_MUST_BE_TABLE", + 0x2da0: "ER_GRP_RPL_MASTER_INFO_REPO_MUST_BE_TABLE", + 0x2da1: "ER_GRP_RPL_INCORRECT_TYPE_SET_FOR_PARALLEL_APPLIER", + 0x2da2: "ER_GRP_RPL_SLAVE_PRESERVE_COMMIT_ORDER_NOT_SET", + 0x2da3: "ER_GRP_RPL_SINGLE_PRIM_MODE_NOT_ALLOWED_WITH_UPDATE_EVERYWHERE", + 0x2da4: "ER_GRP_RPL_MODULE_TERMINATE_ERROR", + 0x2da5: "ER_GRP_RPL_GRP_NAME_OPTION_MANDATORY", + 0x2da6: "ER_GRP_RPL_GRP_NAME_IS_TOO_LONG", + 0x2da7: "ER_GRP_RPL_GRP_NAME_IS_NOT_VALID_UUID", + 0x2da8: "ER_GRP_RPL_FLOW_CTRL_MIN_QUOTA_GREATER_THAN_MAX_QUOTA", + 0x2da9: "ER_GRP_RPL_FLOW_CTRL_MIN_RECOVERY_QUOTA_GREATER_THAN_MAX_QUOTA", + 0x2daa: "ER_GRP_RPL_FLOW_CTRL_MAX_QUOTA_SMALLER_THAN_MIN_QUOTAS", + 0x2dab: "ER_GRP_RPL_INVALID_SSL_RECOVERY_STRING", + 0x2dac: "ER_GRP_RPL_SUPPORTS_ONLY_ONE_FORCE_MEMBERS_SET", + 0x2dad: "ER_GRP_RPL_FORCE_MEMBERS_SET_UPDATE_NOT_ALLOWED", + 0x2dae: "ER_GRP_RPL_GRP_COMMUNICATION_INIT_WITH_CONF", + 0x2daf: "ER_GRP_RPL_UNKNOWN_GRP_RPL_APPLIER_PIPELINE_REQUESTED", + 0x2db0: "ER_GRP_RPL_FAILED_TO_BOOTSTRAP_EVENT_HANDLING_INFRASTRUCTURE", + 0x2db1: "ER_GRP_RPL_APPLIER_HANDLER_NOT_INITIALIZED", + 0x2db2: "ER_GRP_RPL_APPLIER_HANDLER_IS_IN_USE", + 0x2db3: "ER_GRP_RPL_APPLIER_HANDLER_ROLE_IS_IN_USE", + 0x2db4: "ER_GRP_RPL_FAILED_TO_INIT_APPLIER_HANDLER", + 0x2db5: "ER_GRP_RPL_SQL_SERVICE_FAILED_TO_INIT_SESSION_THREAD", + 0x2db6: "ER_GRP_RPL_SQL_SERVICE_COMM_SESSION_NOT_INITIALIZED", + 0x2db7: "ER_GRP_RPL_SQL_SERVICE_SERVER_SESSION_KILLED", + 0x2db8: "ER_GRP_RPL_SQL_SERVICE_FAILED_TO_RUN_SQL_QUERY", + 0x2db9: "ER_GRP_RPL_SQL_SERVICE_SERVER_INTERNAL_FAILURE", + 0x2dba: "ER_GRP_RPL_SQL_SERVICE_RETRIES_EXCEEDED_ON_SESSION_STATE", + 0x2dbb: "ER_GRP_RPL_SQL_SERVICE_FAILED_TO_FETCH_SECURITY_CTX", + 0x2dbc: "ER_GRP_RPL_SQL_SERVICE_SERVER_ACCESS_DENIED_FOR_USER", + 0x2dbd: "ER_GRP_RPL_SQL_SERVICE_MAX_CONN_ERROR_FROM_SERVER", + 0x2dbe: "ER_GRP_RPL_SQL_SERVICE_SERVER_ERROR_ON_CONN", + 0x2dbf: "ER_GRP_RPL_UNREACHABLE_MAJORITY_TIMEOUT_FOR_MEMBER", + 0x2dc0: "ER_GRP_RPL_SERVER_SET_TO_READ_ONLY_DUE_TO_ERRORS", + 0x2dc1: "ER_GRP_RPL_GMS_LISTENER_FAILED_TO_LOG_NOTIFICATION", + 0x2dc2: "ER_GRP_RPL_GRP_COMMUNICATION_ENG_INIT_FAILED", + 0x2dc3: "ER_GRP_RPL_SET_GRP_COMMUNICATION_ENG_LOGGER_FAILED", + 0x2dc4: "ER_GRP_RPL_DEBUG_OPTIONS", + 0x2dc5: "ER_GRP_RPL_INVALID_DEBUG_OPTIONS", + 0x2dc6: "ER_GRP_RPL_EXIT_GRP_GCS_ERROR", + 0x2dc7: "ER_GRP_RPL_GRP_MEMBER_OFFLINE", + 0x2dc8: "ER_GRP_RPL_GCS_INTERFACE_ERROR", + 0x2dc9: "ER_GRP_RPL_FORCE_MEMBER_VALUE_SET_ERROR", + 0x2dca: "ER_GRP_RPL_FORCE_MEMBER_VALUE_SET", + 0x2dcb: "ER_GRP_RPL_FORCE_MEMBER_VALUE_TIME_OUT", + 0x2dcc: "ER_GRP_RPL_BROADCAST_COMMIT_MSSG_TOO_BIG", + 0x2dcd: "ER_GRP_RPL_SEND_STATS_ERROR", + 0x2dce: "ER_GRP_RPL_MEMBER_STATS_INFO", + 0x2dcf: "ER_GRP_RPL_FLOW_CONTROL_STATS", + 0x2dd0: "ER_GRP_RPL_UNABLE_TO_CONVERT_PACKET_TO_EVENT", + 0x2dd1: "ER_GRP_RPL_PIPELINE_CREATE_FAILED", + 0x2dd2: "ER_GRP_RPL_PIPELINE_REINIT_FAILED_WRITE", + 0x2dd3: "ER_GRP_RPL_UNABLE_TO_CONVERT_EVENT_TO_PACKET", + 0x2dd4: "ER_GRP_RPL_PIPELINE_FLUSH_FAIL", + 0x2dd5: "ER_GRP_RPL_PIPELINE_REINIT_FAILED_READ", + 0x2dd6: "ER_GRP_RPL_STOP_REP_CHANNEL", + 0x2dd7: "ER_GRP_RPL_GCS_GR_ERROR_MSG", + 0x2dd8: "ER_GRP_RPL_SLAVE_IO_THREAD_UNBLOCKED", + 0x2dd9: "ER_GRP_RPL_SLAVE_IO_THREAD_ERROR_OUT", + 0x2dda: "ER_GRP_RPL_SLAVE_APPLIER_THREAD_UNBLOCKED", + 0x2ddb: "ER_GRP_RPL_SLAVE_APPLIER_THREAD_ERROR_OUT", + 0x2ddc: "ER_LDAP_AUTH_FAILED_TO_CREATE_OR_GET_CONNECTION", + 0x2ddd: "ER_LDAP_AUTH_DEINIT_FAILED", + 0x2dde: "ER_LDAP_AUTH_SKIPPING_USER_GROUP_SEARCH", + 0x2ddf: "ER_LDAP_AUTH_POOL_DISABLE_MAX_SIZE_ZERO", + 0x2de0: "ER_LDAP_AUTH_FAILED_TO_CREATE_LDAP_OBJECT_CREATOR", + 0x2de1: "ER_LDAP_AUTH_FAILED_TO_CREATE_LDAP_OBJECT", + 0x2de2: "ER_LDAP_AUTH_TLS_CONF", + 0x2de3: "ER_LDAP_AUTH_TLS_CONNECTION", + 0x2de4: "ER_LDAP_AUTH_CONN_POOL_NOT_CREATED", + 0x2de5: "ER_LDAP_AUTH_CONN_POOL_INITIALIZING", + 0x2de6: "ER_LDAP_AUTH_CONN_POOL_DEINITIALIZING", + 0x2de7: "ER_LDAP_AUTH_ZERO_MAX_POOL_SIZE_UNCHANGED", + 0x2de8: "ER_LDAP_AUTH_POOL_REINITIALIZING", + 0x2de9: "ER_LDAP_AUTH_FAILED_TO_WRITE_PACKET", + 0x2dea: "ER_LDAP_AUTH_SETTING_USERNAME", + 0x2deb: "ER_LDAP_AUTH_USER_AUTH_DATA", + 0x2dec: "ER_LDAP_AUTH_INFO_FOR_USER", + 0x2ded: "ER_LDAP_AUTH_USER_GROUP_SEARCH_INFO", + 0x2dee: "ER_LDAP_AUTH_GRP_SEARCH_SPECIAL_HDL", + 0x2def: "ER_LDAP_AUTH_GRP_IS_FULL_DN", + 0x2df0: "ER_LDAP_AUTH_USER_NOT_FOUND_IN_ANY_GRP", + 0x2df1: "ER_LDAP_AUTH_USER_FOUND_IN_MANY_GRPS", + 0x2df2: "ER_LDAP_AUTH_USER_HAS_MULTIPLE_GRP_NAMES", + 0x2df3: "ER_LDAP_AUTH_SEARCHED_USER_GRP_NAME", + 0x2df4: "ER_LDAP_AUTH_OBJECT_CREATE_TIMESTAMP", + 0x2df5: "ER_LDAP_AUTH_CERTIFICATE_NAME", + 0x2df6: "ER_LDAP_AUTH_FAILED_TO_POOL_DEINIT", + 0x2df7: "ER_LDAP_AUTH_FAILED_TO_INITIALIZE_POOL_IN_RECONSTRUCTING", + 0x2df8: "ER_LDAP_AUTH_FAILED_TO_INITIALIZE_POOL_IN_INIT_STATE", + 0x2df9: "ER_LDAP_AUTH_FAILED_TO_INITIALIZE_POOL_IN_DEINIT_STATE", + 0x2dfa: "ER_LDAP_AUTH_FAILED_TO_DEINITIALIZE_POOL_IN_RECONSTRUCT_STATE", + 0x2dfb: "ER_LDAP_AUTH_FAILED_TO_DEINITIALIZE_NOT_READY_POOL", + 0x2dfc: "ER_LDAP_AUTH_FAILED_TO_GET_CONNECTION_AS_PLUGIN_NOT_READY", + 0x2dfd: "ER_LDAP_AUTH_CONNECTION_POOL_INIT_FAILED", + 0x2dfe: "ER_LDAP_AUTH_MAX_ALLOWED_CONNECTION_LIMIT_HIT", + 0x2dff: "ER_LDAP_AUTH_MAX_POOL_SIZE_SET_FAILED", + 0x2e00: "ER_LDAP_AUTH_PLUGIN_FAILED_TO_READ_PACKET", + 0x2e01: "ER_LDAP_AUTH_CREATING_LDAP_CONNECTION", + 0x2e02: "ER_LDAP_AUTH_GETTING_CONNECTION_FROM_POOL", + 0x2e03: "ER_LDAP_AUTH_RETURNING_CONNECTION_TO_POOL", + 0x2e04: "ER_LDAP_AUTH_SEARCH_USER_GROUP_ATTR_NOT_FOUND", + 0x2e05: "ER_LDAP_AUTH_LDAP_INFO_NULL", + 0x2e06: "ER_LDAP_AUTH_FREEING_CONNECTION", + 0x2e07: "ER_LDAP_AUTH_CONNECTION_PUSHED_TO_POOL", + 0x2e08: "ER_LDAP_AUTH_CONNECTION_CREATOR_ENTER", + 0x2e09: "ER_LDAP_AUTH_STARTING_TLS", + 0x2e0a: "ER_LDAP_AUTH_CONNECTION_GET_LDAP_INFO_NULL", + 0x2e0b: "ER_LDAP_AUTH_DELETING_CONNECTION_KEY", + 0x2e0c: "ER_LDAP_AUTH_POOLED_CONNECTION_KEY", + 0x2e0d: "ER_LDAP_AUTH_CREATE_CONNECTION_KEY", + 0x2e0e: "ER_LDAP_AUTH_COMMUNICATION_HOST_INFO", + 0x2e0f: "ER_LDAP_AUTH_METHOD_TO_CLIENT", + 0x2e10: "ER_LDAP_AUTH_SASL_REQUEST_FROM_CLIENT", + 0x2e11: "ER_LDAP_AUTH_SASL_PROCESS_SASL", + 0x2e12: "ER_LDAP_AUTH_SASL_BIND_SUCCESS_INFO", + 0x2e13: "ER_LDAP_AUTH_STARTED_FOR_USER", + 0x2e14: "ER_LDAP_AUTH_DISTINGUISHED_NAME", + 0x2e15: "ER_LDAP_AUTH_INIT_FAILED", + 0x2e16: "ER_LDAP_AUTH_OR_GROUP_RETRIEVAL_FAILED", + 0x2e17: "ER_LDAP_AUTH_USER_GROUP_SEARCH_FAILED", + 0x2e18: "ER_LDAP_AUTH_USER_BIND_FAILED", + 0x2e19: "ER_LDAP_AUTH_POOL_GET_FAILED_TO_CREATE_CONNECTION", + 0x2e1a: "ER_LDAP_AUTH_FAILED_TO_CREATE_LDAP_CONNECTION", + 0x2e1b: "ER_LDAP_AUTH_FAILED_TO_ESTABLISH_TLS_CONNECTION", + 0x2e1c: "ER_LDAP_AUTH_FAILED_TO_SEARCH_DN", + 0x2e1d: "ER_LDAP_AUTH_CONNECTION_POOL_REINIT_ENTER", + 0x2e1e: "ER_SYSTEMD_NOTIFY_PATH_TOO_LONG", + 0x2e1f: "ER_SYSTEMD_NOTIFY_CONNECT_FAILED", + 0x2e20: "ER_SYSTEMD_NOTIFY_WRITE_FAILED", + 0x2e21: "ER_FOUND_MISSING_GTIDS", + 0x2e22: "ER_PID_FILE_PRIV_DIRECTORY_INSECURE", + 0x2e23: "ER_CANT_CHECK_PID_PATH", + 0x2e24: "ER_VALIDATE_PWD_STATUS_VAR_REGISTRATION_FAILED", + 0x2e25: "ER_VALIDATE_PWD_STATUS_VAR_UNREGISTRATION_FAILED", + 0x2e26: "ER_VALIDATE_PWD_DICT_FILE_OPEN_FAILED", + 0x2e27: "ER_VALIDATE_PWD_COULD_BE_NULL", + 0x2e28: "ER_VALIDATE_PWD_STRING_CONV_TO_LOWERCASE_FAILED", + 0x2e29: "ER_VALIDATE_PWD_STRING_CONV_TO_BUFFER_FAILED", + 0x2e2a: "ER_VALIDATE_PWD_STRING_HANDLER_MEM_ALLOCATION_FAILED", + 0x2e2b: "ER_VALIDATE_PWD_STRONG_POLICY_DICT_FILE_UNSPECIFIED", + 0x2e2c: "ER_VALIDATE_PWD_CONVERT_TO_BUFFER_FAILED", + 0x2e2d: "ER_VALIDATE_PWD_VARIABLE_REGISTRATION_FAILED", + 0x2e2e: "ER_VALIDATE_PWD_VARIABLE_UNREGISTRATION_FAILED", + 0x2e2f: "ER_KEYRING_MIGRATION_EXTRA_OPTIONS", + 0x2e31: "ER_IB_MSG_0", + 0x2e32: "ER_IB_MSG_1", + 0x2e33: "ER_IB_MSG_2", + 0x2e34: "ER_IB_MSG_3", + 0x2e35: "ER_IB_MSG_4", + 0x2e36: "ER_IB_MSG_5", + 0x2e37: "ER_IB_MSG_6", + 0x2e38: "ER_IB_MSG_7", + 0x2e39: "ER_IB_MSG_8", + 0x2e3a: "ER_IB_MSG_9", + 0x2e3b: "ER_IB_MSG_10", + 0x2e3c: "ER_IB_MSG_11", + 0x2e3d: "ER_IB_MSG_12", + 0x2e3e: "ER_IB_MSG_13", + 0x2e3f: "ER_IB_MSG_14", + 0x2e40: "ER_IB_MSG_15", + 0x2e41: "ER_IB_MSG_16", + 0x2e42: "ER_IB_MSG_17", + 0x2e43: "ER_IB_MSG_18", + 0x2e44: "ER_IB_MSG_19", + 0x2e45: "ER_IB_MSG_20", + 0x2e46: "ER_IB_MSG_21", + 0x2e47: "ER_IB_MSG_22", + 0x2e48: "ER_IB_MSG_23", + 0x2e49: "ER_IB_MSG_24", + 0x2e4a: "ER_IB_MSG_25", + 0x2e4b: "ER_IB_MSG_26", + 0x2e4c: "ER_IB_MSG_27", + 0x2e4d: "ER_IB_MSG_28", + 0x2e4e: "ER_IB_MSG_29", + 0x2e4f: "ER_IB_MSG_30", + 0x2e50: "ER_IB_MSG_31", + 0x2e51: "ER_IB_MSG_32", + 0x2e52: "ER_IB_MSG_33", + 0x2e53: "ER_IB_MSG_34", + 0x2e54: "ER_IB_MSG_35", + 0x2e55: "ER_IB_MSG_36", + 0x2e56: "ER_IB_MSG_37", + 0x2e57: "ER_IB_MSG_38", + 0x2e58: "ER_IB_MSG_39", + 0x2e59: "ER_IB_MSG_40", + 0x2e5a: "ER_IB_MSG_41", + 0x2e5b: "ER_IB_MSG_42", + 0x2e5c: "ER_IB_MSG_43", + 0x2e5d: "ER_IB_MSG_44", + 0x2e5e: "ER_IB_MSG_45", + 0x2e5f: "ER_IB_MSG_46", + 0x2e60: "ER_IB_MSG_47", + 0x2e61: "ER_IB_MSG_48", + 0x2e62: "ER_IB_MSG_49", + 0x2e63: "ER_IB_MSG_50", + 0x2e64: "ER_IB_MSG_51", + 0x2e65: "ER_IB_MSG_52", + 0x2e66: "ER_IB_MSG_53", + 0x2e67: "ER_IB_MSG_54", + 0x2e68: "ER_IB_MSG_55", + 0x2e69: "ER_IB_MSG_56", + 0x2e6a: "ER_IB_MSG_57", + 0x2e6b: "ER_IB_MSG_58", + 0x2e6c: "ER_IB_MSG_59", + 0x2e6d: "ER_IB_MSG_60", + 0x2e6e: "ER_IB_MSG_61", + 0x2e6f: "ER_IB_MSG_62", + 0x2e70: "ER_IB_MSG_63", + 0x2e71: "ER_IB_MSG_64", + 0x2e72: "ER_IB_MSG_65", + 0x2e73: "ER_IB_MSG_66", + 0x2e74: "ER_IB_MSG_67", + 0x2e75: "ER_IB_MSG_68", + 0x2e76: "ER_IB_MSG_69", + 0x2e77: "ER_IB_MSG_70", + 0x2e78: "ER_IB_MSG_71", + 0x2e79: "ER_IB_MSG_72", + 0x2e7a: "ER_IB_MSG_73", + 0x2e7b: "ER_IB_MSG_74", + 0x2e7c: "ER_IB_MSG_75", + 0x2e7d: "ER_IB_MSG_76", + 0x2e7e: "ER_IB_MSG_77", + 0x2e7f: "ER_IB_MSG_78", + 0x2e80: "ER_IB_MSG_79", + 0x2e81: "ER_IB_MSG_80", + 0x2e82: "ER_IB_MSG_81", + 0x2e83: "ER_IB_MSG_82", + 0x2e84: "ER_IB_MSG_83", + 0x2e85: "ER_IB_MSG_84", + 0x2e86: "ER_IB_MSG_85", + 0x2e87: "ER_IB_MSG_86", + 0x2e88: "ER_IB_MSG_87", + 0x2e89: "ER_IB_MSG_88", + 0x2e8a: "ER_IB_MSG_89", + 0x2e8b: "ER_IB_MSG_90", + 0x2e8c: "ER_IB_MSG_91", + 0x2e8d: "ER_IB_MSG_92", + 0x2e8e: "ER_IB_MSG_93", + 0x2e8f: "ER_IB_MSG_94", + 0x2e90: "ER_IB_MSG_95", + 0x2e91: "ER_IB_MSG_96", + 0x2e92: "ER_IB_MSG_97", + 0x2e93: "ER_IB_MSG_98", + 0x2e94: "ER_IB_MSG_99", + 0x2e95: "ER_IB_MSG_100", + 0x2e96: "ER_IB_MSG_101", + 0x2e97: "ER_IB_MSG_102", + 0x2e98: "ER_IB_MSG_103", + 0x2e99: "ER_IB_MSG_104", + 0x2e9a: "ER_IB_MSG_105", + 0x2e9b: "ER_IB_MSG_106", + 0x2e9c: "ER_IB_MSG_107", + 0x2e9d: "ER_IB_MSG_108", + 0x2e9e: "ER_IB_MSG_109", + 0x2e9f: "ER_IB_MSG_110", + 0x2ea0: "ER_IB_MSG_111", + 0x2ea1: "ER_IB_MSG_112", + 0x2ea2: "ER_IB_MSG_113", + 0x2ea3: "ER_IB_MSG_114", + 0x2ea4: "ER_IB_MSG_115", + 0x2ea5: "ER_IB_MSG_116", + 0x2ea6: "ER_IB_MSG_117", + 0x2ea7: "ER_IB_MSG_118", + 0x2ea8: "ER_IB_MSG_119", + 0x2ea9: "ER_IB_MSG_120", + 0x2eaa: "ER_IB_MSG_121", + 0x2eab: "ER_IB_MSG_122", + 0x2eac: "ER_IB_MSG_123", + 0x2ead: "ER_IB_MSG_124", + 0x2eae: "ER_IB_MSG_125", + 0x2eaf: "ER_IB_MSG_126", + 0x2eb0: "ER_IB_MSG_127", + 0x2eb1: "ER_IB_MSG_128", + 0x2eb2: "ER_IB_MSG_129", + 0x2eb3: "ER_IB_MSG_130", + 0x2eb4: "ER_IB_MSG_131", + 0x2eb5: "ER_IB_MSG_132", + 0x2eb6: "ER_IB_MSG_133", + 0x2eb7: "ER_IB_MSG_134", + 0x2eb8: "ER_IB_MSG_135", + 0x2eb9: "ER_IB_MSG_136", + 0x2eba: "ER_IB_MSG_137", + 0x2ebb: "ER_IB_MSG_138", + 0x2ebc: "ER_IB_MSG_139", + 0x2ebd: "ER_IB_MSG_140", + 0x2ebe: "ER_IB_MSG_141", + 0x2ebf: "ER_IB_MSG_142", + 0x2ec0: "ER_IB_MSG_143", + 0x2ec1: "ER_IB_MSG_144", + 0x2ec2: "ER_IB_MSG_145", + 0x2ec3: "ER_IB_MSG_146", + 0x2ec4: "ER_IB_MSG_147", + 0x2ec5: "ER_IB_MSG_148", + 0x2ec6: "ER_IB_MSG_149", + 0x2ec7: "ER_IB_MSG_150", + 0x2ec8: "ER_IB_MSG_151", + 0x2ec9: "ER_IB_MSG_152", + 0x2eca: "ER_IB_MSG_153", + 0x2ecb: "ER_IB_MSG_154", + 0x2ecc: "ER_IB_MSG_155", + 0x2ecd: "ER_IB_MSG_156", + 0x2ece: "ER_IB_MSG_157", + 0x2ecf: "ER_IB_MSG_158", + 0x2ed0: "ER_IB_MSG_159", + 0x2ed1: "ER_IB_MSG_160", + 0x2ed2: "ER_IB_MSG_161", + 0x2ed3: "ER_IB_MSG_162", + 0x2ed4: "ER_IB_MSG_163", + 0x2ed5: "ER_IB_MSG_164", + 0x2ed6: "ER_IB_MSG_165", + 0x2ed7: "ER_IB_MSG_166", + 0x2ed8: "ER_IB_MSG_167", + 0x2ed9: "ER_IB_MSG_168", + 0x2eda: "ER_IB_MSG_169", + 0x2edb: "ER_IB_MSG_170", + 0x2edc: "ER_IB_MSG_171", + 0x2edd: "ER_IB_MSG_172", + 0x2ede: "ER_IB_MSG_173", + 0x2edf: "ER_IB_MSG_174", + 0x2ee0: "ER_IB_MSG_175", + 0x2ee1: "ER_IB_MSG_176", + 0x2ee2: "ER_IB_MSG_177", + 0x2ee3: "ER_IB_MSG_178", + 0x2ee4: "ER_IB_MSG_179", + 0x2ee5: "ER_IB_MSG_180", + 0x2ee6: "ER_IB_MSG_181", + 0x2ee7: "ER_IB_MSG_182", + 0x2ee8: "ER_IB_MSG_183", + 0x2ee9: "ER_IB_MSG_184", + 0x2eea: "ER_IB_MSG_185", + 0x2eeb: "ER_IB_MSG_186", + 0x2eec: "ER_IB_MSG_187", + 0x2eed: "ER_IB_MSG_188", + 0x2eee: "ER_IB_MSG_189", + 0x2eef: "ER_IB_MSG_190", + 0x2ef0: "ER_IB_MSG_191", + 0x2ef1: "ER_IB_MSG_192", + 0x2ef2: "ER_IB_MSG_193", + 0x2ef3: "ER_IB_MSG_194", + 0x2ef4: "ER_IB_MSG_195", + 0x2ef5: "ER_IB_MSG_196", + 0x2ef6: "ER_IB_MSG_197", + 0x2ef7: "ER_IB_MSG_198", + 0x2ef8: "ER_IB_MSG_199", + 0x2ef9: "ER_IB_MSG_200", + 0x2efa: "ER_IB_MSG_201", + 0x2efb: "ER_IB_MSG_202", + 0x2efc: "ER_IB_MSG_203", + 0x2efd: "ER_IB_MSG_204", + 0x2efe: "ER_IB_MSG_205", + 0x2eff: "ER_IB_MSG_206", + 0x2f00: "ER_IB_MSG_207", + 0x2f01: "ER_IB_MSG_208", + 0x2f02: "ER_IB_MSG_209", + 0x2f03: "ER_IB_MSG_210", + 0x2f04: "ER_IB_MSG_211", + 0x2f05: "ER_IB_MSG_212", + 0x2f06: "ER_IB_MSG_213", + 0x2f07: "ER_IB_MSG_214", + 0x2f08: "ER_IB_MSG_215", + 0x2f09: "ER_IB_MSG_216", + 0x2f0a: "ER_IB_MSG_217", + 0x2f0b: "ER_IB_MSG_218", + 0x2f0c: "ER_IB_MSG_219", + 0x2f0d: "ER_IB_MSG_220", + 0x2f0e: "ER_IB_MSG_221", + 0x2f0f: "ER_IB_MSG_222", + 0x2f10: "ER_IB_MSG_223", + 0x2f11: "ER_IB_MSG_224", + 0x2f12: "ER_IB_MSG_225", + 0x2f13: "ER_IB_MSG_226", + 0x2f14: "ER_IB_MSG_227", + 0x2f15: "ER_IB_MSG_228", + 0x2f16: "ER_IB_MSG_229", + 0x2f17: "ER_IB_MSG_230", + 0x2f18: "ER_IB_MSG_231", + 0x2f19: "ER_IB_MSG_232", + 0x2f1a: "ER_IB_MSG_233", + 0x2f1b: "ER_IB_MSG_234", + 0x2f1c: "ER_IB_MSG_235", + 0x2f1d: "ER_IB_MSG_236", + 0x2f1e: "ER_IB_MSG_237", + 0x2f1f: "ER_IB_MSG_238", + 0x2f20: "ER_IB_MSG_239", + 0x2f21: "ER_IB_MSG_240", + 0x2f22: "ER_IB_MSG_241", + 0x2f23: "ER_IB_MSG_242", + 0x2f24: "ER_IB_MSG_243", + 0x2f25: "ER_IB_MSG_244", + 0x2f26: "ER_IB_MSG_245", + 0x2f27: "ER_IB_MSG_246", + 0x2f28: "ER_IB_MSG_247", + 0x2f29: "ER_IB_MSG_248", + 0x2f2a: "ER_IB_MSG_249", + 0x2f2b: "ER_IB_MSG_250", + 0x2f2c: "ER_IB_MSG_251", + 0x2f2d: "ER_IB_MSG_252", + 0x2f2e: "ER_IB_MSG_253", + 0x2f2f: "ER_IB_MSG_254", + 0x2f30: "ER_IB_MSG_255", + 0x2f31: "ER_IB_MSG_256", + 0x2f32: "ER_IB_MSG_257", + 0x2f33: "ER_IB_MSG_258", + 0x2f34: "ER_IB_MSG_259", + 0x2f35: "ER_IB_MSG_260", + 0x2f36: "ER_IB_MSG_261", + 0x2f37: "ER_IB_MSG_262", + 0x2f38: "ER_IB_MSG_263", + 0x2f39: "ER_IB_MSG_264", + 0x2f3a: "ER_IB_MSG_265", + 0x2f3b: "ER_IB_MSG_266", + 0x2f3c: "ER_IB_MSG_267", + 0x2f3d: "ER_IB_MSG_268", + 0x2f3e: "ER_IB_MSG_269", + 0x2f3f: "ER_IB_MSG_270", + 0x2f40: "ER_IB_MSG_271", + 0x2f41: "ER_IB_MSG_272", + 0x2f42: "ER_IB_MSG_273", + 0x2f43: "ER_IB_MSG_274", + 0x2f44: "ER_IB_MSG_275", + 0x2f45: "ER_IB_MSG_276", + 0x2f46: "ER_IB_MSG_277", + 0x2f47: "ER_IB_MSG_278", + 0x2f48: "ER_IB_MSG_279", + 0x2f49: "ER_IB_MSG_280", + 0x2f4a: "ER_IB_MSG_281", + 0x2f4b: "ER_IB_MSG_282", + 0x2f4c: "ER_IB_MSG_283", + 0x2f4d: "ER_IB_MSG_284", + 0x2f4e: "ER_IB_MSG_285", + 0x2f4f: "ER_IB_MSG_286", + 0x2f50: "ER_IB_MSG_287", + 0x2f51: "ER_IB_MSG_288", + 0x2f52: "ER_IB_MSG_289", + 0x2f53: "ER_IB_MSG_290", + 0x2f54: "ER_IB_MSG_291", + 0x2f55: "ER_IB_MSG_292", + 0x2f56: "ER_IB_MSG_293", + 0x2f57: "ER_IB_MSG_294", + 0x2f58: "ER_IB_MSG_295", + 0x2f59: "ER_IB_MSG_296", + 0x2f5a: "ER_IB_MSG_297", + 0x2f5b: "ER_IB_MSG_298", + 0x2f5c: "ER_IB_MSG_299", + 0x2f5d: "ER_IB_MSG_300", + 0x2f5e: "ER_IB_MSG_301", + 0x2f5f: "ER_IB_MSG_302", + 0x2f60: "ER_IB_MSG_303", + 0x2f61: "ER_IB_MSG_304", + 0x2f62: "ER_IB_MSG_305", + 0x2f63: "ER_IB_MSG_306", + 0x2f64: "ER_IB_MSG_307", + 0x2f65: "ER_IB_MSG_308", + 0x2f66: "ER_IB_MSG_309", + 0x2f67: "ER_IB_MSG_310", + 0x2f68: "ER_IB_MSG_311", + 0x2f69: "ER_IB_MSG_312", + 0x2f6a: "ER_IB_MSG_313", + 0x2f6b: "ER_IB_MSG_314", + 0x2f6c: "ER_IB_MSG_315", + 0x2f6d: "ER_IB_MSG_316", + 0x2f6e: "ER_IB_MSG_317", + 0x2f6f: "ER_IB_MSG_318", + 0x2f70: "ER_IB_MSG_319", + 0x2f71: "ER_IB_MSG_320", + 0x2f72: "ER_IB_MSG_321", + 0x2f73: "ER_IB_MSG_322", + 0x2f74: "ER_IB_MSG_323", + 0x2f75: "ER_IB_MSG_324", + 0x2f76: "ER_IB_MSG_325", + 0x2f77: "ER_IB_MSG_326", + 0x2f78: "ER_IB_MSG_327", + 0x2f79: "ER_IB_MSG_328", + 0x2f7a: "ER_IB_MSG_329", + 0x2f7b: "ER_IB_MSG_330", + 0x2f7c: "ER_IB_MSG_331", + 0x2f7d: "ER_IB_MSG_332", + 0x2f7e: "ER_IB_MSG_333", + 0x2f7f: "ER_IB_MSG_334", + 0x2f80: "ER_IB_MSG_335", + 0x2f81: "ER_IB_MSG_336", + 0x2f82: "ER_IB_MSG_337", + 0x2f83: "ER_IB_MSG_338", + 0x2f84: "ER_IB_MSG_339", + 0x2f85: "ER_IB_MSG_340", + 0x2f86: "ER_IB_MSG_341", + 0x2f87: "ER_IB_MSG_342", + 0x2f88: "ER_IB_MSG_343", + 0x2f89: "ER_IB_MSG_344", + 0x2f8a: "ER_IB_MSG_345", + 0x2f8b: "ER_IB_MSG_346", + 0x2f8c: "ER_IB_MSG_347", + 0x2f8d: "ER_IB_MSG_348", + 0x2f8e: "ER_IB_MSG_349", + 0x2f8f: "ER_IB_MSG_350", + 0x2f90: "ER_IB_MSG_351", + 0x2f91: "ER_IB_MSG_352", + 0x2f92: "ER_IB_MSG_353", + 0x2f93: "ER_IB_MSG_354", + 0x2f94: "ER_IB_MSG_355", + 0x2f95: "ER_IB_MSG_356", + 0x2f96: "ER_IB_MSG_357", + 0x2f97: "ER_IB_MSG_358", + 0x2f98: "ER_IB_MSG_359", + 0x2f99: "ER_IB_MSG_360", + 0x2f9a: "ER_IB_MSG_361", + 0x2f9b: "ER_IB_MSG_362", + 0x2f9c: "ER_IB_MSG_363", + 0x2f9d: "ER_IB_MSG_364", + 0x2f9e: "ER_IB_MSG_365", + 0x2f9f: "ER_IB_MSG_366", + 0x2fa0: "ER_IB_MSG_367", + 0x2fa1: "ER_IB_MSG_368", + 0x2fa2: "ER_IB_MSG_369", + 0x2fa3: "ER_IB_MSG_370", + 0x2fa4: "ER_IB_MSG_371", + 0x2fa5: "ER_IB_MSG_372", + 0x2fa6: "ER_IB_MSG_373", + 0x2fa7: "ER_IB_MSG_374", + 0x2fa8: "ER_IB_MSG_375", + 0x2fa9: "ER_IB_MSG_376", + 0x2faa: "ER_IB_MSG_377", + 0x2fab: "ER_IB_MSG_378", + 0x2fac: "ER_IB_MSG_379", + 0x2fad: "ER_IB_MSG_380", + 0x2fae: "ER_IB_MSG_381", + 0x2faf: "ER_IB_MSG_382", + 0x2fb0: "ER_IB_MSG_383", + 0x2fb1: "ER_IB_MSG_384", + 0x2fb2: "ER_IB_MSG_385", + 0x2fb3: "ER_IB_MSG_386", + 0x2fb4: "ER_IB_MSG_387", + 0x2fb5: "ER_IB_MSG_388", + 0x2fb6: "ER_IB_MSG_389", + 0x2fb7: "ER_IB_MSG_390", + 0x2fb8: "ER_IB_MSG_391", + 0x2fb9: "ER_IB_MSG_392", + 0x2fba: "ER_IB_MSG_393", + 0x2fbb: "ER_IB_MSG_394", + 0x2fbc: "ER_IB_MSG_395", + 0x2fbd: "ER_IB_MSG_396", + 0x2fbe: "ER_IB_MSG_397", + 0x2fbf: "ER_IB_MSG_398", + 0x2fc0: "ER_IB_MSG_399", + 0x2fc1: "ER_IB_MSG_400", + 0x2fc2: "ER_IB_MSG_401", + 0x2fc3: "ER_IB_MSG_402", + 0x2fc4: "ER_IB_MSG_403", + 0x2fc5: "ER_IB_MSG_404", + 0x2fc6: "ER_IB_MSG_405", + 0x2fc7: "ER_IB_MSG_406", + 0x2fc8: "ER_IB_MSG_407", + 0x2fc9: "ER_IB_MSG_408", + 0x2fca: "ER_IB_MSG_409", + 0x2fcb: "ER_IB_MSG_410", + 0x2fcc: "ER_IB_MSG_411", + 0x2fcd: "ER_IB_MSG_412", + 0x2fce: "ER_IB_MSG_413", + 0x2fcf: "ER_IB_MSG_414", + 0x2fd0: "ER_IB_MSG_415", + 0x2fd1: "ER_IB_MSG_416", + 0x2fd2: "ER_IB_MSG_417", + 0x2fd3: "ER_IB_MSG_418", + 0x2fd4: "ER_IB_MSG_419", + 0x2fd5: "ER_IB_MSG_420", + 0x2fd6: "ER_IB_MSG_421", + 0x2fd7: "ER_IB_MSG_422", + 0x2fd8: "ER_IB_MSG_423", + 0x2fd9: "ER_IB_MSG_424", + 0x2fda: "ER_IB_MSG_425", + 0x2fdb: "ER_IB_MSG_426", + 0x2fdc: "ER_IB_MSG_427", + 0x2fdd: "ER_IB_MSG_428", + 0x2fde: "ER_IB_MSG_429", + 0x2fdf: "ER_IB_MSG_430", + 0x2fe0: "ER_IB_MSG_431", + 0x2fe1: "ER_IB_MSG_432", + 0x2fe2: "ER_IB_MSG_433", + 0x2fe3: "ER_IB_MSG_434", + 0x2fe4: "ER_IB_MSG_435", + 0x2fe5: "ER_IB_MSG_436", + 0x2fe6: "ER_IB_MSG_437", + 0x2fe7: "ER_IB_MSG_438", + 0x2fe8: "ER_IB_MSG_439", + 0x2fe9: "ER_IB_MSG_440", + 0x2fea: "ER_IB_MSG_441", + 0x2feb: "ER_IB_MSG_442", + 0x2fec: "ER_IB_MSG_443", + 0x2fed: "ER_IB_MSG_444", + 0x2fee: "ER_IB_MSG_445", + 0x2fef: "ER_IB_MSG_446", + 0x2ff0: "ER_IB_MSG_447", + 0x2ff1: "ER_IB_MSG_448", + 0x2ff2: "ER_IB_MSG_449", + 0x2ff3: "ER_IB_MSG_450", + 0x2ff4: "ER_IB_MSG_451", + 0x2ff5: "ER_IB_MSG_452", + 0x2ff6: "ER_IB_MSG_453", + 0x2ff7: "ER_IB_MSG_454", + 0x2ff8: "ER_IB_MSG_455", + 0x2ff9: "ER_IB_MSG_456", + 0x2ffa: "ER_IB_MSG_457", + 0x2ffb: "ER_IB_MSG_458", + 0x2ffc: "ER_IB_MSG_459", + 0x2ffd: "ER_IB_MSG_460", + 0x2ffe: "ER_IB_MSG_461", + 0x2fff: "ER_IB_MSG_462", + 0x3000: "ER_IB_MSG_463", + 0x3001: "ER_IB_MSG_464", + 0x3002: "ER_IB_MSG_465", + 0x3003: "ER_IB_MSG_466", + 0x3004: "ER_IB_MSG_467", + 0x3005: "ER_IB_MSG_468", + 0x3006: "ER_IB_MSG_469", + 0x3007: "ER_IB_MSG_470", + 0x3008: "ER_IB_MSG_471", + 0x3009: "ER_IB_MSG_472", + 0x300a: "ER_IB_MSG_473", + 0x300b: "ER_IB_MSG_474", + 0x300c: "ER_IB_MSG_475", + 0x300d: "ER_IB_MSG_476", + 0x300e: "ER_IB_MSG_477", + 0x300f: "ER_IB_MSG_478", + 0x3010: "ER_IB_MSG_479", + 0x3011: "ER_IB_MSG_480", + 0x3012: "ER_IB_MSG_481", + 0x3013: "ER_IB_MSG_482", + 0x3014: "ER_IB_MSG_483", + 0x3015: "ER_IB_MSG_484", + 0x3016: "ER_IB_MSG_485", + 0x3017: "ER_IB_MSG_486", + 0x3018: "ER_IB_MSG_487", + 0x3019: "ER_IB_MSG_488", + 0x301a: "ER_IB_MSG_489", + 0x301b: "ER_IB_MSG_490", + 0x301c: "ER_IB_MSG_491", + 0x301d: "ER_IB_MSG_492", + 0x301e: "ER_IB_MSG_493", + 0x301f: "ER_IB_MSG_494", + 0x3020: "ER_IB_MSG_495", + 0x3021: "ER_IB_MSG_496", + 0x3022: "ER_IB_MSG_497", + 0x3023: "ER_IB_MSG_498", + 0x3024: "ER_IB_MSG_499", + 0x3025: "ER_IB_MSG_500", + 0x3026: "ER_IB_MSG_501", + 0x3027: "ER_IB_MSG_502", + 0x3028: "ER_IB_MSG_503", + 0x3029: "ER_IB_MSG_504", + 0x302a: "ER_IB_MSG_505", + 0x302b: "ER_IB_MSG_506", + 0x302c: "ER_IB_MSG_507", + 0x302d: "ER_IB_MSG_508", + 0x302e: "ER_IB_MSG_509", + 0x302f: "ER_IB_MSG_510", + 0x3030: "ER_IB_MSG_511", + 0x3031: "ER_IB_MSG_512", + 0x3032: "ER_IB_MSG_513", + 0x3033: "ER_IB_MSG_514", + 0x3034: "ER_IB_MSG_515", + 0x3035: "ER_IB_MSG_516", + 0x3036: "ER_IB_MSG_517", + 0x3037: "ER_IB_MSG_518", + 0x3038: "ER_IB_MSG_519", + 0x3039: "ER_IB_MSG_520", + 0x303a: "ER_IB_MSG_521", + 0x303b: "ER_IB_MSG_522", + 0x303c: "ER_IB_MSG_523", + 0x303d: "ER_IB_MSG_524", + 0x303e: "ER_IB_MSG_525", + 0x303f: "ER_IB_MSG_526", + 0x3040: "ER_IB_MSG_527", + 0x3041: "ER_IB_MSG_528", + 0x3042: "ER_IB_MSG_529", + 0x3043: "ER_IB_MSG_530", + 0x3044: "ER_IB_MSG_531", + 0x3045: "ER_IB_MSG_532", + 0x3046: "ER_IB_MSG_533", + 0x3047: "ER_IB_MSG_534", + 0x3048: "ER_IB_MSG_535", + 0x3049: "ER_IB_MSG_536", + 0x304a: "ER_IB_MSG_537", + 0x304b: "ER_IB_MSG_538", + 0x304c: "ER_IB_MSG_539", + 0x304d: "ER_IB_MSG_540", + 0x304e: "ER_IB_MSG_541", + 0x304f: "ER_IB_MSG_542", + 0x3050: "ER_IB_MSG_543", + 0x3051: "ER_IB_MSG_544", + 0x3052: "ER_IB_MSG_545", + 0x3053: "ER_IB_MSG_546", + 0x3054: "ER_IB_MSG_547", + 0x3055: "ER_IB_MSG_548", + 0x3056: "ER_IB_MSG_549", + 0x3057: "ER_IB_MSG_550", + 0x3058: "ER_IB_MSG_551", + 0x3059: "ER_IB_MSG_552", + 0x305a: "ER_IB_MSG_553", + 0x305b: "ER_IB_MSG_554", + 0x305c: "ER_IB_MSG_555", + 0x305d: "ER_IB_MSG_556", + 0x305e: "ER_IB_MSG_557", + 0x305f: "ER_IB_MSG_558", + 0x3060: "ER_IB_MSG_559", + 0x3061: "ER_IB_MSG_560", + 0x3062: "ER_IB_MSG_561", + 0x3063: "ER_IB_MSG_562", + 0x3064: "ER_IB_MSG_563", + 0x3065: "ER_IB_MSG_564", + 0x3066: "ER_IB_MSG_565", + 0x3067: "ER_IB_MSG_566", + 0x3068: "ER_IB_MSG_567", + 0x3069: "ER_IB_MSG_568", + 0x306a: "ER_IB_MSG_569", + 0x306b: "ER_IB_MSG_570", + 0x306c: "ER_IB_MSG_571", + 0x306d: "ER_IB_MSG_572", + 0x306e: "ER_IB_MSG_573", + 0x306f: "ER_IB_MSG_574", + 0x3070: "ER_IB_MSG_575", + 0x3071: "ER_IB_MSG_576", + 0x3072: "ER_IB_MSG_577", + 0x3073: "ER_IB_MSG_578", + 0x3074: "ER_IB_MSG_579", + 0x3075: "ER_IB_MSG_580", + 0x3076: "ER_IB_MSG_581", + 0x3077: "ER_IB_MSG_582", + 0x3078: "ER_IB_MSG_583", + 0x3079: "ER_IB_MSG_584", + 0x307a: "ER_IB_MSG_585", + 0x307b: "ER_IB_MSG_586", + 0x307c: "ER_IB_MSG_587", + 0x307d: "ER_IB_MSG_588", + 0x307e: "ER_IB_MSG_589", + 0x307f: "ER_IB_MSG_590", + 0x3080: "ER_IB_MSG_591", + 0x3081: "ER_IB_MSG_592", + 0x3082: "ER_IB_MSG_593", + 0x3083: "ER_IB_MSG_594", + 0x3084: "ER_IB_MSG_595", + 0x3085: "ER_IB_MSG_596", + 0x3086: "ER_IB_MSG_597", + 0x3087: "ER_IB_MSG_598", + 0x3088: "ER_IB_MSG_599", + 0x3089: "ER_IB_MSG_600", + 0x308a: "ER_IB_MSG_601", + 0x308b: "ER_IB_MSG_602", + 0x308c: "ER_IB_MSG_603", + 0x308d: "ER_IB_MSG_604", + 0x308e: "ER_IB_MSG_605", + 0x308f: "ER_IB_MSG_606", + 0x3090: "ER_IB_MSG_607", + 0x3091: "ER_IB_MSG_608", + 0x3092: "ER_IB_MSG_609", + 0x3093: "ER_IB_MSG_610", + 0x3094: "ER_IB_MSG_611", + 0x3095: "ER_IB_MSG_612", + 0x3096: "ER_IB_MSG_613", + 0x3097: "ER_IB_MSG_614", + 0x3098: "ER_IB_MSG_615", + 0x3099: "ER_IB_MSG_616", + 0x309a: "ER_IB_MSG_617", + 0x309b: "ER_IB_MSG_618", + 0x309c: "ER_IB_MSG_619", + 0x309d: "ER_IB_MSG_620", + 0x309e: "ER_IB_MSG_621", + 0x309f: "ER_IB_MSG_622", + 0x30a0: "ER_IB_MSG_623", + 0x30a1: "ER_IB_MSG_624", + 0x30a2: "ER_IB_MSG_625", + 0x30a3: "ER_IB_MSG_626", + 0x30a4: "ER_IB_MSG_627", + 0x30a5: "ER_IB_MSG_628", + 0x30a6: "ER_IB_MSG_629", + 0x30a7: "ER_IB_MSG_630", + 0x30a8: "ER_IB_MSG_631", + 0x30a9: "ER_IB_MSG_632", + 0x30aa: "ER_IB_MSG_633", + 0x30ab: "ER_IB_MSG_634", + 0x30ac: "ER_IB_MSG_635", + 0x30ad: "ER_IB_MSG_636", + 0x30ae: "ER_IB_MSG_637", + 0x30af: "ER_IB_MSG_638", + 0x30b0: "ER_IB_MSG_639", + 0x30b1: "ER_IB_MSG_640", + 0x30b2: "ER_IB_MSG_641", + 0x30b3: "ER_IB_MSG_642", + 0x30b4: "ER_IB_MSG_643", + 0x30b5: "ER_IB_MSG_644", + 0x30b6: "ER_IB_MSG_645", + 0x30b7: "ER_IB_MSG_646", + 0x30b8: "ER_IB_MSG_647", + 0x30b9: "ER_IB_MSG_648", + 0x30ba: "ER_IB_MSG_649", + 0x30bb: "ER_IB_MSG_650", + 0x30bc: "ER_IB_MSG_651", + 0x30bd: "ER_IB_MSG_652", + 0x30be: "ER_IB_MSG_653", + 0x30bf: "ER_IB_MSG_654", + 0x30c0: "ER_IB_MSG_655", + 0x30c1: "ER_IB_MSG_656", + 0x30c2: "ER_IB_MSG_657", + 0x30c3: "ER_IB_MSG_658", + 0x30c4: "ER_IB_MSG_659", + 0x30c5: "ER_IB_MSG_660", + 0x30c6: "ER_IB_MSG_661", + 0x30c7: "ER_IB_MSG_662", + 0x30c8: "ER_IB_MSG_663", + 0x30c9: "ER_IB_MSG_664", + 0x30ca: "ER_IB_MSG_665", + 0x30cb: "ER_IB_MSG_666", + 0x30cc: "ER_IB_MSG_667", + 0x30cd: "ER_IB_MSG_668", + 0x30ce: "ER_IB_MSG_669", + 0x30cf: "ER_IB_MSG_670", + 0x30d0: "ER_IB_MSG_671", + 0x30d1: "ER_IB_MSG_672", + 0x30d2: "ER_IB_MSG_673", + 0x30d3: "ER_IB_MSG_674", + 0x30d4: "ER_IB_MSG_675", + 0x30d5: "ER_IB_MSG_676", + 0x30d6: "ER_IB_MSG_677", + 0x30d7: "ER_IB_MSG_678", + 0x30d8: "ER_IB_MSG_679", + 0x30d9: "ER_IB_MSG_680", + 0x30da: "ER_IB_MSG_681", + 0x30db: "ER_IB_MSG_682", + 0x30dc: "ER_IB_MSG_683", + 0x30dd: "ER_IB_MSG_684", + 0x30de: "ER_IB_MSG_685", + 0x30df: "ER_IB_MSG_686", + 0x30e0: "ER_IB_MSG_687", + 0x30e1: "ER_IB_MSG_688", + 0x30e2: "ER_IB_MSG_689", + 0x30e3: "ER_IB_MSG_690", + 0x30e4: "ER_IB_MSG_691", + 0x30e5: "ER_IB_MSG_692", + 0x30e6: "ER_IB_MSG_693", + 0x30e7: "ER_IB_MSG_694", + 0x30e8: "ER_IB_MSG_695", + 0x30e9: "ER_IB_MSG_696", + 0x30ea: "ER_IB_MSG_697", + 0x30eb: "ER_IB_MSG_698", + 0x30ec: "ER_IB_MSG_699", + 0x30ed: "ER_IB_MSG_700", + 0x30ee: "ER_IB_MSG_701", + 0x30ef: "ER_IB_MSG_702", + 0x30f0: "ER_IB_MSG_703", + 0x30f1: "ER_IB_MSG_704", + 0x30f2: "ER_IB_MSG_705", + 0x30f3: "ER_IB_MSG_706", + 0x30f4: "ER_IB_MSG_707", + 0x30f5: "ER_IB_MSG_708", + 0x30f6: "ER_IB_MSG_709", + 0x30f7: "ER_IB_MSG_710", + 0x30f8: "ER_IB_MSG_711", + 0x30f9: "ER_IB_MSG_712", + 0x30fa: "ER_IB_MSG_713", + 0x30fb: "ER_IB_MSG_714", + 0x30fc: "ER_IB_MSG_715", + 0x30fd: "ER_IB_MSG_716", + 0x30fe: "ER_IB_MSG_717", + 0x30ff: "ER_IB_MSG_718", + 0x3100: "ER_IB_MSG_719", + 0x3101: "ER_IB_MSG_720", + 0x3102: "ER_IB_MSG_721", + 0x3103: "ER_IB_MSG_722", + 0x3104: "ER_IB_MSG_723", + 0x3105: "ER_IB_MSG_724", + 0x3106: "ER_IB_MSG_725", + 0x3107: "ER_IB_MSG_726", + 0x3108: "ER_IB_MSG_727", + 0x3109: "ER_IB_MSG_728", + 0x310a: "ER_IB_MSG_729", + 0x310b: "ER_IB_MSG_730", + 0x310c: "ER_IB_MSG_731", + 0x310d: "ER_IB_MSG_732", + 0x310e: "ER_IB_MSG_733", + 0x310f: "ER_IB_MSG_734", + 0x3110: "ER_IB_MSG_735", + 0x3111: "ER_IB_MSG_736", + 0x3112: "ER_IB_MSG_737", + 0x3113: "ER_IB_MSG_738", + 0x3114: "ER_IB_MSG_739", + 0x3115: "ER_IB_MSG_740", + 0x3116: "ER_IB_MSG_741", + 0x3117: "ER_IB_MSG_742", + 0x3118: "ER_IB_MSG_743", + 0x3119: "ER_IB_MSG_744", + 0x311a: "ER_IB_MSG_745", + 0x311b: "ER_IB_MSG_746", + 0x311c: "ER_IB_MSG_747", + 0x311d: "ER_IB_MSG_748", + 0x311e: "ER_IB_MSG_749", + 0x311f: "ER_IB_MSG_750", + 0x3120: "ER_IB_MSG_751", + 0x3121: "ER_IB_MSG_752", + 0x3122: "ER_IB_MSG_753", + 0x3123: "ER_IB_MSG_754", + 0x3124: "ER_IB_MSG_755", + 0x3125: "ER_IB_MSG_756", + 0x3126: "ER_IB_MSG_757", + 0x3127: "ER_IB_MSG_758", + 0x3128: "ER_IB_MSG_759", + 0x3129: "ER_IB_MSG_760", + 0x312a: "ER_IB_MSG_761", + 0x312b: "ER_IB_MSG_762", + 0x312c: "ER_IB_MSG_763", + 0x312d: "ER_IB_MSG_764", + 0x312e: "ER_IB_MSG_765", + 0x312f: "ER_IB_MSG_766", + 0x3130: "ER_IB_MSG_767", + 0x3131: "ER_IB_MSG_768", + 0x3132: "ER_IB_MSG_769", + 0x3133: "ER_IB_MSG_770", + 0x3134: "ER_IB_MSG_771", + 0x3135: "ER_IB_MSG_772", + 0x3136: "ER_IB_MSG_773", + 0x3137: "ER_IB_MSG_774", + 0x3138: "ER_IB_MSG_775", + 0x3139: "ER_IB_MSG_776", + 0x313a: "ER_IB_MSG_777", + 0x313b: "ER_IB_MSG_778", + 0x313c: "ER_IB_MSG_779", + 0x313d: "ER_IB_MSG_780", + 0x313e: "ER_IB_MSG_781", + 0x313f: "ER_IB_MSG_782", + 0x3140: "ER_IB_MSG_783", + 0x3141: "ER_IB_MSG_784", + 0x3142: "ER_IB_MSG_785", + 0x3143: "ER_IB_MSG_786", + 0x3144: "ER_IB_MSG_787", + 0x3145: "ER_IB_MSG_788", + 0x3146: "ER_IB_MSG_789", + 0x3147: "ER_IB_MSG_790", + 0x3148: "ER_IB_MSG_791", + 0x3149: "ER_IB_MSG_792", + 0x314a: "ER_IB_MSG_793", + 0x314b: "ER_IB_MSG_794", + 0x314c: "ER_IB_MSG_795", + 0x314d: "ER_IB_MSG_796", + 0x314e: "ER_IB_MSG_797", + 0x314f: "ER_IB_MSG_798", + 0x3150: "ER_IB_MSG_799", + 0x3151: "ER_IB_MSG_800", + 0x3152: "ER_IB_MSG_801", + 0x3153: "ER_IB_MSG_802", + 0x3154: "ER_IB_MSG_803", + 0x3155: "ER_IB_MSG_804", + 0x3156: "ER_IB_MSG_805", + 0x3157: "ER_IB_MSG_806", + 0x3158: "ER_IB_MSG_807", + 0x3159: "ER_IB_MSG_808", + 0x315a: "ER_IB_MSG_809", + 0x315b: "ER_IB_MSG_810", + 0x315c: "ER_IB_MSG_811", + 0x315d: "ER_IB_MSG_812", + 0x315e: "ER_IB_MSG_813", + 0x315f: "ER_IB_MSG_814", + 0x3160: "ER_IB_MSG_815", + 0x3161: "ER_IB_MSG_816", + 0x3162: "ER_IB_MSG_817", + 0x3163: "ER_IB_MSG_818", + 0x3164: "ER_IB_MSG_819", + 0x3165: "ER_IB_MSG_820", + 0x3166: "ER_IB_MSG_821", + 0x3167: "ER_IB_MSG_822", + 0x3168: "ER_IB_MSG_823", + 0x3169: "ER_IB_MSG_824", + 0x316a: "ER_IB_MSG_825", + 0x316b: "ER_IB_MSG_826", + 0x316c: "ER_IB_MSG_827", + 0x316d: "ER_IB_MSG_828", + 0x316e: "ER_IB_MSG_829", + 0x316f: "ER_IB_MSG_830", + 0x3170: "ER_IB_MSG_831", + 0x3171: "ER_IB_MSG_832", + 0x3172: "ER_IB_MSG_833", + 0x3173: "ER_IB_MSG_834", + 0x3174: "ER_IB_MSG_835", + 0x3175: "ER_IB_MSG_836", + 0x3176: "ER_IB_MSG_837", + 0x3177: "ER_IB_MSG_838", + 0x3178: "ER_IB_MSG_839", + 0x3179: "ER_IB_MSG_840", + 0x317a: "ER_IB_MSG_841", + 0x317b: "ER_IB_MSG_842", + 0x317c: "ER_IB_MSG_843", + 0x317d: "ER_IB_MSG_844", + 0x317e: "ER_IB_MSG_845", + 0x317f: "ER_IB_MSG_846", + 0x3180: "ER_IB_MSG_847", + 0x3181: "ER_IB_MSG_848", + 0x3182: "ER_IB_MSG_849", + 0x3183: "ER_IB_MSG_850", + 0x3184: "ER_IB_MSG_851", + 0x3185: "ER_IB_MSG_852", + 0x3186: "ER_IB_MSG_853", + 0x3187: "ER_IB_MSG_854", + 0x3188: "ER_IB_MSG_855", + 0x3189: "ER_IB_MSG_856", + 0x318a: "ER_IB_MSG_857", + 0x318b: "ER_IB_MSG_858", + 0x318c: "ER_IB_MSG_859", + 0x318d: "ER_IB_MSG_860", + 0x318e: "ER_IB_MSG_861", + 0x318f: "ER_IB_MSG_862", + 0x3190: "ER_IB_MSG_863", + 0x3191: "ER_IB_MSG_864", + 0x3192: "ER_IB_MSG_865", + 0x3193: "ER_IB_MSG_866", + 0x3194: "ER_IB_MSG_867", + 0x3195: "ER_IB_MSG_868", + 0x3196: "ER_IB_MSG_869", + 0x3197: "ER_IB_MSG_870", + 0x3198: "ER_IB_MSG_871", + 0x3199: "ER_IB_MSG_872", + 0x319a: "ER_IB_MSG_873", + 0x319b: "ER_IB_MSG_874", + 0x319c: "ER_IB_MSG_875", + 0x319d: "ER_IB_MSG_876", + 0x319e: "ER_IB_MSG_877", + 0x319f: "ER_IB_MSG_878", + 0x31a0: "ER_IB_MSG_879", + 0x31a1: "ER_IB_MSG_880", + 0x31a2: "ER_IB_MSG_881", + 0x31a3: "ER_IB_MSG_882", + 0x31a4: "ER_IB_MSG_883", + 0x31a5: "ER_IB_MSG_884", + 0x31a6: "ER_IB_MSG_885", + 0x31a7: "ER_IB_MSG_886", + 0x31a8: "ER_IB_MSG_887", + 0x31a9: "ER_IB_MSG_888", + 0x31aa: "ER_IB_MSG_889", + 0x31ab: "ER_IB_MSG_890", + 0x31ac: "ER_IB_MSG_891", + 0x31ad: "ER_IB_MSG_892", + 0x31ae: "ER_IB_MSG_893", + 0x31af: "ER_IB_MSG_894", + 0x31b0: "ER_IB_MSG_895", + 0x31b1: "ER_IB_MSG_896", + 0x31b2: "ER_IB_MSG_897", + 0x31b3: "ER_IB_MSG_898", + 0x31b4: "ER_IB_MSG_899", + 0x31b5: "ER_IB_MSG_900", + 0x31b6: "ER_IB_MSG_901", + 0x31b7: "ER_IB_MSG_902", + 0x31b8: "ER_IB_MSG_903", + 0x31b9: "ER_IB_MSG_904", + 0x31ba: "ER_IB_MSG_905", + 0x31bb: "ER_IB_MSG_906", + 0x31bc: "ER_IB_MSG_907", + 0x31bd: "ER_IB_MSG_908", + 0x31be: "ER_IB_MSG_909", + 0x31bf: "ER_IB_MSG_910", + 0x31c0: "ER_IB_MSG_911", + 0x31c1: "ER_IB_MSG_912", + 0x31c2: "ER_IB_MSG_913", + 0x31c3: "ER_IB_MSG_914", + 0x31c4: "ER_IB_MSG_915", + 0x31c5: "ER_IB_MSG_916", + 0x31c6: "ER_IB_MSG_917", + 0x31c7: "ER_IB_MSG_918", + 0x31c8: "ER_IB_MSG_919", + 0x31c9: "ER_IB_MSG_920", + 0x31ca: "ER_IB_MSG_921", + 0x31cb: "ER_IB_MSG_922", + 0x31cc: "ER_IB_MSG_923", + 0x31cd: "ER_IB_MSG_924", + 0x31ce: "ER_IB_MSG_925", + 0x31cf: "ER_IB_MSG_926", + 0x31d0: "ER_IB_MSG_927", + 0x31d1: "ER_IB_MSG_928", + 0x31d2: "ER_IB_MSG_929", + 0x31d3: "ER_IB_MSG_930", + 0x31d4: "ER_IB_MSG_931", + 0x31d5: "ER_IB_MSG_932", + 0x31d6: "ER_IB_MSG_933", + 0x31d7: "ER_IB_MSG_934", + 0x31d8: "ER_IB_MSG_935", + 0x31d9: "ER_IB_MSG_936", + 0x31da: "ER_IB_MSG_937", + 0x31db: "ER_IB_MSG_938", + 0x31dc: "ER_IB_MSG_939", + 0x31dd: "ER_IB_MSG_940", + 0x31de: "ER_IB_MSG_941", + 0x31df: "ER_IB_MSG_942", + 0x31e0: "ER_IB_MSG_943", + 0x31e1: "ER_IB_MSG_944", + 0x31e2: "ER_IB_MSG_945", + 0x31e3: "ER_IB_MSG_946", + 0x31e4: "ER_IB_MSG_947", + 0x31e5: "ER_IB_MSG_948", + 0x31e6: "ER_IB_MSG_949", + 0x31e7: "ER_IB_MSG_950", + 0x31e8: "ER_IB_MSG_951", + 0x31e9: "ER_IB_MSG_952", + 0x31ea: "ER_IB_MSG_953", + 0x31eb: "ER_IB_MSG_954", + 0x31ec: "ER_IB_MSG_955", + 0x31ed: "ER_IB_MSG_956", + 0x31ee: "ER_IB_MSG_957", + 0x31ef: "ER_IB_MSG_958", + 0x31f0: "ER_IB_MSG_959", + 0x31f1: "ER_IB_MSG_960", + 0x31f2: "ER_IB_MSG_961", + 0x31f3: "ER_IB_MSG_962", + 0x31f4: "ER_IB_MSG_963", + 0x31f5: "ER_IB_MSG_964", + 0x31f6: "ER_IB_MSG_965", + 0x31f7: "ER_IB_MSG_966", + 0x31f8: "ER_IB_MSG_967", + 0x31f9: "ER_IB_MSG_968", + 0x31fa: "ER_IB_MSG_969", + 0x31fb: "ER_IB_MSG_970", + 0x31fc: "ER_IB_MSG_971", + 0x31fd: "ER_IB_MSG_972", + 0x31fe: "ER_IB_MSG_973", + 0x31ff: "ER_IB_MSG_974", + 0x3200: "ER_IB_MSG_975", + 0x3201: "ER_IB_MSG_976", + 0x3202: "ER_IB_MSG_977", + 0x3203: "ER_IB_MSG_978", + 0x3204: "ER_IB_MSG_979", + 0x3205: "ER_IB_MSG_980", + 0x3206: "ER_IB_MSG_981", + 0x3207: "ER_IB_MSG_982", + 0x3208: "ER_IB_MSG_983", + 0x3209: "ER_IB_MSG_984", + 0x320a: "ER_IB_MSG_985", + 0x320b: "ER_IB_MSG_986", + 0x320c: "ER_IB_MSG_987", + 0x320d: "ER_IB_MSG_988", + 0x320e: "ER_IB_MSG_989", + 0x320f: "ER_IB_MSG_990", + 0x3210: "ER_IB_MSG_991", + 0x3211: "ER_IB_MSG_992", + 0x3212: "ER_IB_MSG_993", + 0x3213: "ER_IB_MSG_994", + 0x3214: "ER_IB_MSG_995", + 0x3215: "ER_IB_MSG_996", + 0x3216: "ER_IB_MSG_997", + 0x3217: "ER_IB_MSG_998", + 0x3218: "ER_IB_MSG_999", + 0x3219: "ER_IB_MSG_1000", + 0x321a: "ER_IB_MSG_1001", + 0x321b: "ER_IB_MSG_1002", + 0x321c: "ER_IB_MSG_1003", + 0x321d: "ER_IB_MSG_1004", + 0x321e: "ER_IB_MSG_1005", + 0x321f: "ER_IB_MSG_1006", + 0x3220: "ER_IB_MSG_1007", + 0x3221: "ER_IB_MSG_1008", + 0x3222: "ER_IB_MSG_1009", + 0x3223: "ER_IB_MSG_1010", + 0x3224: "ER_IB_MSG_1011", + 0x3225: "ER_IB_MSG_1012", + 0x3226: "ER_IB_MSG_1013", + 0x3227: "ER_IB_MSG_1014", + 0x3228: "ER_IB_MSG_1015", + 0x3229: "ER_IB_MSG_1016", + 0x322a: "ER_IB_MSG_1017", + 0x322b: "ER_IB_MSG_1018", + 0x322c: "ER_IB_MSG_1019", + 0x322d: "ER_IB_MSG_1020", + 0x322e: "ER_IB_MSG_1021", + 0x322f: "ER_IB_MSG_1022", + 0x3230: "ER_IB_MSG_1023", + 0x3231: "ER_IB_MSG_1024", + 0x3232: "ER_IB_MSG_1025", + 0x3233: "ER_IB_MSG_1026", + 0x3234: "ER_IB_MSG_1027", + 0x3235: "ER_IB_MSG_1028", + 0x3236: "ER_IB_MSG_1029", + 0x3237: "ER_IB_MSG_1030", + 0x3238: "ER_IB_MSG_1031", + 0x3239: "ER_IB_MSG_1032", + 0x323a: "ER_IB_MSG_1033", + 0x323b: "ER_IB_MSG_1034", + 0x323c: "ER_IB_MSG_1035", + 0x323d: "ER_IB_MSG_1036", + 0x323e: "ER_IB_MSG_1037", + 0x323f: "ER_IB_MSG_1038", + 0x3240: "ER_IB_MSG_1039", + 0x3241: "ER_IB_MSG_1040", + 0x3242: "ER_IB_MSG_1041", + 0x3243: "ER_IB_MSG_1042", + 0x3244: "ER_IB_MSG_1043", + 0x3245: "ER_IB_MSG_1044", + 0x3246: "ER_IB_MSG_1045", + 0x3247: "ER_IB_MSG_1046", + 0x3248: "ER_IB_MSG_1047", + 0x3249: "ER_IB_MSG_1048", + 0x324a: "ER_IB_MSG_1049", + 0x324b: "ER_IB_MSG_1050", + 0x324c: "ER_IB_MSG_1051", + 0x324d: "ER_IB_MSG_1052", + 0x324e: "ER_IB_MSG_1053", + 0x324f: "ER_IB_MSG_1054", + 0x3250: "ER_IB_MSG_1055", + 0x3251: "ER_IB_MSG_1056", + 0x3252: "ER_IB_MSG_1057", + 0x3253: "ER_IB_MSG_1058", + 0x3254: "ER_IB_MSG_1059", + 0x3255: "ER_IB_MSG_1060", + 0x3256: "ER_IB_MSG_1061", + 0x3257: "ER_IB_MSG_1062", + 0x3258: "ER_IB_MSG_1063", + 0x3259: "ER_IB_MSG_1064", + 0x325a: "ER_IB_MSG_1065", + 0x325b: "ER_IB_MSG_1066", + 0x325c: "ER_IB_MSG_1067", + 0x325d: "ER_IB_MSG_1068", + 0x325e: "ER_IB_MSG_1069", + 0x325f: "ER_IB_MSG_1070", + 0x3260: "ER_IB_MSG_1071", + 0x3261: "ER_IB_MSG_1072", + 0x3262: "ER_IB_MSG_1073", + 0x3263: "ER_IB_MSG_1074", + 0x3264: "ER_IB_MSG_1075", + 0x3265: "ER_IB_MSG_1076", + 0x3266: "ER_IB_MSG_1077", + 0x3267: "ER_IB_MSG_1078", + 0x3268: "ER_IB_MSG_1079", + 0x3269: "ER_IB_MSG_1080", + 0x326a: "ER_IB_MSG_1081", + 0x326b: "ER_IB_MSG_1082", + 0x326c: "ER_IB_MSG_1083", + 0x326d: "ER_IB_MSG_1084", + 0x326e: "ER_IB_MSG_1085", + 0x326f: "ER_IB_MSG_1086", + 0x3270: "ER_IB_MSG_1087", + 0x3271: "ER_IB_MSG_1088", + 0x3272: "ER_IB_MSG_1089", + 0x3273: "ER_IB_MSG_1090", + 0x3274: "ER_IB_MSG_1091", + 0x3275: "ER_IB_MSG_1092", + 0x3276: "ER_IB_MSG_1093", + 0x3277: "ER_IB_MSG_1094", + 0x3278: "ER_IB_MSG_1095", + 0x3279: "ER_IB_MSG_1096", + 0x327a: "ER_IB_MSG_1097", + 0x327b: "ER_IB_MSG_1098", + 0x327c: "ER_IB_MSG_1099", + 0x327d: "ER_IB_MSG_1100", + 0x327e: "ER_IB_MSG_1101", + 0x327f: "ER_IB_MSG_1102", + 0x3280: "ER_IB_MSG_1103", + 0x3281: "ER_IB_MSG_1104", + 0x3282: "ER_IB_MSG_1105", + 0x3283: "ER_IB_MSG_1106", + 0x3284: "ER_IB_MSG_1107", + 0x3285: "ER_IB_MSG_1108", + 0x3286: "ER_IB_MSG_1109", + 0x3287: "ER_IB_MSG_1110", + 0x3288: "ER_IB_MSG_1111", + 0x3289: "ER_IB_MSG_1112", + 0x328a: "ER_IB_MSG_1113", + 0x328b: "ER_IB_MSG_1114", + 0x328c: "ER_IB_MSG_1115", + 0x328d: "ER_IB_MSG_1116", + 0x328e: "ER_IB_MSG_1117", + 0x328f: "ER_IB_MSG_1118", + 0x3290: "ER_IB_MSG_1119", + 0x3291: "ER_IB_MSG_1120", + 0x3292: "ER_IB_MSG_1121", + 0x3293: "ER_IB_MSG_1122", + 0x3294: "ER_IB_MSG_1123", + 0x3295: "ER_IB_MSG_1124", + 0x3296: "ER_IB_MSG_1125", + 0x3297: "ER_IB_MSG_1126", + 0x3298: "ER_IB_MSG_1127", + 0x3299: "ER_IB_MSG_1128", + 0x329a: "ER_IB_MSG_1129", + 0x329b: "ER_IB_MSG_1130", + 0x329c: "ER_IB_MSG_1131", + 0x329d: "ER_IB_MSG_1132", + 0x329e: "ER_IB_MSG_1133", + 0x329f: "ER_IB_MSG_1134", + 0x32a0: "ER_IB_MSG_1135", + 0x32a1: "ER_IB_MSG_1136", + 0x32a2: "ER_IB_MSG_1137", + 0x32a3: "ER_IB_MSG_1138", + 0x32a4: "ER_IB_MSG_1139", + 0x32a5: "ER_IB_MSG_1140", + 0x32a6: "ER_IB_MSG_1141", + 0x32a7: "ER_IB_MSG_1142", + 0x32a8: "ER_IB_MSG_1143", + 0x32a9: "ER_IB_MSG_1144", + 0x32aa: "ER_IB_MSG_1145", + 0x32ab: "ER_IB_MSG_1146", + 0x32ac: "ER_IB_MSG_1147", + 0x32ad: "ER_IB_MSG_1148", + 0x32ae: "ER_IB_MSG_1149", + 0x32af: "ER_IB_MSG_1150", + 0x32b0: "ER_IB_MSG_1151", + 0x32b1: "ER_IB_MSG_1152", + 0x32b2: "ER_IB_MSG_1153", + 0x32b3: "ER_IB_MSG_1154", + 0x32b4: "ER_IB_MSG_1155", + 0x32b5: "ER_IB_MSG_1156", + 0x32b6: "ER_IB_MSG_1157", + 0x32b7: "ER_IB_MSG_1158", + 0x32b8: "ER_IB_MSG_1159", + 0x32b9: "ER_IB_MSG_1160", + 0x32ba: "ER_IB_MSG_1161", + 0x32bb: "ER_IB_MSG_1162", + 0x32bc: "ER_IB_MSG_1163", + 0x32bd: "ER_IB_MSG_1164", + 0x32be: "ER_IB_MSG_1165", + 0x32bf: "ER_IB_MSG_1166", + 0x32c0: "ER_IB_MSG_1167", + 0x32c1: "ER_IB_MSG_1168", + 0x32c2: "ER_IB_MSG_1169", + 0x32c3: "ER_IB_MSG_1170", + 0x32c4: "ER_IB_MSG_1171", + 0x32c5: "ER_IB_MSG_1172", + 0x32c6: "ER_IB_MSG_1173", + 0x32c7: "ER_IB_MSG_1174", + 0x32c8: "ER_IB_MSG_1175", + 0x32c9: "ER_IB_MSG_1176", + 0x32ca: "ER_IB_MSG_1177", + 0x32cb: "ER_IB_MSG_1178", + 0x32cc: "ER_IB_MSG_1179", + 0x32cd: "ER_IB_MSG_1180", + 0x32ce: "ER_IB_MSG_1181", + 0x32cf: "ER_IB_MSG_1182", + 0x32d0: "ER_IB_MSG_1183", + 0x32d1: "ER_IB_MSG_1184", + 0x32d2: "ER_IB_MSG_1185", + 0x32d3: "ER_IB_MSG_1186", + 0x32d4: "ER_IB_MSG_1187", + 0x32d5: "ER_IB_MSG_1188", + 0x32d6: "ER_IB_MSG_1189", + 0x32d7: "ER_IB_MSG_1190", + 0x32d8: "ER_IB_MSG_1191", + 0x32d9: "ER_IB_MSG_1192", + 0x32da: "ER_IB_MSG_1193", + 0x32db: "ER_IB_MSG_1194", + 0x32dc: "ER_IB_MSG_1195", + 0x32dd: "ER_IB_MSG_1196", + 0x32de: "ER_IB_MSG_1197", + 0x32df: "ER_IB_MSG_1198", + 0x32e0: "ER_IB_MSG_1199", + 0x32e1: "ER_IB_MSG_1200", + 0x32e2: "ER_IB_MSG_1201", + 0x32e3: "ER_IB_MSG_1202", + 0x32e4: "ER_IB_MSG_1203", + 0x32e5: "ER_IB_MSG_1204", + 0x32e6: "ER_IB_MSG_1205", + 0x32e7: "ER_IB_MSG_1206", + 0x32e8: "ER_IB_MSG_1207", + 0x32e9: "ER_IB_MSG_1208", + 0x32ea: "ER_IB_MSG_1209", + 0x32eb: "ER_IB_MSG_1210", + 0x32ec: "ER_IB_MSG_1211", + 0x32ed: "ER_IB_MSG_1212", + 0x32ee: "ER_IB_MSG_1213", + 0x32ef: "ER_IB_MSG_1214", + 0x32f0: "ER_IB_MSG_1215", + 0x32f1: "ER_IB_MSG_1216", + 0x32f2: "ER_IB_MSG_1217", + 0x32f3: "ER_IB_MSG_1218", + 0x32f4: "ER_IB_MSG_1219", + 0x32f5: "ER_IB_MSG_1220", + 0x32f6: "ER_IB_MSG_1221", + 0x32f7: "ER_IB_MSG_1222", + 0x32f8: "ER_IB_MSG_1223", + 0x32f9: "ER_IB_MSG_1224", + 0x32fa: "ER_IB_MSG_1225", + 0x32fb: "ER_IB_MSG_1226", + 0x32fc: "ER_IB_MSG_1227", + 0x32fd: "ER_IB_MSG_1228", + 0x32fe: "ER_IB_MSG_1229", + 0x32ff: "ER_IB_MSG_1230", + 0x3300: "ER_IB_MSG_1231", + 0x3301: "ER_IB_MSG_1232", + 0x3302: "ER_IB_MSG_1233", + 0x3303: "ER_IB_MSG_1234", + 0x3304: "ER_IB_MSG_1235", + 0x3305: "ER_IB_MSG_1236", + 0x3306: "ER_IB_MSG_1237", + 0x3307: "ER_IB_MSG_1238", + 0x3308: "ER_IB_MSG_1239", + 0x3309: "ER_IB_MSG_1240", + 0x330a: "ER_IB_MSG_1241", + 0x330b: "ER_IB_MSG_1242", + 0x330c: "ER_IB_MSG_1243", + 0x330d: "ER_IB_MSG_1244", + 0x330e: "ER_IB_MSG_1245", + 0x330f: "ER_IB_MSG_1246", + 0x3310: "ER_IB_MSG_1247", + 0x3311: "ER_IB_MSG_1248", + 0x3312: "ER_IB_MSG_1249", + 0x3313: "ER_IB_MSG_1250", + 0x3314: "ER_IB_MSG_1251", + 0x3315: "ER_IB_MSG_1252", + 0x3316: "ER_IB_MSG_1253", + 0x3317: "ER_IB_MSG_1254", + 0x3318: "ER_IB_MSG_1255", + 0x3319: "ER_IB_MSG_1256", + 0x331a: "ER_IB_MSG_1257", + 0x331b: "ER_IB_MSG_1258", + 0x331c: "ER_IB_MSG_1259", + 0x331d: "ER_IB_MSG_1260", + 0x331e: "ER_IB_MSG_1261", + 0x331f: "ER_IB_MSG_1262", + 0x3320: "ER_IB_MSG_1263", + 0x3321: "ER_IB_MSG_1264", + 0x3322: "ER_IB_MSG_1265", + 0x3323: "ER_IB_MSG_1266", + 0x3324: "ER_IB_MSG_1267", + 0x3325: "ER_IB_MSG_1268", + 0x3326: "ER_IB_MSG_1269", + 0x3327: "ER_IB_MSG_1270", + 0x3328: "ER_RPL_SLAVE_SQL_THREAD_STOP_CMD_EXEC_TIMEOUT", + 0x3329: "ER_RPL_SLAVE_IO_THREAD_STOP_CMD_EXEC_TIMEOUT", + 0x332a: "ER_RPL_GTID_UNSAFE_STMT_ON_NON_TRANS_TABLE", + 0x332b: "ER_RPL_GTID_UNSAFE_STMT_CREATE_SELECT", + 0x332c: "ER_RPL_GTID_UNSAFE_STMT_ON_TEMPORARY_TABLE", + 0x332d: "ER_BINLOG_ROW_VALUE_OPTION_IGNORED", + 0x332e: "ER_BINLOG_USE_V1_ROW_EVENTS_IGNORED", + 0x332f: "ER_BINLOG_ROW_VALUE_OPTION_USED_ONLY_FOR_AFTER_IMAGES", + 0x3330: "ER_CONNECTION_ABORTED", + 0x3331: "ER_NORMAL_SERVER_SHUTDOWN", + 0x3332: "ER_KEYRING_MIGRATE_FAILED", + 0x3333: "ER_GRP_RPL_LOWER_CASE_TABLE_NAMES_DIFF_FROM_GRP", + 0x3334: "ER_OOM_SAVE_GTIDS", + 0x3335: "ER_LCTN_NOT_FOUND", + 0x3336: "ER_REGEXP_INVALID_CAPTURE_GROUP_NAME", + 0x3337: "ER_COMPONENT_FILTER_WRONG_VALUE", + 0x3338: "ER_XPLUGIN_FAILED_TO_STOP_SERVICES", + 0x3339: "ER_INCONSISTENT_ERROR", + 0x333a: "ER_SERVER_MASTER_FATAL_ERROR_READING_BINLOG", + 0x333b: "ER_NETWORK_READ_EVENT_CHECKSUM_FAILURE", + 0x333c: "ER_SLAVE_CREATE_EVENT_FAILURE", + 0x333d: "ER_SLAVE_FATAL_ERROR", + 0x333e: "ER_SLAVE_HEARTBEAT_FAILURE", + 0x333f: "ER_SLAVE_INCIDENT", + 0x3340: "ER_SLAVE_MASTER_COM_FAILURE", + 0x3341: "ER_SLAVE_RELAY_LOG_READ_FAILURE", + 0x3342: "ER_SLAVE_RELAY_LOG_WRITE_FAILURE", + 0x3343: "ER_SERVER_SLAVE_MI_INIT_REPOSITORY", + 0x3344: "ER_SERVER_SLAVE_RLI_INIT_REPOSITORY", + 0x3345: "ER_SERVER_NET_PACKET_TOO_LARGE", + 0x3346: "ER_SERVER_NO_SYSTEM_TABLE_ACCESS", + 0x3347: "ER_SERVER_UNKNOWN_ERROR", + 0x3348: "ER_SERVER_UNKNOWN_SYSTEM_VARIABLE", + 0x3349: "ER_SERVER_NO_SESSION_TO_SEND_TO", + 0x334a: "ER_SERVER_NEW_ABORTING_CONNECTION", + 0x334b: "ER_SERVER_OUT_OF_SORTMEMORY", + 0x334c: "ER_SERVER_RECORD_FILE_FULL", + 0x334d: "ER_SERVER_DISK_FULL_NOWAIT", + 0x334e: "ER_SERVER_HANDLER_ERROR", + 0x334f: "ER_SERVER_NOT_FORM_FILE", + 0x3350: "ER_SERVER_CANT_OPEN_FILE", + 0x3351: "ER_SERVER_FILE_NOT_FOUND", + 0x3352: "ER_SERVER_FILE_USED", + 0x3353: "ER_SERVER_CANNOT_LOAD_FROM_TABLE_V2", + 0x3354: "ER_ERROR_INFO_FROM_DA", + 0x3355: "ER_SERVER_TABLE_CHECK_FAILED", + 0x3356: "ER_SERVER_COL_COUNT_DOESNT_MATCH_PLEASE_UPDATE_V2", + 0x3357: "ER_SERVER_COL_COUNT_DOESNT_MATCH_CORRUPTED_V2", + 0x3358: "ER_SERVER_ACL_TABLE_ERROR", + 0x3359: "ER_SERVER_SLAVE_INIT_QUERY_FAILED", + 0x335a: "ER_SERVER_SLAVE_CONVERSION_FAILED", + 0x335b: "ER_SERVER_SLAVE_IGNORED_TABLE", + 0x335c: "ER_CANT_REPLICATE_ANONYMOUS_WITH_AUTO_POSITION", + 0x335d: "ER_CANT_REPLICATE_ANONYMOUS_WITH_GTID_MODE_ON", + 0x335e: "ER_CANT_REPLICATE_GTID_WITH_GTID_MODE_OFF", + 0x335f: "ER_SERVER_TEST_MESSAGE", + 0x3360: "ER_AUDIT_LOG_JSON_FILTER_PARSING_ERROR", + 0x3361: "ER_AUDIT_LOG_JSON_FILTERING_NOT_ENABLED", + 0x3362: "ER_PLUGIN_FAILED_TO_OPEN_TABLES", + 0x3363: "ER_PLUGIN_FAILED_TO_OPEN_TABLE", + 0x3364: "ER_AUDIT_LOG_JSON_FILTER_NAME_CANNOT_BE_EMPTY", + 0x3365: "ER_AUDIT_LOG_USER_NAME_INVALID_CHARACTER", + 0x3366: "ER_AUDIT_LOG_UDF_INSUFFICIENT_PRIVILEGE", + 0x3367: "ER_AUDIT_LOG_NO_KEYRING_PLUGIN_INSTALLED", + 0x3368: "ER_AUDIT_LOG_HOST_NAME_INVALID_CHARACTER", + 0x3369: "ER_AUDIT_LOG_ENCRYPTION_PASSWORD_HAS_NOT_BEEN_SET", + 0x336a: "ER_AUDIT_LOG_COULD_NOT_CREATE_AES_KEY", + 0x336b: "ER_AUDIT_LOG_ENCRYPTION_PASSWORD_CANNOT_BE_FETCHED", + 0x336c: "ER_COULD_NOT_REINITIALIZE_AUDIT_LOG_FILTERS", + 0x336d: "ER_AUDIT_LOG_JSON_USER_NAME_CANNOT_BE_EMPTY", + 0x336e: "ER_AUDIT_LOG_USER_FIRST_CHARACTER_MUST_BE_ALPHANUMERIC", + 0x336f: "ER_AUDIT_LOG_JSON_FILTER_DOES_NOT_EXIST", + 0x3370: "ER_IB_MSG_1271", + 0x3371: "ER_STARTING_INIT", + 0x3372: "ER_ENDING_INIT", + 0x3373: "ER_IB_MSG_1272", + 0x3374: "ER_SERVER_SHUTDOWN_INFO", + 0x3375: "ER_GRP_RPL_PLUGIN_ABORT", + 0x3376: "ER_REGEXP_INVALID_FLAG", + 0x3377: "ER_XA_REPLICATION_FILTERS", + 0x3378: "ER_UPDATE_GTID_PURGED_WITH_GR", + 0x3379: "ER_AUDIT_LOG_TABLE_DEFINITION_NOT_UPDATED", + 0x337a: "ER_NO_PATH_FOR_SHARED_LIBRARY", + 0x337b: "ER_UDF_ALREADY_EXISTS", + 0x337c: "ER_SET_EVENT_FAILED", + 0x337d: "ER_FAILED_TO_ALLOCATE_SSL_BIO", + 0x337e: "ER_IB_MSG_1273", + 0x337f: "ER_PID_FILEPATH_LOCATIONS_INACCESSIBLE", + 0x3380: "ER_UNKNOWN_VARIABLE_IN_PERSISTED_CONFIG_FILE", + 0x3381: "ER_FAILED_TO_HANDLE_DEFAULTS_FILE", + 0x3382: "ER_DUPLICATE_SYS_VAR", + 0x3383: "ER_FAILED_TO_INIT_SYS_VAR", + 0x3384: "ER_SYS_VAR_NOT_FOUND", } diff --git a/lib/mysql/mysql.go b/lib/mysql/mysql.go index b0adaf5bd..811409316 100644 --- a/lib/mysql/mysql.go +++ b/lib/mysql/mysql.go @@ -1,11 +1,13 @@ // Package mysql is a very basic MySQL connection library. // Usage: -// var sql *mysql.Connection := mysql.NewConnection(&mysql.Config{ -// Host: targetHost, -// Port: targetPort, -// }) -// err := sql.Connect() -// defer sql.Disconnect() +// +// var sql *mysql.Connection := mysql.NewConnection(&mysql.Config{ +// Host: targetHost, +// Port: targetPort, +// }) +// err := sql.Connect() +// defer sql.Disconnect() +// // The Connection exports the connection details via the ConnectionLog. package mysql @@ -22,8 +24,8 @@ import ( log "github.com/sirupsen/logrus" "github.com/zmap/zgrab2" - "time" "io" + "time" ) const ( @@ -512,7 +514,7 @@ func (e *ERRPacket) GetErrorID() string { func (e *ERRPacket) GetScanError() *zgrab2.ScanError { return &zgrab2.ScanError{ Status: zgrab2.SCAN_APPLICATION_ERROR, - Err: e, + Err: e, } } @@ -639,7 +641,7 @@ func trunc(body []byte, n int) (result string) { // 16 bytes = 32 bytes hex * 2 + ellipses = 3 * 2 + len("[%d bytes]") = 8 + log10(len - 32) // max len = 24 bits ~= 16 million = 8 digits // = 64 + 6 + 8 + 8 <= 96 - return fmt.Sprintf("%x...[%d bytes]...%x", body[:16], n - 32, body[n-16:]) + return fmt.Sprintf("%x...[%d bytes]...%x", body[:16], n-32, body[n-16:]) } // Read a packet and sequence identifier off of the given connection @@ -802,8 +804,8 @@ func readLenInt(body []byte) (uint64, []byte, error) { return uint64(v), body[1:], nil } size := int(v - 0xfa) - if bodyLen - 1 < size { - return 0, nil, fmt.Errorf("invalid data: first byte=0x%02x, required size=%d, got %d", v, size, bodyLen - 1) + if bodyLen-1 < size { + return 0, nil, fmt.Errorf("invalid data: first byte=0x%02x, required size=%d, got %d", v, size, bodyLen-1) } switch v { case 0xfb: @@ -817,7 +819,7 @@ func readLenInt(body []byte) (uint64, []byte, error) { return uint64(binary.LittleEndian.Uint32(body[1:5]) & 0x00ffffff), body[4:], nil case 0xfe: if bodyLen < 9 { - return 0, nil, fmt.Errorf("invalid data: first byte=0xfe, required size=8, got %d", bodyLen - 1) + return 0, nil, fmt.Errorf("invalid data: first byte=0xfe, required size=8, got %d", bodyLen-1) } // eight little-endian bytes return binary.LittleEndian.Uint64(body[1:9]), body[9:], nil diff --git a/lib/output/process.go b/lib/output/process.go index 17e00df17..134a6f178 100644 --- a/lib/output/process.go +++ b/lib/output/process.go @@ -299,7 +299,7 @@ func (processor *Processor) process(v reflect.Value) reflect.Value { } // Process the given value recursively using the options in this processor. -func (processor *Processor) Process(v interface{}) (ret interface{}, err error) { +func (processor *Processor) Process(v any) (ret any, err error) { defer func() { if thrown := recover(); thrown != nil { cast, ok := thrown.(error) @@ -314,6 +314,6 @@ func (processor *Processor) Process(v interface{}) (ret interface{}, err error) } // Process the given value recursively using the default options. -func Process(v interface{}) (interface{}, error) { +func Process(v any) (any, error) { return NewProcessor().Process(v) } diff --git a/lib/output/test/process_test.go b/lib/output/test/process_test.go index 26492187c..e99bb5a6c 100644 --- a/lib/output/test/process_test.go +++ b/lib/output/test/process_test.go @@ -8,7 +8,6 @@ import ( "testing" "crypto/rsa" - "encoding/asn1" "encoding/base64" "encoding/hex" "math/big" @@ -21,6 +20,7 @@ import ( "os/exec" "github.com/sirupsen/logrus" + "github.com/zmap/zcrypto/encoding/asn1" jsonKeys "github.com/zmap/zcrypto/json" "github.com/zmap/zcrypto/tls" "github.com/zmap/zcrypto/x509" @@ -36,13 +36,13 @@ type Strippable interface { Stripped() string } -// JSON encode the value, then decode it as a map[string]interface{}. -func toMap(v interface{}) map[string]interface{} { +// JSON encode the value, then decode it as a map[string]any. +func toMap(v any) map[string]any { ret, err := json.MarshalIndent(v, "", " ") if err != nil { logrus.Fatalf("Error marshaling: %v", err) } - theMap := new(map[string]interface{}) + theMap := new(map[string]any) err = json.Unmarshal(ret, theMap) if err != nil { logrus.Fatalf("Error unmarshaling: %v", err) @@ -52,9 +52,9 @@ func toMap(v interface{}) map[string]interface{} { // Get v[key0][key1]...[keyN], or return nil, error if any values along the way // are nil / not present / not maps. -func mapPath(theMap interface{}, keys ...string) (interface{}, error) { +func mapPath(theMap any, keys ...string) (any, error) { for i, key := range keys { - cast, ok := theMap.(map[string]interface{}) + cast, ok := theMap.(map[string]any) if !ok { return nil, fmt.Errorf("%s in map is not a map", strings.Join(keys[0:i], ".")) } @@ -70,13 +70,13 @@ func mapPath(theMap interface{}, keys ...string) (interface{}, error) { // Set theMap[key0][key1]...[keyN] = value, or return error if any values along // the way are nil / not present / not maps. -func setMapValue(theMap map[string]interface{}, value interface{}, keys ...string) error { +func setMapValue(theMap map[string]any, value any, keys ...string) error { lastIndex := len(keys) - 1 out, err := mapPath(theMap, keys[0:lastIndex]...) if err != nil { return err } - cast, ok := out.(map[string]interface{}) + cast, ok := out.(map[string]any) if !ok { return fmt.Errorf("%s in map is not a map", strings.Join(keys[0:lastIndex], ".")) } @@ -86,13 +86,13 @@ func setMapValue(theMap map[string]interface{}, value interface{}, keys ...strin // delete the value at theMap[key0][key1]...[keyN], or return an error if any // values along the way are nil / not present / not maps. -func delOut(theMap map[string]interface{}, keys ...string) error { +func delOut(theMap map[string]any, keys ...string) error { lastIndex := len(keys) - 1 out, err := mapPath(theMap, keys[0:lastIndex]...) if err != nil { return err } - cast, ok := out.(map[string]interface{}) + cast, ok := out.(map[string]any) if !ok { return fmt.Errorf("%s in map is not a map", strings.Join(keys[0:lastIndex], ".")) } @@ -104,7 +104,7 @@ func delOut(theMap map[string]interface{}, keys ...string) error { // structs' keys are sorted by order in the definition, which can vary between // the original and "stripped" versions, the marshalled text is unmarshaled into // a map (whose keys are sorted alphabetically) and then re-marshaled. -func marshal(v interface{}) string { +func marshal(v any) string { theMap := toMap(v) realRet, err := json.MarshalIndent(theMap, "", " ") if err != nil { @@ -114,7 +114,7 @@ func marshal(v interface{}) string { } // Get the processed copy of v using the given verbosity value. -func process(verbose bool, v interface{}) interface{} { +func process(verbose bool, v any) any { proc := output.NewProcessor() proc.Verbose = verbose ret, err := proc.Process(v) @@ -125,20 +125,20 @@ func process(verbose bool, v interface{}) interface{} { } // Return the marshalled processed copy of v using the given verbosity value. -func strip(verbose bool, v interface{}) string { +func strip(verbose bool, v any) string { theCopy := process(verbose, v) return marshal(theCopy) } // Flat value with a wide variety of types, both debug and non-debug. type Flat struct { - StringValue string `json:"string_value"` - TrueValue bool `json:"true_value"` - FalseValue bool `json:"false_value"` - IntValue int `json:"int_value"` - BytesValue []byte `json:"bytes_value"` - ArrayValue [5]string `json:"array_value"` - InterfaceValue interface{} `json:"interface_value"` + StringValue string `json:"string_value"` + TrueValue bool `json:"true_value"` + FalseValue bool `json:"false_value"` + IntValue int `json:"int_value"` + BytesValue []byte `json:"bytes_value"` + ArrayValue [5]string `json:"array_value"` + InterfaceValue any `json:"interface_value"` PtrStringValue *string `json:"ptr_string_value"` PtrTrueValue *bool `json:"ptr_true_value"` @@ -147,13 +147,13 @@ type Flat struct { PtrBytesValue *[]byte `json:"ptr_bytes_value"` PtrArrayValue *[5]string `json:"ptr_array_value"` - DebugStringValue string `json:"debug_string_value,omitempty" zgrab:"debug"` - DebugTrueValue bool `json:"debug_true_value,omitempty" zgrab:"debug"` - DebugFalseValue bool `json:"debug_false_value,omitempty" zgrab:"debug"` - DebugIntValue int `json:"debug_int_value,omitempty" zgrab:"debug"` - DebugBytesValue []byte `json:"debug_bytes_value,omitempty" zgrab:"debug"` - DebugArrayValue [5]string `json:"debug_array_value,omitempty" zgrab:"debug"` - DebugInterfaceValue interface{} `json:"debug_interface_value,omitempty" zgrab:"debug"` + DebugStringValue string `json:"debug_string_value,omitempty" zgrab:"debug"` + DebugTrueValue bool `json:"debug_true_value,omitempty" zgrab:"debug"` + DebugFalseValue bool `json:"debug_false_value,omitempty" zgrab:"debug"` + DebugIntValue int `json:"debug_int_value,omitempty" zgrab:"debug"` + DebugBytesValue []byte `json:"debug_bytes_value,omitempty" zgrab:"debug"` + DebugArrayValue [5]string `json:"debug_array_value,omitempty" zgrab:"debug"` + DebugInterfaceValue any `json:"debug_interface_value,omitempty" zgrab:"debug"` DebugPtrStringValue *string `json:"debug_ptr_string_value,omitempty" zgrab:"debug"` DebugPtrTrueValue *bool `json:"debug_ptr_true_value,omitempty" zgrab:"debug"` @@ -165,13 +165,13 @@ type Flat struct { type StrippedFlat struct { *Flat - OmitDebugStringValue string `json:"debug_string_value,omitempty" zgrab:"debug"` - OmitDebugTrueValue bool `json:"debug_true_value,omitempty" zgrab:"debug"` - OmitDebugFalseValue bool `json:"debug_false_value,omitempty" zgrab:"debug"` - OmitDebugIntValue int `json:"debug_int_value,omitempty" zgrab:"debug"` - OmitDebugBytesValue []byte `json:"debug_bytes_value,omitempty" zgrab:"debug"` - OmitDebugArrayValue [5]string `json:"debug_array_value,omitempty" zgrab:"debug"` - OmitDebugInterfaceValue interface{} `json:"debug_interface_value,omitempty" zgrab:"debug"` + OmitDebugStringValue string `json:"debug_string_value,omitempty" zgrab:"debug"` + OmitDebugTrueValue bool `json:"debug_true_value,omitempty" zgrab:"debug"` + OmitDebugFalseValue bool `json:"debug_false_value,omitempty" zgrab:"debug"` + OmitDebugIntValue int `json:"debug_int_value,omitempty" zgrab:"debug"` + OmitDebugBytesValue []byte `json:"debug_bytes_value,omitempty" zgrab:"debug"` + OmitDebugArrayValue [5]string `json:"debug_array_value,omitempty" zgrab:"debug"` + OmitDebugInterfaceValue any `json:"debug_interface_value,omitempty" zgrab:"debug"` OmitDebugPtrStringValue *string `json:"debug_ptr_string_value,omitempty" zgrab:"debug"` OmitDebugPtrTrueValue *bool `json:"debug_ptr_true_value,omitempty" zgrab:"debug"` @@ -310,12 +310,12 @@ func getDeep(id string, depth int) *Deep { return ret } -// An arbitrarily deep struct, with its children stored as interface{} fields. +// An arbitrarily deep struct, with its children stored as any fields. type DeepIface struct { - ID string `json:"id"` - DebugID string `json:"debug_id,omitempty" zgrab:"debug"` - Child interface{} `json:"child"` - DebugChild interface{} `json:"debug_child,omitempty" zgrab:"debug"` + ID string `json:"id"` + DebugID string `json:"debug_id,omitempty" zgrab:"debug"` + Child any `json:"child"` + DebugChild any `json:"debug_child,omitempty" zgrab:"debug"` Flat Flat `json:"flat,omitempty"` PtrFlat *Flat `json:"ptr_flat,omitempty"` @@ -326,9 +326,9 @@ type DeepIface struct { type StrippedDeepIface struct { *DeepIface - OmitDebugID string `json:"debug_id,omitempty" zgrab:"debug"` - OverrideChild interface{} `json:"child"` - OmitDebugChild interface{} `json:"debug_child,omitempty" zgrab:"debug"` + OmitDebugID string `json:"debug_id,omitempty" zgrab:"debug"` + OverrideChild any `json:"child"` + OmitDebugChild any `json:"debug_child,omitempty" zgrab:"debug"` OverrideFlat StrippedFlat `json:"flat,omitempty"` OverridePtrFlat *StrippedFlat `json:"ptr_flat,omitempty"` @@ -500,13 +500,13 @@ func getDeepArray(id string, depth int) *DeepArray { return ret } -// An arbitrarily deep struct, with its children stored in a slice of interface{}s. +// An arbitrarily deep struct, with its children stored in a slice of anys. type DeepIfaceSlice struct { ID string `json:"id"` DebugID string `json:"debug_id,omitempty" zgrab:"debug"` - Children []interface{} `json:"children"` - DebugChildren []interface{} `json:"debug_children,omitempty" zgrab:"debug"` + Children []any `json:"children"` + DebugChildren []any `json:"debug_children,omitempty" zgrab:"debug"` Flat Flat `json:"flat,omitempty"` PtrFlat *Flat `json:"ptr_flat,omitempty"` @@ -519,8 +519,8 @@ type StrippedDeepIfaceSlice struct { *DeepIfaceSlice OmitDebugID string `json:"debug_id,omitempty" zgrab:"debug"` - OverrideChildren []interface{} `json:"children"` - OmitDebugChildren []interface{} `json:"debug_children,omitempty" zgrab:"debug"` + OverrideChildren []any `json:"children"` + OmitDebugChildren []any `json:"debug_children,omitempty" zgrab:"debug"` OverrideFlat StrippedFlat `json:"flat,omitempty"` OverridePtrFlat *StrippedFlat `json:"ptr_flat,omitempty"` @@ -535,7 +535,7 @@ func (deep *DeepIfaceSlice) GetStripped() *StrippedDeepIfaceSlice { if len(deep.Children) > 0 { child0 := deep.Children[0].(DeepIfaceSlice) child1 := deep.Children[1].(Flat) - temp.OverrideChildren = []interface{}{ + temp.OverrideChildren = []any{ *(&child0).GetStripped(), *(&child1).GetStripped(), } @@ -562,11 +562,11 @@ func getDeepIfaceSlice(id string, depth int) *DeepIfaceSlice { DebugPtrFlat: getFlat(id + ".debug_ptr_flat"), } if depth > 0 { - ret.Children = []interface{}{ + ret.Children = []any{ *getDeepIfaceSlice(ret.ID+".children[0]", depth-1), *getFlat(id + ".children[1]"), } - ret.DebugChildren = []interface{}{ + ret.DebugChildren = []any{ *getDeepIfaceSlice(ret.ID+".debug_children[0]", depth-1), *getFlat(ret.ID + ".debug_children[1]"), } @@ -574,13 +574,13 @@ func getDeepIfaceSlice(id string, depth int) *DeepIfaceSlice { return ret } -// An arbitrarily deep struct, with its children stored in an array of interface{}s +// An arbitrarily deep struct, with its children stored in an array of anys type DeepIfaceArray struct { ID string `json:"id"` DebugID string `json:"debug_id,omitempty" zgrab:"debug"` - Children [2]interface{} `json:"children"` - DebugChildren [2]interface{} `json:"debug_children,omitempty" zgrab:"debug"` + Children [2]any `json:"children"` + DebugChildren [2]any `json:"debug_children,omitempty" zgrab:"debug"` Flat Flat `json:"flat,omitempty"` PtrFlat *Flat `json:"ptr_flat,omitempty"` @@ -593,8 +593,8 @@ type StrippedDeepIfaceArray struct { *DeepIfaceArray OmitDebugID string `json:"debug_id,omitempty" zgrab:"debug"` - OverrideChildren [2]interface{} `json:"children"` - OmitDebugChildren [2]interface{} `json:"debug_children,omitempty" zgrab:"debug"` + OverrideChildren [2]any `json:"children"` + OmitDebugChildren [2]any `json:"debug_children,omitempty" zgrab:"debug"` OverrideFlat StrippedFlat `json:"flat,omitempty"` OverridePtrFlat *StrippedFlat `json:"ptr_flat,omitempty"` @@ -1050,14 +1050,14 @@ func TestMySQL(t *testing.T) { SerialNumber: big.NewInt(2), Issuer: pkix.Name{ CommonName: "MySQL_Server_8.0.3-rc_Auto_Generated_CA_Certificate", - Names: []pkix.AttributeTypeAndValue{pkix.AttributeTypeAndValue{Type: asn1.ObjectIdentifier{2, 5, 4, 3}, + Names: []pkix.AttributeTypeAndValue{{Type: asn1.ObjectIdentifier{2, 5, 4, 3}, Value: "MySQL_Server_8.0.3-rc_Auto_Generated_CA_Certificate"}}, ExtraNames: []pkix.AttributeTypeAndValue(nil), OriginalRDNS: pkix.RDNSequence{pkix.RelativeDistinguishedNameSET{pkix.AttributeTypeAndValue{Type: asn1.ObjectIdentifier{2, 5, 4, 3}, Value: "MySQL_Server_8.0.3-rc_Auto_Generated_CA_Certificate"}}}}, Subject: pkix.Name{ CommonName: "MySQL_Server_8.0.3-rc_Auto_Generated_Server_Certificate", - Names: []pkix.AttributeTypeAndValue{pkix.AttributeTypeAndValue{Type: asn1.ObjectIdentifier{2, 5, 4, 3}, + Names: []pkix.AttributeTypeAndValue{{Type: asn1.ObjectIdentifier{2, 5, 4, 3}, Value: "MySQL_Server_8.0.3-rc_Auto_Generated_Server_Certificate"}}, ExtraNames: []pkix.AttributeTypeAndValue(nil), OriginalRDNS: pkix.RDNSequence{pkix.RelativeDistinguishedNameSET{pkix.AttributeTypeAndValue{Type: asn1.ObjectIdentifier{2, 5, 4, 3}, diff --git a/lib/smb/gss/gss.go b/lib/smb/gss/gss.go index 9c95c0d71..41cb64845 100644 --- a/lib/smb/gss/gss.go +++ b/lib/smb/gss/gss.go @@ -37,7 +37,7 @@ type NegTokenResp struct { // gsswrapped used to force ASN1 encoding to include explicit sequence tags // Type does not fulfill the BinaryMarshallable interfce and is used only as a // helper to marshal a NegTokenResp -type gsswrapped struct{ G interface{} } +type gsswrapped struct{ G any } func NewNegTokenInit() (NegTokenInit, error) { oid, err := ObjectIDStrToInt(SpnegoOid) diff --git a/lib/smb/ntlmssp/crypto_test.go b/lib/smb/ntlmssp/crypto_test.go index bcd931b5f..cfd05d0a2 100644 --- a/lib/smb/ntlmssp/crypto_test.go +++ b/lib/smb/ntlmssp/crypto_test.go @@ -1,2 +1 @@ package ntlmssp - diff --git a/lib/smb/ntlmssp/ntlmssp_test.go b/lib/smb/ntlmssp/ntlmssp_test.go index 9f941fabc..8a765a92c 100644 --- a/lib/smb/ntlmssp/ntlmssp_test.go +++ b/lib/smb/ntlmssp/ntlmssp_test.go @@ -8,8 +8,8 @@ import ( ) /* - Malformed NTLMSSP challenge, in that the first AvPair has an invalid - type code, and has an absurd (0x910e) length for the field. +Malformed NTLMSSP challenge, in that the first AvPair has an invalid +type code, and has an absurd (0x910e) length for the field. */ const problematicResponse = "" + "\x4e\x54\x4c\x4d\x53\x53\x50\x00\x02\x00\x00\x00\x08\x00\x08\x00" + diff --git a/lib/smb/smb/encoder/encoder.go b/lib/smb/smb/encoder/encoder.go index 427e34147..651d0737a 100644 --- a/lib/smb/smb/encoder/encoder.go +++ b/lib/smb/smb/encoder/encoder.go @@ -19,14 +19,14 @@ type Metadata struct { Tags *TagMap Lens map[string]uint64 Offsets map[string]uint64 - Parent interface{} + Parent any ParentBuf []byte CurrOffset uint64 CurrField string } type TagMap struct { - m map[string]interface{} + m map[string]any has map[string]bool } @@ -34,12 +34,12 @@ func (t TagMap) Has(key string) bool { return t.has[key] } -func (t TagMap) Set(key string, val interface{}) { +func (t TagMap) Set(key string, val any) { t.m[key] = val t.has[key] = true } -func (t TagMap) Get(key string) interface{} { +func (t TagMap) Get(key string) any { return t.m[key] } @@ -59,7 +59,7 @@ func (t TagMap) GetString(key string) (string, error) { func parseTags(sf reflect.StructField) (*TagMap, error) { ret := &TagMap{ - m: make(map[string]interface{}), + m: make(map[string]any), has: make(map[string]bool), } tag := sf.Tag.Get("smb") @@ -187,11 +187,11 @@ func getFieldLengthByName(fieldName string, meta *Metadata) (uint64, error) { return ret, nil } -func Marshal(v interface{}) ([]byte, error) { +func Marshal(v any) ([]byte, error) { return marshal(v, nil) } -func marshal(v interface{}, meta *Metadata) ([]byte, error) { +func marshal(v any, meta *Metadata) ([]byte, error) { var ret []byte tf := reflect.TypeOf(v) vf := reflect.ValueOf(v) @@ -313,7 +313,7 @@ func marshal(v interface{}, meta *Metadata) ([]byte, error) { return w.Bytes(), nil } -func unmarshal(buf []byte, v interface{}, meta *Metadata) (interface{}, error) { +func unmarshal(buf []byte, v any, meta *Metadata) (any, error) { tf := reflect.TypeOf(v) vf := reflect.ValueOf(v) @@ -360,7 +360,7 @@ func unmarshal(buf []byte, v interface{}, meta *Metadata) (interface{}, error) { return nil, err } m.Tags = tags - var data interface{} + var data any switch tf.Field(i).Type.Kind() { case reflect.Struct: data, err = unmarshal(buf[m.CurrOffset:], vf.Field(i).Addr().Interface(), m) @@ -464,7 +464,7 @@ func unmarshal(buf []byte, v interface{}, meta *Metadata) (interface{}, error) { } -func Unmarshal(buf []byte, v interface{}) error { +func Unmarshal(buf []byte, v any) error { _, err := unmarshal(buf, v, nil) return err } diff --git a/lib/smb/smb/session.go b/lib/smb/smb/session.go index fb4f3dd56..6b08c4c70 100644 --- a/lib/smb/smb/session.go +++ b/lib/smb/smb/session.go @@ -330,7 +330,7 @@ func (s *Session) TreeDisconnect(name string) error { func (s *Session) Close() { s.Debug("Closing session", nil) - for k, _ := range s.trees { + for k := range s.trees { s.TreeDisconnect(k) } s.Debug("Closing TCP connection", nil) @@ -338,7 +338,7 @@ func (s *Session) Close() { s.Debug("Session close completed", nil) } -func (s *Session) send(req interface{}) (res []byte, err error) { +func (s *Session) send(req any) (res []byte, err error) { buf, err := encoder.Marshal(req) if err != nil { s.Debug("", err) diff --git a/lib/smb/smb/smb.go b/lib/smb/smb/smb.go index 1d536518e..b1c2dd855 100644 --- a/lib/smb/smb/smb.go +++ b/lib/smb/smb/smb.go @@ -170,7 +170,7 @@ type NegotiateResV1 struct { ServerTimezon uint16 ChallengeLength uint8 ByteCount uint16 `smb:"len:VarData"` - VarData []byte + VarData []byte } type NegotiateReq struct { diff --git a/lib/ssh/agent/client.go b/lib/ssh/agent/client.go index e5569dee6..ff0813864 100644 --- a/lib/ssh/agent/client.go +++ b/lib/ssh/agent/client.go @@ -8,7 +8,8 @@ // ssh-agent process using the sample server. // // References: -// [PROTOCOL.agent]: http://cvsweb.openbsd.org/cgi-bin/cvsweb/src/usr.bin/ssh/PROTOCOL.agent?rev=HEAD +// +// [PROTOCOL.agent]: http://cvsweb.openbsd.org/cgi-bin/cvsweb/src/usr.bin/ssh/PROTOCOL.agent?rev=HEAD package agent // import "github.com/zmap/zgrab2/lib/ssh/agent" import ( @@ -61,7 +62,7 @@ type Agent interface { type AddedKey struct { // PrivateKey must be a *rsa.PrivateKey, *dsa.PrivateKey or // *ecdsa.PrivateKey, which will be inserted into the agent. - PrivateKey interface{} + PrivateKey any // Certificate, if not nil, is communicated to the agent and will be // stored with the key. Certificate *ssh.Certificate @@ -243,7 +244,7 @@ func NewClient(rw io.ReadWriter) Agent { // call sends an RPC to the agent. On success, the reply is // unmarshaled into reply and replyType is set to the first byte of // the reply, which contains the type of the message. -func (c *client) call(req []byte) (reply interface{}, err error) { +func (c *client) call(req []byte) (reply any, err error) { c.mu.Lock() defer c.mu.Unlock() @@ -371,11 +372,11 @@ func (c *client) Sign(key ssh.PublicKey, data []byte) (*ssh.Signature, error) { // unmarshal parses an agent message in packet, returning the parsed // form and the message type of packet. -func unmarshal(packet []byte) (interface{}, error) { +func unmarshal(packet []byte) (any, error) { if len(packet) < 1 { return nil, errors.New("agent: empty packet") } - var msg interface{} + var msg any switch packet[0] { case agentFailure: return new(failureAgentMsg), nil @@ -437,7 +438,7 @@ type ed25519KeyMsg struct { } // Insert adds a private key to the agent. -func (c *client) insertKey(s interface{}, comment string, constraints []byte) error { +func (c *client) insertKey(s any, comment string, constraints []byte) error { var req []byte switch k := s.(type) { case *rsa.PrivateKey: @@ -564,7 +565,7 @@ func (c *client) Add(key AddedKey) error { } } -func (c *client) insertCert(s interface{}, cert *ssh.Certificate, comment string, constraints []byte) error { +func (c *client) insertCert(s any, cert *ssh.Certificate, comment string, constraints []byte) error { var req []byte switch k := s.(type) { case *rsa.PrivateKey: diff --git a/lib/ssh/agent/client_test.go b/lib/ssh/agent/client_test.go index 19da9943f..8095219cc 100644 --- a/lib/ssh/agent/client_test.go +++ b/lib/ssh/agent/client_test.go @@ -79,19 +79,19 @@ func startAgent(t *testing.T) (client Agent, socket string, cleanup func()) { } } -func testAgent(t *testing.T, key interface{}, cert *ssh.Certificate, lifetimeSecs uint32) { +func testAgent(t *testing.T, key any, cert *ssh.Certificate, lifetimeSecs uint32) { agent, _, cleanup := startAgent(t) defer cleanup() testAgentInterface(t, agent, key, cert, lifetimeSecs) } -func testKeyring(t *testing.T, key interface{}, cert *ssh.Certificate, lifetimeSecs uint32) { +func testKeyring(t *testing.T, key any, cert *ssh.Certificate, lifetimeSecs uint32) { a := NewKeyring() testAgentInterface(t, a, key, cert, lifetimeSecs) } -func testAgentInterface(t *testing.T, agent Agent, key interface{}, cert *ssh.Certificate, lifetimeSecs uint32) { +func testAgentInterface(t *testing.T, agent Agent, key any, cert *ssh.Certificate, lifetimeSecs uint32) { signer, err := ssh.NewSignerFromKey(key) if err != nil { t.Fatalf("NewSignerFromKey(%T): %v", key, err) diff --git a/lib/ssh/agent/example_test.go b/lib/ssh/agent/example_test.go index 9f29bf5a1..9b588a0e7 100644 --- a/lib/ssh/agent/example_test.go +++ b/lib/ssh/agent/example_test.go @@ -9,8 +9,8 @@ import ( "net" "os" - "github.com/zmap/zgrab2/lib/ssh/agent" "github.com/zmap/zgrab2/lib/ssh" + "github.com/zmap/zgrab2/lib/ssh/agent" ) func ExampleClientAgent() { diff --git a/lib/ssh/agent/server.go b/lib/ssh/agent/server.go index bd0b2011f..9e690e2e6 100644 --- a/lib/ssh/agent/server.go +++ b/lib/ssh/agent/server.go @@ -73,7 +73,7 @@ type agentUnlockMsg struct { Passphrase []byte `sshtype:"23"` } -func (s *server) processRequest(data []byte) (interface{}, error) { +func (s *server) processRequest(data []byte) (any, error) { switch data[0] { case agentRequestV1Identities: return &agentV1IdentityMsg{0}, nil diff --git a/lib/ssh/agent/testdata_test.go b/lib/ssh/agent/testdata_test.go index 25ff3d542..f39bafecd 100644 --- a/lib/ssh/agent/testdata_test.go +++ b/lib/ssh/agent/testdata_test.go @@ -17,7 +17,7 @@ import ( ) var ( - testPrivateKeys map[string]interface{} + testPrivateKeys map[string]any testSigners map[string]ssh.Signer testPublicKeys map[string]ssh.PublicKey ) @@ -26,7 +26,7 @@ func init() { var err error n := len(testdata.PEMBytes) - testPrivateKeys = make(map[string]interface{}, n) + testPrivateKeys = make(map[string]any, n) testSigners = make(map[string]ssh.Signer, n) testPublicKeys = make(map[string]ssh.PublicKey, n) for t, k := range testdata.PEMBytes { diff --git a/lib/ssh/certs_test.go b/lib/ssh/certs_test.go index c5f2e5330..e2cc7e7e3 100644 --- a/lib/ssh/certs_test.go +++ b/lib/ssh/certs_test.go @@ -44,14 +44,17 @@ func TestParseCert(t *testing.T) { // % ssh-keygen -s ca -I testcert -O source-address=192.168.1.0/24 -O force-command=/bin/sleep user.pub // user.pub key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDACh1rt2DXfV3hk6fszSQcQ/rueMId0kVD9U7nl8cfEnFxqOCrNT92g4laQIGl2mn8lsGZfTLg8ksHq3gkvgO3oo/0wHy4v32JeBOHTsN5AL4gfHNEhWeWb50ev47hnTsRIt9P4dxogeUo/hTu7j9+s9lLpEQXCvq6xocXQt0j8MV9qZBBXFLXVT3cWIkSqOdwt/5ZBg+1GSrc7WfCXVWgTk4a20uPMuJPxU4RQwZW6X3+O8Pqo8C3cW0OzZRFP6gUYUKUsTI5WntlS+LAxgw1mZNsozFGdbiOPRnEryE3SRldh9vjDR3tin1fGpA5P7+CEB/bqaXtG3V+F2OkqaMN // Critical Options: -// force-command /bin/sleep -// source-address 192.168.1.0/24 +// +// force-command /bin/sleep +// source-address 192.168.1.0/24 +// // Extensions: -// permit-X11-forwarding -// permit-agent-forwarding -// permit-port-forwarding -// permit-pty -// permit-user-rc +// +// permit-X11-forwarding +// permit-agent-forwarding +// permit-port-forwarding +// permit-pty +// permit-user-rc const exampleSSHCertWithOptions = `ssh-rsa-cert-v01@openssh.com AAAAHHNzaC1yc2EtY2VydC12MDFAb3BlbnNzaC5jb20AAAAgDyysCJY0XrO1n03EeRRoITnTPdjENFmWDs9X58PP3VUAAAADAQABAAABAQDACh1rt2DXfV3hk6fszSQcQ/rueMId0kVD9U7nl8cfEnFxqOCrNT92g4laQIGl2mn8lsGZfTLg8ksHq3gkvgO3oo/0wHy4v32JeBOHTsN5AL4gfHNEhWeWb50ev47hnTsRIt9P4dxogeUo/hTu7j9+s9lLpEQXCvq6xocXQt0j8MV9qZBBXFLXVT3cWIkSqOdwt/5ZBg+1GSrc7WfCXVWgTk4a20uPMuJPxU4RQwZW6X3+O8Pqo8C3cW0OzZRFP6gUYUKUsTI5WntlS+LAxgw1mZNsozFGdbiOPRnEryE3SRldh9vjDR3tin1fGpA5P7+CEB/bqaXtG3V+F2OkqaMNAAAAAAAAAAAAAAABAAAACHRlc3RjZXJ0AAAAAAAAAAAAAAAA//////////8AAABLAAAADWZvcmNlLWNvbW1hbmQAAAAOAAAACi9iaW4vc2xlZXAAAAAOc291cmNlLWFkZHJlc3MAAAASAAAADjE5Mi4xNjguMS4wLzI0AAAAggAAABVwZXJtaXQtWDExLWZvcndhcmRpbmcAAAAAAAAAF3Blcm1pdC1hZ2VudC1mb3J3YXJkaW5nAAAAAAAAABZwZXJtaXQtcG9ydC1mb3J3YXJkaW5nAAAAAAAAAApwZXJtaXQtcHR5AAAAAAAAAA5wZXJtaXQtdXNlci1yYwAAAAAAAAAAAAABFwAAAAdzc2gtcnNhAAAAAwEAAQAAAQEAwU+c5ui5A8+J/CFpjW8wCa52bEODA808WWQDCSuTG/eMXNf59v9Y8Pk0F1E9dGCosSNyVcB/hacUrc6He+i97+HJCyKavBsE6GDxrjRyxYqAlfcOXi/IVmaUGiO8OQ39d4GHrjToInKvExSUeleQyH4Y4/e27T/pILAqPFL3fyrvMLT5qU9QyIt6zIpa7GBP5+urouNavMprV3zsfIqNBbWypinOQAw823a5wN+zwXnhZrgQiHZ/USG09Y6k98y1dTVz8YHlQVR4D3lpTAsKDKJ5hCH9WU4fdf+lU8OyNGaJ/vz0XNqxcToe1l4numLTnaoSuH89pHryjqurB7lJKwAAAQ8AAAAHc3NoLXJzYQAAAQCaHvUIoPL1zWUHIXLvu96/HU1s/i4CAW2IIEuGgxCUCiFj6vyTyYtgxQxcmbfZf6eaITlS6XJZa7Qq4iaFZh75C1DXTX8labXhRSD4E2t//AIP9MC1rtQC5xo6FmbQ+BoKcDskr+mNACcbRSxs3IL3bwCfWDnIw2WbVox9ZdcthJKk4UoCW4ix4QwdHw7zlddlz++fGEEVhmTbll1SUkycGApPFBsAYRTMupUJcYPIeReBI/m8XfkoMk99bV8ZJQTAd7OekHY2/48Ff53jLmyDjP7kNw1F8OaPtkFs6dGJXta4krmaekPy87j+35In5hFj7yoOqvSbmYUkeX70/GGQ` func TestParseCertWithOptions(t *testing.T) { diff --git a/lib/ssh/channel.go b/lib/ssh/channel.go index 6d709b50b..e8ad9f20d 100644 --- a/lib/ssh/channel.go +++ b/lib/ssh/channel.go @@ -171,7 +171,7 @@ type channel struct { direction channelDirection // Pending internal channel messages. - msg chan interface{} + msg chan any // Since requests have no ID, there can be only one request // with WantReply=true outstanding. This lock is held by a @@ -217,7 +217,7 @@ func (c *channel) writePacket(packet []byte) error { return err } -func (c *channel) sendMessage(msg interface{}) error { +func (c *channel) sendMessage(msg any) error { if debugMux { log.Printf("send(%d): %#v", c.mux.chanList.offset, msg) } @@ -462,7 +462,7 @@ func (m *mux) newChannel(chanType string, direction channelDirection, extraData extPending: newBuffer(), direction: direction, incomingRequests: make(chan *Request, 16), - msg: make(chan interface{}, 16), + msg: make(chan any, 16), chanType: chanType, extraData: extraData, mux: m, @@ -611,7 +611,7 @@ func (ch *channel) ackRequest(ok bool) error { return errUndecided } - var msg interface{} + var msg any if !ok { msg = channelRequestFailureMsg{ PeersId: ch.remoteId, diff --git a/lib/ssh/doc.go b/lib/ssh/doc.go index a5ff8af6b..0253b4bda 100644 --- a/lib/ssh/doc.go +++ b/lib/ssh/doc.go @@ -12,7 +12,8 @@ the multiplexed nature of SSH is exposed to users that wish to support others. References: - [PROTOCOL.certkeys]: http://cvsweb.openbsd.org/cgi-bin/cvsweb/src/usr.bin/ssh/PROTOCOL.certkeys?rev=HEAD - [SSH-PARAMETERS]: http://www.iana.org/assignments/ssh-parameters/ssh-parameters.xml#ssh-parameters-1 + + [PROTOCOL.certkeys]: http://cvsweb.openbsd.org/cgi-bin/cvsweb/src/usr.bin/ssh/PROTOCOL.certkeys?rev=HEAD + [SSH-PARAMETERS]: http://www.iana.org/assignments/ssh-parameters/ssh-parameters.xml#ssh-parameters-1 */ package ssh diff --git a/lib/ssh/kex_test.go b/lib/ssh/kex_test.go index 12ca0acd3..df15aad3b 100644 --- a/lib/ssh/kex_test.go +++ b/lib/ssh/kex_test.go @@ -25,12 +25,12 @@ func TestKexes(t *testing.T) { c := make(chan kexResultErr, 1) var magics handshakeMagics go func() { - r, e := kex.Client(a, rand.Reader, &magics) + r, e := kex.Client(a, rand.Reader, &magics, nil) a.Close() c <- kexResultErr{r, e} }() go func() { - r, e := kex.Server(b, rand.Reader, &magics, testSigners["ecdsa"]) + r, e := kex.Server(b, rand.Reader, &magics, testSigners["ecdsa"], nil) b.Close() s <- kexResultErr{r, e} }() diff --git a/lib/ssh/keys.go b/lib/ssh/keys.go index c7db80707..090a66137 100644 --- a/lib/ssh/keys.go +++ b/lib/ssh/keys.go @@ -512,7 +512,7 @@ func (key ed25519PublicKey) Type() string { } func (key ed25519PublicKey) MarshalJSON() ([]byte, error) { - temp := make(map[string]interface{}) + temp := make(map[string]any) baseKey := (ed25519.PublicKey)(key) temp["public_bytes"] = ([]byte)(baseKey) return json.Marshal(temp) @@ -663,7 +663,7 @@ func (k *ecdsaPublicKey) CryptoPublicKey() crypto.PublicKey { // NewSignerFromKey takes an *rsa.PrivateKey, *dsa.PrivateKey, // *ecdsa.PrivateKey or any other crypto.Signer and returns a corresponding // Signer instance. ECDSA keys must use P-256, P-384 or P-521. -func NewSignerFromKey(key interface{}) (Signer, error) { +func NewSignerFromKey(key any) (Signer, error) { switch key := key.(type) { case crypto.Signer: return NewSignerFromSigner(key) @@ -758,7 +758,7 @@ func (s *wrappedSigner) Sign(rand io.Reader, data []byte) (*Signature, error) { // NewPublicKey takes an *rsa.PublicKey, *dsa.PublicKey, *ecdsa.PublicKey, // or ed25519.PublicKey returns a corresponding PublicKey instance. // ECDSA keys must use P-256, P-384 or P-521. -func NewPublicKey(key interface{}) (PublicKey, error) { +func NewPublicKey(key any) (PublicKey, error) { switch key := key.(type) { case *rsa.PublicKey: return (*rsaPublicKey)(key), nil @@ -797,7 +797,7 @@ func encryptedBlock(block *pem.Block) bool { // ParseRawPrivateKey returns a private key from a PEM encoded private key. It // supports RSA (PKCS#1), DSA (OpenSSL), and ECDSA private keys. -func ParseRawPrivateKey(pemBytes []byte) (interface{}, error) { +func ParseRawPrivateKey(pemBytes []byte) (any, error) { block, _ := pem.Decode(pemBytes) if block == nil { return nil, errors.New("ssh: no key found") diff --git a/lib/ssh/keys_test.go b/lib/ssh/keys_test.go index e9a55d792..d6dba8b2f 100644 --- a/lib/ssh/keys_test.go +++ b/lib/ssh/keys_test.go @@ -6,7 +6,6 @@ package ssh import ( "bytes" - "crypto/dsa" "crypto/ecdsa" "crypto/elliptic" "crypto/rand" @@ -21,12 +20,12 @@ import ( "golang.org/x/crypto/ed25519" ) -func rawKey(pub PublicKey) interface{} { +func rawKey(pub PublicKey) any { switch k := pub.(type) { case *rsaPublicKey: return (*rsa.PublicKey)(k) case *dsaPublicKey: - return (*dsa.PublicKey)(k) + return (*dsaPublicKey)(k) case *ecdsaPublicKey: return (*ecdsa.PublicKey)(k) case ed25519PublicKey: diff --git a/lib/ssh/messages.go b/lib/ssh/messages.go index a32674489..d5920a8d4 100644 --- a/lib/ssh/messages.go +++ b/lib/ssh/messages.go @@ -6,7 +6,9 @@ package ssh import ( "bytes" + "crypto/md5" "encoding/binary" + "encoding/hex" "encoding/json" "errors" "fmt" @@ -84,6 +86,7 @@ type JsonKexInitMsg struct { LanguagesServerClient []string `json:"server_to_client_languages,omitempty"` FirstKexFollows bool `json:"first_kex_follows"` Reserved uint32 `json:"reserved"` + ServerHaSSH string `json:"serverHaSSH"` } func (kex *KexInitMsg) MarshalJSON() ([]byte, error) { @@ -101,10 +104,23 @@ func (kex *KexInitMsg) MarshalJSON() ([]byte, error) { LanguagesServerClient: kex.LanguagesServerClient, FirstKexFollows: kex.FirstKexFollows, Reserved: kex.Reserved, + ServerHaSSH: kex.GenerateServerHaSSH(), } return json.Marshal(temp) } +func (kex *KexInitMsg) GenerateServerHaSSH() string { + input := strings.Join( + []string{ + strings.Join(kex.KexAlgos, ","), + strings.Join(kex.CiphersServerClient, ","), + strings.Join(kex.MACsServerClient, ","), + strings.Join(kex.CompressionServerClient, ","), + }, ";") + md5 := md5.Sum([]byte(input)) + return hex.EncodeToString(md5[:]) +} + // See RFC 4253, section 8. // Diffie-Helman @@ -341,7 +357,7 @@ var errShortRead = errors.New("ssh: short read") // in decimal, the packet must start with one of those numbers. In // case of error, Unmarshal returns a ParseError or // UnexpectedMessageError. -func Unmarshal(data []byte, out interface{}) error { +func Unmarshal(data []byte, out any) error { v := reflect.ValueOf(out).Elem() structType := v.Type() expectedTypes := typeTags(structType) @@ -464,12 +480,12 @@ func Unmarshal(data []byte, out interface{}) error { // member has the "sshtype" tag set to a number in decimal, that // number is prepended to the result. If the last of member has the // "ssh" tag set to "rest", its contents are appended to the output. -func Marshal(msg interface{}) []byte { +func Marshal(msg any) []byte { out := make([]byte, 0, 64) return marshalStruct(out, msg) } -func marshalStruct(out []byte, msg interface{}) []byte { +func marshalStruct(out []byte, msg any) []byte { v := reflect.Indirect(reflect.ValueOf(msg)) msgTypes := typeTags(v.Type()) if len(msgTypes) > 0 { @@ -743,8 +759,8 @@ func marshalString(to []byte, s []byte) []byte { var bigIntType = reflect.TypeOf((*big.Int)(nil)) // Decode a packet into its corresponding message. -func decode(packet []byte) (interface{}, error) { - var msg interface{} +func decode(packet []byte) (any, error) { + var msg any switch packet[0] { case msgDisconnect: msg = new(disconnectMsg) diff --git a/lib/ssh/messages_test.go b/lib/ssh/messages_test.go index ae7a73471..985b146b7 100644 --- a/lib/ssh/messages_test.go +++ b/lib/ssh/messages_test.go @@ -206,6 +206,29 @@ func TestMarshalMultiTag(t *testing.T) { } } +func TestHaSSH(t *testing.T) { + ki := &KexInitMsg{} + randSource := rand.New(rand.NewSource(0)) + randomBytes(ki.Cookie[:], randSource) + ki.KexAlgos = []string{"curve25519-sha256@libssh.org", "diffie-hellman-group-exchange-sha256", "ecdh-sha2-nistp521", "ecdh-sha2-nistp384", "ecdh-sha2-nistp256", "diffie-hellman-group-exchange-sha1", "diffie-hellman-group1-sha1", "diffie-hellman-group14-sha1", "diffie-hellman-group14-sha256", "diffie-hellman-group15-sha512", "diffie-hellman-group16-sha512", "diffie-hellman-group17-sha512", "diffie-hellman-group18-sha512", "diffie-hellman-group14-sha256@ssh.com", "diffie-hellman-group15-sha256", "diffie-hellman-group15-sha256@ssh.com", "diffie-hellman-group15-sha384@ssh.com", "diffie-hellman-group16-sha256", "diffie-hellman-group16-sha384@ssh.com", "diffie-hellman-group16-sha512@ssh.com", "diffie-hellman-group18-sha512@ssh.com"} + ki.ServerHostKeyAlgos = randomNameList(randSource) + ki.CiphersClientServer = randomNameList(randSource) + ki.CiphersServerClient = []string{"aes128-cbc", "aes128-ctr", "aes192-cbc", "aes192-ctr", "aes256-cbc", "aes256-ctr", "blowfish-cbc", "blowfish-ctr", "cast128-cbc", "cast128-ctr", "idea-cbc", "idea-ctr", "serpent128-cbc", "serpent128-ctr", "serpent192-cbc", "serpent192-ctr", "serpent256-cbc", "serpent256-ctr", "3des-cbc", "3des-ctr", "twofish128-cbc", "twofish128-ctr", "twofish192-cbc", "twofish192-ctr", "twofish256-cbc", "twofish256-ctr", "twofish-cbc", "arcfour", "arcfour128", "arcfour256"} + ki.MACsClientServer = randomNameList(randSource) + ki.MACsServerClient = []string{"hmac-sha1", "hmac-sha1-96", "hmac-md5", "hmac-md5-96", "hmac-sha2-256", "hmac-sha2-512"} + ki.CompressionClientServer = randomNameList(randSource) + ki.CompressionServerClient = []string{"zlib@openssh.com", "zlib", "none"} + ki.LanguagesClientServer = randomNameList(randSource) + ki.LanguagesServerClient = randomNameList(randSource) + ki.FirstKexFollows = true + + hassh := ki.GenerateServerHaSSH() + expected := "8a8ae540028bf433cd68356c1b9e8d5b" + if hassh != expected { + t.Errorf("Unexpected hash. Wanted %s, got %s", expected, hassh) + } +} + func randomBytes(out []byte, rand *rand.Rand) { for i := 0; i < len(out); i++ { out[i] = byte(rand.Int31()) diff --git a/lib/ssh/mux.go b/lib/ssh/mux.go index f3a3ddd78..762de97e1 100644 --- a/lib/ssh/mux.go +++ b/lib/ssh/mux.go @@ -92,7 +92,7 @@ type mux struct { incomingChannels chan NewChannel globalSentMu sync.Mutex - globalResponses chan interface{} + globalResponses chan any incomingRequests chan *Request errCond *sync.Cond @@ -117,7 +117,7 @@ func newMux(p packetConn) *mux { m := &mux{ conn: p, incomingChannels: make(chan NewChannel, 16), - globalResponses: make(chan interface{}, 1), + globalResponses: make(chan any, 1), incomingRequests: make(chan *Request, 16), errCond: newCond(), } @@ -129,7 +129,7 @@ func newMux(p packetConn) *mux { return m } -func (m *mux) sendMessage(msg interface{}) error { +func (m *mux) sendMessage(msg any) error { p := Marshal(msg) if debugMux { log.Printf("send global(%d): %#v", m.chanList.offset, msg) diff --git a/lib/ssh/server.go b/lib/ssh/server.go index 6f849326a..1e2994110 100644 --- a/lib/ssh/server.go +++ b/lib/ssh/server.go @@ -65,7 +65,7 @@ func (jOptions *JsonCriticalOptions) MarshalJSON() ([]byte, error) { } } - temp := make(map[string]interface{}) + temp := make(map[string]any) if len(knownOpt) > 0 { temp["known"] = knownOpt } @@ -101,7 +101,7 @@ func (ext *JsonExtensions) MarshalJSON() ([]byte, error) { } } - temp := make(map[string]interface{}) + temp := make(map[string]any) if len(knownExt) > 0 { temp["known"] = knownExt } diff --git a/lib/ssh/terminal/util.go b/lib/ssh/terminal/util.go index 1d0174ce3..1d73d5f0a 100644 --- a/lib/ssh/terminal/util.go +++ b/lib/ssh/terminal/util.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build darwin || dragonfly || freebsd || (linux && !appengine) || netbsd || openbsd // +build darwin dragonfly freebsd linux,!appengine netbsd openbsd // Package terminal provides support functions for dealing with terminals, as @@ -9,11 +10,11 @@ // // Putting a terminal into raw mode is the most common requirement: // -// oldState, err := terminal.MakeRaw(0) -// if err != nil { -// panic(err) -// } -// defer terminal.Restore(0, oldState) +// oldState, err := terminal.MakeRaw(0) +// if err != nil { +// panic(err) +// } +// defer terminal.Restore(0, oldState) package terminal // import "github.com/zmap/zgrab2/lib/ssh/terminal" import ( diff --git a/lib/ssh/terminal/util_bsd.go b/lib/ssh/terminal/util_bsd.go index 9c1ffd145..10711a71a 100644 --- a/lib/ssh/terminal/util_bsd.go +++ b/lib/ssh/terminal/util_bsd.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build darwin || dragonfly || freebsd || netbsd || openbsd // +build darwin dragonfly freebsd netbsd openbsd package terminal diff --git a/lib/ssh/terminal/util_plan9.go b/lib/ssh/terminal/util_plan9.go index 799f049f0..a020c41fb 100644 --- a/lib/ssh/terminal/util_plan9.go +++ b/lib/ssh/terminal/util_plan9.go @@ -7,11 +7,11 @@ // // Putting a terminal into raw mode is the most common requirement: // -// oldState, err := terminal.MakeRaw(0) -// if err != nil { -// panic(err) -// } -// defer terminal.Restore(0, oldState) +// oldState, err := terminal.MakeRaw(0) +// if err != nil { +// panic(err) +// } +// defer terminal.Restore(0, oldState) package terminal import ( diff --git a/lib/ssh/terminal/util_solaris.go b/lib/ssh/terminal/util_solaris.go index d0d9379d3..0c2eac6a8 100644 --- a/lib/ssh/terminal/util_solaris.go +++ b/lib/ssh/terminal/util_solaris.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build solaris // +build solaris package terminal // import "github.com/zmap/zgrab2/lib/ssh/terminal" diff --git a/lib/ssh/terminal/util_windows.go b/lib/ssh/terminal/util_windows.go index ae9fa9ec1..74395f001 100644 --- a/lib/ssh/terminal/util_windows.go +++ b/lib/ssh/terminal/util_windows.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build windows // +build windows // Package terminal provides support functions for dealing with terminals, as @@ -9,11 +10,11 @@ // // Putting a terminal into raw mode is the most common requirement: // -// oldState, err := terminal.MakeRaw(0) -// if err != nil { -// panic(err) -// } -// defer terminal.Restore(0, oldState) +// oldState, err := terminal.MakeRaw(0) +// if err != nil { +// panic(err) +// } +// defer terminal.Restore(0, oldState) package terminal import ( diff --git a/lib/ssh/test/agent_unix_test.go b/lib/ssh/test/agent_unix_test.go index ad995d3a1..17f4fc1ee 100644 --- a/lib/ssh/test/agent_unix_test.go +++ b/lib/ssh/test/agent_unix_test.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build darwin || dragonfly || freebsd || linux || netbsd || openbsd // +build darwin dragonfly freebsd linux netbsd openbsd package test diff --git a/lib/ssh/test/cert_test.go b/lib/ssh/test/cert_test.go index 96fd7ec17..039730c3a 100644 --- a/lib/ssh/test/cert_test.go +++ b/lib/ssh/test/cert_test.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build darwin || dragonfly || freebsd || linux || netbsd || openbsd // +build darwin dragonfly freebsd linux netbsd openbsd package test diff --git a/lib/ssh/test/forward_unix_test.go b/lib/ssh/test/forward_unix_test.go index 69c3f2486..af1307c88 100644 --- a/lib/ssh/test/forward_unix_test.go +++ b/lib/ssh/test/forward_unix_test.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build darwin || dragonfly || freebsd || linux || netbsd || openbsd // +build darwin dragonfly freebsd linux netbsd openbsd package test diff --git a/lib/ssh/test/session_test.go b/lib/ssh/test/session_test.go index ce07daff2..d12f42424 100644 --- a/lib/ssh/test/session_test.go +++ b/lib/ssh/test/session_test.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build !windows // +build !windows package test diff --git a/lib/ssh/test/tcpip_test.go b/lib/ssh/test/tcpip_test.go index 2fd6fd690..160502bc4 100644 --- a/lib/ssh/test/tcpip_test.go +++ b/lib/ssh/test/tcpip_test.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build !windows // +build !windows package test diff --git a/lib/ssh/test/test_unix_test.go b/lib/ssh/test/test_unix_test.go index 0c560d6de..8919c7b30 100644 --- a/lib/ssh/test/test_unix_test.go +++ b/lib/ssh/test/test_unix_test.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build darwin || dragonfly || freebsd || linux || netbsd || openbsd || plan9 // +build darwin dragonfly freebsd linux netbsd openbsd plan9 package test diff --git a/lib/ssh/test/testdata_test.go b/lib/ssh/test/testdata_test.go index 182c919a5..8fa5edafa 100644 --- a/lib/ssh/test/testdata_test.go +++ b/lib/ssh/test/testdata_test.go @@ -17,7 +17,7 @@ import ( ) var ( - testPrivateKeys map[string]interface{} + testPrivateKeys map[string]any testSigners map[string]ssh.Signer testPublicKeys map[string]ssh.PublicKey ) @@ -26,7 +26,7 @@ func init() { var err error n := len(testdata.PEMBytes) - testPrivateKeys = make(map[string]interface{}, n) + testPrivateKeys = make(map[string]any, n) testSigners = make(map[string]ssh.Signer, n) testPublicKeys = make(map[string]ssh.PublicKey, n) for t, k := range testdata.PEMBytes { @@ -46,7 +46,7 @@ func init() { Nonce: []byte{}, // To pass reflect.DeepEqual after marshal & parse, this must be non-nil ValidPrincipals: []string{"gopher1", "gopher2"}, // increases test coverage ValidAfter: 0, // unix epoch - ValidBefore: ssh.CertTimeInfinity, // The end of currently representable time. + ValidBefore: ssh.CertTimeInfinity, // The end of currently representable time. Reserved: []byte{}, // To pass reflect.DeepEqual after marshal & parse, this must be non-nil Key: testPublicKeys["ecdsa"], SignatureKey: testPublicKeys["rsa"], diff --git a/lib/ssh/testdata_test.go b/lib/ssh/testdata_test.go index 2447e7511..ae8dff3e4 100644 --- a/lib/ssh/testdata_test.go +++ b/lib/ssh/testdata_test.go @@ -16,7 +16,7 @@ import ( ) var ( - testPrivateKeys map[string]interface{} + testPrivateKeys map[string]any testSigners map[string]Signer testPublicKeys map[string]PublicKey ) @@ -25,7 +25,7 @@ func init() { var err error n := len(testdata.PEMBytes) - testPrivateKeys = make(map[string]interface{}, n) + testPrivateKeys = make(map[string]any, n) testSigners = make(map[string]Signer, n) testPublicKeys = make(map[string]PublicKey, n) for t, k := range testdata.PEMBytes { diff --git a/module.go b/module.go index efce70c13..9da966e23 100644 --- a/module.go +++ b/module.go @@ -21,7 +21,7 @@ type Scanner interface { Protocol() string // Scan connects to a host. The result should be JSON-serializable - Scan(t ScanTarget) (ScanStatus, interface{}, error) + Scan(t ScanTarget) (ScanStatus, any, error) } // ScanResponse is the result of a scan on a single host @@ -33,32 +33,29 @@ type ScanResponse struct { // the scan name. Protocol string `json:"protocol"` - Result interface{} `json:"result,omitempty"` - Timestamp string `json:"timestamp,omitempty"` - Error *string `json:"error,omitempty"` + Result any `json:"result,omitempty"` + Timestamp string `json:"timestamp,omitempty"` + Error *string `json:"error,omitempty"` } -// ScanModule is an interface which represents a module that the framework can -// manipulate +// ScanModule is an interface which represents a module that the framework can manipulate type ScanModule interface { // NewFlags is called by the framework to pass to the argument parser. The parsed flags will be passed // to the scanner created by NewScanner(). - NewFlags() interface{} + NewFlags() any // NewScanner is called by the framework for each time an individual scan is specified in the config or on // the command-line. The framework will then call scanner.Init(name, flags). NewScanner() Scanner - // Description returns a string suitable for use as an overview of this - // module within usage text. + // Description returns a string suitable for use as an overview of this module within usage text. Description() string } // ScanFlags is an interface which must be implemented by all types sent to // the flag parser type ScanFlags interface { - // Help optionally returns any additional help text, e.g. specifying what empty defaults - // are interpreted as. + // Help optionally returns any additional help text, e.g. specifying what empty defaults are interpreted as. Help() string // Validate enforces all command-line flags and positional arguments have valid values. @@ -68,10 +65,10 @@ type ScanFlags interface { // BaseFlags contains the options that every flags type must embed type BaseFlags struct { Port uint `short:"p" long:"port" description:"Specify port to grab on"` + BytesReadLimit int `short:"m" long:"maxbytes" description:"Maximum byte read limit per scan (0 = defaults)"` Name string `short:"n" long:"name" description:"Specify name for output json, only necessary if scanning multiple modules"` Timeout time.Duration `short:"t" long:"timeout" description:"Set connection timeout (0 = no timeout)" default:"10s"` Trigger string `short:"g" long:"trigger" description:"Invoke only on targets with specified tag"` - BytesReadLimit int `short:"m" long:"maxbytes" description:"Maximum byte read limit per scan (0 = defaults)"` } // UDPFlags contains the common options used for all UDP scans diff --git a/modules/amqp.go b/modules/amqp.go new file mode 100644 index 000000000..48144f699 --- /dev/null +++ b/modules/amqp.go @@ -0,0 +1,7 @@ +package modules + +import "github.com/zmap/zgrab2/modules/amqp091" + +func init() { + amqp091.RegisterModule() +} diff --git a/modules/amqp091/scanner.go b/modules/amqp091/scanner.go new file mode 100644 index 000000000..609739789 --- /dev/null +++ b/modules/amqp091/scanner.go @@ -0,0 +1,257 @@ +package amqp091 + +import ( + "fmt" + + "encoding/json" + + amqpLib "github.com/rabbitmq/amqp091-go" + log "github.com/sirupsen/logrus" + + "github.com/zmap/zgrab2" +) + +// Flags holds the command-line configuration for the smb scan module. +// Populated by the framework. +type Flags struct { + zgrab2.BaseFlags `group:"Basic Options"` + Vhost string `long:"vhost" description:"The vhost to connect to" default:"/"` + AuthUser string `long:"auth-user" description:"Username to use for authentication. Must be used with --auth-pass. No auth is attempted if not provided."` + AuthPass string `long:"auth-pass" description:"Password to use for authentication. Must be used with --auth-user. No auth is attempted if not provided."` + + UseTLS bool `long:"use-tls" description:"Use TLS to connect to the server. Note that AMQPS uses a different default port (5671) than AMQP (5672) and you will need to specify that port manually with -p."` + zgrab2.TLSFlags `group:"TLS Options"` +} + +// Module implements the zgrab2.Module interface. +type Module struct { +} + +// Scanner implements the zgrab2.Scanner interface. +type Scanner struct { + config *Flags +} + +type connectionTune struct { + ChannelMax int `json:"channel_max"` + FrameMax int `json:"frame_max"` + Heartbeat int `json:"heartbeat"` +} + +// https://www.rabbitmq.com/amqp-0-9-1-reference#connection.start.server-properties +type knownServerProperties struct { + Product string `json:"product"` + Version string `json:"version"` + Platform string `json:"platform"` + Copyright string `json:"copyright"` + Information string `json:"information"` + UnknownProps string `json:"unknown_props"` +} + +// copy known properties, and store unknown properties in serialized json string +// if known properties are not found, set fields to empty strings +func (p *knownServerProperties) populate(props amqpLib.Table) { + if product, ok := props["product"].(string); ok { + p.Product = product + delete(props, "product") + } + if version, ok := props["version"].(string); ok { + p.Version = version + delete(props, "version") + } + if platform, ok := props["platform"].(string); ok { + p.Platform = platform + delete(props, "platform") + } + if copyright, ok := props["copyright"].(string); ok { + p.Copyright = copyright + delete(props, "copyright") + } + if information, ok := props["information"].(string); ok { + p.Information = information + delete(props, "information") + } + + if unknownProps, err := json.Marshal(props); err == nil { + p.UnknownProps = string(unknownProps) + } +} + +type Result struct { + Failure string `json:"failure"` + + VersionMajor int `json:"version_major"` + VersionMinor int `json:"version_minor"` + ServerProperties knownServerProperties `json:"server_properties"` + Locales []string `json:"locales"` + + AuthSuccess bool `json:"auth_success"` + + Tune *connectionTune `json:"tune,omitempty"` + + TLSLog *zgrab2.TLSLog `json:"tls,omitempty"` +} + +// RegisterModule registers the zgrab2 module. +func RegisterModule() { + var module Module + _, err := zgrab2.AddCommand("amqp091", "amqp091", module.Description(), 5672, &module) + if err != nil { + log.Fatal(err) + } +} + +// NewFlags returns a default Flags object. +func (module *Module) NewFlags() any { + return new(Flags) +} + +// NewScanner returns a new Scanner instance. +func (module *Module) NewScanner() zgrab2.Scanner { + return new(Scanner) +} + +// Description returns an overview of this module. +func (module *Module) Description() string { + return "Probe for Advanced Message Queuing Protocol 0.9.1 servers" +} + +// Validate checks that the flags are valid. +// On success, returns nil. +// On failure, returns an error instance describing the error. +func (flags *Flags) Validate(args []string) error { + if flags.AuthUser != "" && flags.AuthPass == "" { + return fmt.Errorf("must provide --auth-pass if --auth-user is set") + } + if flags.AuthPass != "" && flags.AuthUser == "" { + return fmt.Errorf("must provide --auth-user if --auth-pass is set") + } + return nil +} + +// Help returns the module's help string. +func (flags *Flags) Help() string { + return "" +} + +// Init initializes the Scanner. +func (scanner *Scanner) Init(flags zgrab2.ScanFlags) error { + f, ok := flags.(*Flags) + if !ok { + return fmt.Errorf("failed to cast flags to AMQP flags") + } + + scanner.config = f + return nil +} + +// InitPerSender initializes the scanner for a given sender. +func (scanner *Scanner) InitPerSender(senderID int) error { + return nil +} + +// GetName returns the Scanner name defined in the Flags. +func (scanner *Scanner) GetName() string { + return scanner.config.Name +} + +// GetTrigger returns the Trigger defined in the Flags. +func (scanner *Scanner) GetTrigger() string { + return scanner.config.Trigger +} + +// Protocol returns the protocol identifier of the scan. +func (scanner *Scanner) Protocol() string { + return "amqp091" +} + +func (scanner *Scanner) Scan(target zgrab2.ScanTarget) (zgrab2.ScanStatus, any, error) { + conn, err := target.Open(&scanner.config.BaseFlags) + if err != nil { + return zgrab2.TryGetScanStatus(err), nil, err + } + + // Setup result and connection cleanup + result := &Result{ + AuthSuccess: false, + } + var tlsConn *zgrab2.TLSConnection + defer func() { + conn.Close() + + if tlsConn != nil { + result.TLSLog = tlsConn.GetLog() + } + }() + + // If we're using TLS, wrap the connection + if scanner.config.UseTLS { + tlsConn, err = scanner.config.TLSFlags.GetTLSConnection(conn) + if err != nil { + return zgrab2.TryGetScanStatus(err), nil, err + } + + if err := tlsConn.Handshake(); err != nil { + return zgrab2.TryGetScanStatus(err), nil, err + } + + conn = tlsConn + } + + // Prepare AMQP connection config + config := amqpLib.Config{ + Vhost: scanner.config.Vhost, + ChannelMax: 0, + FrameSize: 0, + Heartbeat: 0, + } + + // If we have auth credentials, set up PLAIN SASL + if scanner.config.AuthUser != "" && scanner.config.AuthPass != "" { + config.SASL = []amqpLib.Authentication{ + &amqpLib.PlainAuth{ + Username: scanner.config.AuthUser, + Password: scanner.config.AuthPass, + }, + } + } + + // Open the AMQP connection + amqpConn, err := amqpLib.Open(conn, config) + if err != nil { + result.Failure = err.Error() + } + defer amqpConn.Close() + + // If there's an error and we haven't even received START frame from the server, consider it a failure + if err != nil && len(amqpConn.Locales) == 0 { + status := zgrab2.TryGetScanStatus(err) + if status == zgrab2.SCAN_UNKNOWN_ERROR { + // Consider this a protocol error if it's not any of the known network errors + status = zgrab2.SCAN_PROTOCOL_ERROR + } + + return status, nil, err + } + // If amqpConn.Locales has sth, we are (almost) sure that we are talking to an AMQP 091 server, + // therefore the scan is considered successful from this point on. + + // Following is basic server information that can be gathered without authentication + result.VersionMajor = amqpConn.Major + result.VersionMinor = amqpConn.Minor + result.Locales = amqpConn.Locales + result.ServerProperties.populate(amqpConn.Properties) + + // Heuristic to see if we're authenticated. + // These values are expected to be non-zero if and only if a tune is received and we're authenticated. + if err != amqpLib.ErrSASL && err != amqpLib.ErrCredentials && amqpConn.Config.ChannelMax > 0 { + result.AuthSuccess = true + result.Tune = &connectionTune{ + ChannelMax: amqpConn.Config.ChannelMax, + FrameMax: amqpConn.Config.FrameSize, + Heartbeat: int(amqpConn.Config.Heartbeat.Seconds()), + } + } + + return zgrab2.SCAN_SUCCESS, result, nil +} diff --git a/modules/bacnet/messages.go b/modules/bacnet/messages.go index dbe87b62f..d132bf7ec 100644 --- a/modules/bacnet/messages.go +++ b/modules/bacnet/messages.go @@ -26,10 +26,10 @@ type APDU struct { } type Frame struct { - VLC *VLC `json:"vlc,omitempty"` - NPDU *NPDU `json:"npdu,omitempty"` - APDU *APDU `json:"apdu,omitempty"` - Payload interface{} `json:"payload,omitempty"` + VLC *VLC `json:"vlc,omitempty"` + NPDU *NPDU `json:"npdu,omitempty"` + APDU *APDU `json:"apdu,omitempty"` + Payload any `json:"payload,omitempty"` } const vlcLength = 4 diff --git a/modules/bacnet/scanner.go b/modules/bacnet/scanner.go index 23bc2be32..12a77c466 100644 --- a/modules/bacnet/scanner.go +++ b/modules/bacnet/scanner.go @@ -6,6 +6,7 @@ package bacnet import ( log "github.com/sirupsen/logrus" + "github.com/zmap/zgrab2" ) @@ -14,8 +15,8 @@ import ( // Flags holds the command-line configuration for the bacnet scan module. // Populated by the framework. type Flags struct { - zgrab2.BaseFlags - zgrab2.UDPFlags + zgrab2.BaseFlags `group:"Basic Options"` + zgrab2.UDPFlags `group:"UDP Options"` Verbose bool `long:"verbose" description:"More verbose logging, include debug fields in the scan results"` } @@ -39,7 +40,7 @@ func RegisterModule() { } // NewFlags returns a default Flags object. -func (module *Module) NewFlags() interface{} { +func (module *Module) NewFlags() any { return new(Flags) } @@ -107,7 +108,7 @@ func (scanner *Scanner) Protocol() string { // 8. Description // 9. Location // The result is a bacnet.Log, and contains any of the above. -func (scanner *Scanner) Scan(target zgrab2.ScanTarget) (zgrab2.ScanStatus, interface{}, error) { +func (scanner *Scanner) Scan(target zgrab2.ScanTarget) (zgrab2.ScanStatus, any, error) { conn, err := target.OpenUDP(&scanner.config.BaseFlags, &scanner.config.UDPFlags) if err != nil { return zgrab2.TryGetScanStatus(err), nil, err diff --git a/modules/banner/scanner.go b/modules/banner/scanner.go index c658620c6..9486d5d94 100644 --- a/modules/banner/scanner.go +++ b/modules/banner/scanner.go @@ -4,6 +4,11 @@ package banner import ( + "crypto/md5" + "crypto/sha1" + "crypto/sha256" + "encoding/base64" + "encoding/hex" "errors" "fmt" "io" @@ -12,21 +17,25 @@ import ( "net" "regexp" "strconv" - "encoding/hex" "github.com/zmap/zgrab2" ) // Flags give the command-line flags for the banner module. type Flags struct { - zgrab2.BaseFlags - Probe string `long:"probe" default:"\\n" description:"Probe to send to the server. Use triple slashes to escape, for example \\\\\\n is literal \\n. Mutually exclusive with --probe-file" ` - ProbeFile string `long:"probe-file" description:"Read probe from file as byte array (hex). Mutually exclusive with --probe"` + zgrab2.BaseFlags `group:"Basic Options"` + zgrab2.TLSFlags `group:"TLS Options"` + + Probe string `long:"probe" default:"\\n" description:"Probe to send to the server. Use triple slashes to escape, for example \\\\\\n is literal \\n. Mutually exclusive with --probe-file."` + ProbeFile string `long:"probe-file" description:"Read probe from file as byte array (hex). Mutually exclusive with --probe."` Pattern string `long:"pattern" description:"Pattern to match, must be valid regexp."` - UseTLS bool `long:"tls" description:"Sends probe with TLS connection. Loads TLS module command options. "` + UseTLS bool `long:"tls" description:"Sends probe with TLS connection. Loads TLS module command options."` MaxTries int `long:"max-tries" default:"1" description:"Number of tries for timeouts and connection errors before giving up. Includes making TLS connection if enabled."` - Hex bool `long:"hex" description:"Store banner value in hex. "` - zgrab2.TLSFlags + Hex bool `long:"hex" description:"Store banner value in hex. Mutually exclusive with --base64."` + Base64 bool `long:"base64" description:"Store banner value in base64. Mutually exclusive with --hex."` + MD5 bool `long:"md5" description:"Calculate MD5 hash of banner value."` + SHA1 bool `long:"sha1" description:"Calculate SHA1 hash of banner value."` + SHA256 bool `long:"sha256" description:"Calculate SHA256 hash of banner value."` } // Module is the implementation of the zgrab2.Module interface. @@ -42,41 +51,47 @@ type Scanner struct { // ScanResults instances are returned by the module's Scan function. type Results struct { - Banner string `json:"banner,omitempty"` - Length int `json:"length,omitempty"` + Banner string `json:"banner,omitempty"` + Length int `json:"length,omitempty"` + TLSLog *zgrab2.TLSLog `json:"tls,omitempty"` + MD5 string `json:"md5,omitempty"` + SHA1 string `json:"sha1,omitempty"` + SHA256 string `json:"sha25,omitempty"` } +var NoMatchError = errors.New("pattern did not match") + // RegisterModule is called by modules/banner.go to register the scanner. func RegisterModule() { - var module Module - _, err := zgrab2.AddCommand("banner", "Banner", module.Description(), 80, &module) + var m Module + _, err := zgrab2.AddCommand("banner", "Banner", m.Description(), 80, &m) if err != nil { log.Fatal(err) } } // NewFlags returns a new default flags object. -func (m *Module) NewFlags() interface{} { +func (m *Module) NewFlags() any { return new(Flags) } // GetName returns the Scanner name defined in the Flags. -func (scanner *Scanner) GetName() string { - return scanner.config.Name +func (s *Scanner) GetName() string { + return s.config.Name } // GetTrigger returns the Trigger defined in the Flags. -func (scanner *Scanner) GetTrigger() string { - return scanner.config.Trigger +func (s *Scanner) GetTrigger() string { + return s.config.Trigger } // Protocol returns the protocol identifier of the scan. -func (scanner *Scanner) Protocol() string { +func (s *Scanner) Protocol() string { return "banner" } // InitPerSender initializes the scanner for a given sender. -func (scanner *Scanner) InitPerSender(senderID int) error { +func (s *Scanner) InitPerSender(senderID int) error { return nil } @@ -95,7 +110,7 @@ func (f *Flags) Validate(args []string) error { } // Description returns an overview of this module. -func (module *Module) Description() string { +func (m *Module) Description() string { return "Fetch a raw banner by sending a static probe and checking the result against a regular expression" } @@ -105,46 +120,44 @@ func (f *Flags) Help() string { } // Init initializes the Scanner with the command-line flags. -func (scanner *Scanner) Init(flags zgrab2.ScanFlags) error { +func (s *Scanner) Init(flags zgrab2.ScanFlags) error { var err error f, _ := flags.(*Flags) - scanner.config = f - scanner.regex = regexp.MustCompile(scanner.config.Pattern) + s.config = f + if s.config.Pattern != "" { + s.regex = regexp.MustCompile(s.config.Pattern) + } if len(f.ProbeFile) != 0 { - scanner.probe, err = ioutil.ReadFile(f.ProbeFile) + s.probe, err = ioutil.ReadFile(f.ProbeFile) if err != nil { log.Fatal("Failed to open probe file") return zgrab2.ErrInvalidArguments } } else { - strProbe, err := strconv.Unquote(fmt.Sprintf(`"%s"`, scanner.config.Probe)) + strProbe, err := strconv.Unquote(fmt.Sprintf(`"%s"`, s.config.Probe)) if err != nil { panic("Probe error") } - scanner.probe = []byte(strProbe) + s.probe = []byte(strProbe) } - return nil } -var NoMatchError = errors.New("pattern did not match") - -func (scanner *Scanner) Scan(target zgrab2.ScanTarget) (zgrab2.ScanStatus, interface{}, error) { - try := 0 +func (s *Scanner) Scan(target zgrab2.ScanTarget) (zgrab2.ScanStatus, any, error) { var ( conn net.Conn tlsConn *zgrab2.TLSConnection err error - readerr error + readErr error ) - for try < scanner.config.MaxTries { - try++ - conn, err = target.Open(&scanner.config.BaseFlags) + + for try := 0; try < s.config.MaxTries; try++ { + conn, err = target.Open(&s.config.BaseFlags) if err != nil { continue } - if scanner.config.UseTLS { - tlsConn, err = scanner.config.TLSFlags.GetTLSConnection(conn) + if s.config.UseTLS { + tlsConn, err = s.config.TLSFlags.GetTLSConnection(conn) if err != nil { continue } @@ -153,24 +166,23 @@ func (scanner *Scanner) Scan(target zgrab2.ScanTarget) (zgrab2.ScanStatus, inter } conn = tlsConn } - break } + if err != nil { return zgrab2.TryGetScanStatus(err), nil, err } defer conn.Close() - var ret []byte - try = 0 - for try < scanner.config.MaxTries { - try++ - _, err = conn.Write(scanner.probe) - ret, readerr = zgrab2.ReadAvailable(conn) + var data []byte + + for try := 0; try < s.config.MaxTries; try++ { + _, err = conn.Write(s.probe) + data, readErr = zgrab2.ReadAvailable(conn) if err != nil { continue } - if readerr != io.EOF && readerr != nil { + if readErr != io.EOF && readErr != nil { continue } break @@ -178,19 +190,44 @@ func (scanner *Scanner) Scan(target zgrab2.ScanTarget) (zgrab2.ScanStatus, inter if err != nil { return zgrab2.TryGetScanStatus(err), nil, err } - if readerr != io.EOF && readerr != nil { - return zgrab2.TryGetScanStatus(readerr), nil, readerr + if readErr != io.EOF && readErr != nil { + return zgrab2.TryGetScanStatus(readErr), nil, readErr } + var results Results - if scanner.config.Hex { - results = Results{Banner: hex.EncodeToString(ret), Length: len(ret)} + + if s.config.Hex { + results.Banner = hex.EncodeToString(data) + } else if s.config.Base64 { + results.Banner = base64.StdEncoding.EncodeToString(data) } else { - results = Results{Banner: string(ret), Length: len(ret)} + results.Banner = string(data) + } + results.Length = len(data) + + if len(data) > 0 { + if s.config.MD5 { + digest := md5.Sum(data) + results.MD5 = hex.EncodeToString(digest[:]) + } + if s.config.SHA1 { + digest := sha1.Sum(data) + results.SHA1 = hex.EncodeToString(digest[:]) + } + if s.config.SHA256 { + digest := sha256.Sum256(data) + results.SHA256 = hex.EncodeToString(digest[:]) + } + } + if tlsConn != nil { + results.TLSLog = tlsConn.GetLog() } - if scanner.regex.Match(ret) { + if s.regex == nil { + return zgrab2.SCAN_SUCCESS, &results, nil + } + if s.regex.Match(data) { return zgrab2.SCAN_SUCCESS, &results, nil } return zgrab2.SCAN_PROTOCOL_ERROR, &results, NoMatchError - } diff --git a/modules/dnp3/dnp3.go b/modules/dnp3/dnp3.go index e2398c5c9..b47ef629d 100644 --- a/modules/dnp3/dnp3.go +++ b/modules/dnp3/dnp3.go @@ -16,9 +16,9 @@ package dnp3 import ( "encoding/binary" + "errors" "io" "net" - "errors" "github.com/zmap/zgrab2" ) diff --git a/modules/dnp3/scanner.go b/modules/dnp3/scanner.go index 93ec53536..66f38086a 100644 --- a/modules/dnp3/scanner.go +++ b/modules/dnp3/scanner.go @@ -13,9 +13,8 @@ import ( // Flags holds the command-line configuration for the dnp3 scan module. // Populated by the framework. type Flags struct { - zgrab2.BaseFlags - // TODO: Support UDP? - Verbose bool `long:"verbose" description:"More verbose logging, include debug fields in the scan results"` + zgrab2.BaseFlags `group:"Basic Options"` // TODO: Support UDP? + Verbose bool `long:"verbose" description:"More verbose logging, include debug fields in the scan results"` } // Module implements the zgrab2.Module interface. @@ -37,7 +36,7 @@ func RegisterModule() { } // NewFlags returns a default Flags object. -func (module *Module) NewFlags() interface{} { +func (module *Module) NewFlags() any { return new(Flags) } @@ -92,7 +91,7 @@ func (scanner *Scanner) Protocol() string { // Scan probes for a DNP3 service. // Connects to the configured TCP port (default 20000) and reads the banner. -func (scanner *Scanner) Scan(target zgrab2.ScanTarget) (zgrab2.ScanStatus, interface{}, error) { +func (scanner *Scanner) Scan(target zgrab2.ScanTarget) (zgrab2.ScanStatus, any, error) { // TODO: Allow UDP? conn, err := target.Open(&scanner.config.BaseFlags) if err != nil { diff --git a/modules/fox/fox.go b/modules/fox/fox.go index a60a4ee4f..d80bfa1bd 100644 --- a/modules/fox/fox.go +++ b/modules/fox/fox.go @@ -3,10 +3,10 @@ package fox import ( "encoding/hex" "errors" + "io" "net" "strconv" "strings" - "io" "github.com/zmap/zgrab2" ) @@ -63,7 +63,7 @@ func GetFoxBanner(logStruct *FoxLog, connection net.Conn) error { } responseString := string(data) - output := strings.Split(responseString, string(0x0a)) + output := strings.Split(responseString, "\x0a") if strings.HasPrefix(responseString, RESPONSE_PREFIX) { logStruct.IsFox = true diff --git a/modules/fox/log.go b/modules/fox/log.go index 3b8c860cf..d715d0ba8 100644 --- a/modules/fox/log.go +++ b/modules/fox/log.go @@ -1,5 +1,9 @@ package fox +import ( + "github.com/zmap/zgrab2" +) + // FoxLog is the struct returned to the caller. type FoxLog struct { // IsFox should always be true (otherwise, the result should have been nil). @@ -58,4 +62,6 @@ type FoxLog struct { // AuthAgentType corresponds to the "authAgentTypeSpecs" field. AuthAgentType string `json:"auth_agent_type,omitempty"` + + TLSLog *zgrab2.TLSLog `json:"tls,omitempty"` } diff --git a/modules/fox/scanner.go b/modules/fox/scanner.go index a2ac69cb0..ffadcb453 100644 --- a/modules/fox/scanner.go +++ b/modules/fox/scanner.go @@ -9,14 +9,16 @@ import ( "errors" log "github.com/sirupsen/logrus" "github.com/zmap/zgrab2" + "net" ) // Flags holds the command-line configuration for the fox scan module. // Populated by the framework. type Flags struct { - zgrab2.BaseFlags - - Verbose bool `long:"verbose" description:"More verbose logging, include debug fields in the scan results"` + zgrab2.BaseFlags `group:"Basic Options"` + Verbose bool `long:"verbose" description:"More verbose logging, include debug fields in the scan results"` + UseTLS bool `long:"use-tls" description:"Sends probe with a TLS connection. Loads TLS module command options."` + zgrab2.TLSFlags `group:"TLS Options"` } // Module implements the zgrab2.Module interface. @@ -38,7 +40,7 @@ func RegisterModule() { } // NewFlags returns a default Flags object. -func (module *Module) NewFlags() interface{} { +func (module *Module) NewFlags() any { return new(Flags) } @@ -97,13 +99,37 @@ func (scanner *Scanner) Protocol() string { // 3. Attempt to read the response (up to 8k + 4 bytes -- larger responses trigger an error) // 4. If the response has the Fox response prefix, mark the scan as having detected the service. // 5. Attempt to read any / all of the data fields from the Log struct -func (scanner *Scanner) Scan(target zgrab2.ScanTarget) (zgrab2.ScanStatus, interface{}, error) { - conn, err := target.Open(&scanner.config.BaseFlags) +func (scanner *Scanner) Scan(target zgrab2.ScanTarget) (zgrab2.ScanStatus, any, error) { + + var ( + conn net.Conn + tlsConn *zgrab2.TLSConnection + err error + ) + + conn, err = target.Open(&scanner.config.BaseFlags) + if scanner.config.UseTLS { + tlsConn, err = scanner.config.TLSFlags.GetTLSConnection(conn) + if err != nil { + return zgrab2.TryGetScanStatus(err), nil, err + } + if err := tlsConn.Handshake(); err != nil { + return zgrab2.TryGetScanStatus(err), nil, err + } + conn = tlsConn + } else { + conn, err = target.Open(&scanner.config.BaseFlags) + } + if err != nil { return zgrab2.TryGetScanStatus(err), nil, err } + defer conn.Close() result := new(FoxLog) + if tlsConn != nil { + result.TLSLog = tlsConn.GetLog() + } err = GetFoxBanner(result, conn) if !result.IsFox { diff --git a/modules/ftp/scanner.go b/modules/ftp/scanner.go index 4ff3ce8b2..23f9ce53b 100644 --- a/modules/ftp/scanner.go +++ b/modules/ftp/scanner.go @@ -46,8 +46,8 @@ type ScanResults struct { // Flags are the FTP-specific command-line flags. Taken from the original zgrab. // (TODO: should FTPAuthTLS be on by default?). type Flags struct { - zgrab2.BaseFlags - zgrab2.TLSFlags + zgrab2.BaseFlags `group:"Basic Options"` + zgrab2.TLSFlags `group:"TLS Options"` Verbose bool `long:"verbose" description:"More verbose logging, include debug fields in the scan results"` FTPAuthTLS bool `long:"authtls" description:"Collect FTPS certificates in addition to FTP banners"` @@ -85,7 +85,7 @@ func RegisterModule() { // NewFlags returns the default flags object to be filled in with the // command-line arguments. -func (m *Module) NewFlags() interface{} { +func (m *Module) NewFlags() any { return new(Flags) } @@ -216,14 +216,14 @@ func (ftp *Connection) GetFTPSCertificates() error { ftpsReady, err := ftp.SetupFTPS() if err != nil { - return err + return fmt.Errorf("error setting up FTPS: %w", err) } if !ftpsReady { return nil } var conn *zgrab2.TLSConnection if conn, err = ftp.config.TLSFlags.GetTLSConnection(ftp.conn); err != nil { - return err + return fmt.Errorf("error setting up TLS connection: %w", err) } ftp.results.TLSLog = conn.GetLog() @@ -232,25 +232,25 @@ func (ftp *Connection) GetFTPSCertificates() error { // AUTH TLS succeeds, but the handshake fails, dumping // "error:1408A0C1:SSL routines:ssl3_get_client_hello:no shared cipher" // to the socket. - return err + return fmt.Errorf("TLS handshake failed: %w", err) } ftp.conn = conn return nil } // Scan performs the configured scan on the FTP server, as follows: -// * Read the banner into results.Banner (if it is not a 2XX response, bail) -// * If the FTPAuthTLS flag is not set, finish. -// * Send the AUTH TLS command to the server. If the response is not 2XX, then -// send the AUTH SSL command. If the response is not 2XX, then finish. -// * Perform ths TLS handshake / any configured TLS scans, populating -// results.TLSLog. -// * Return SCAN_SUCCESS, &results, nil -func (s *Scanner) Scan(t zgrab2.ScanTarget) (status zgrab2.ScanStatus, result interface{}, thrown error) { +// - Read the banner into results.Banner (if it is not a 2XX response, bail) +// - If the FTPAuthTLS flag is not set, finish. +// - Send the AUTH TLS command to the server. If the response is not 2XX, then +// send the AUTH SSL command. If the response is not 2XX, then finish. +// - Perform ths TLS handshake / any configured TLS scans, populating +// results.TLSLog. +// - Return SCAN_SUCCESS, &results, nil +func (s *Scanner) Scan(t zgrab2.ScanTarget) (status zgrab2.ScanStatus, result any, thrown error) { var err error conn, err := t.Open(&s.config.BaseFlags) if err != nil { - return zgrab2.TryGetScanStatus(err), nil, err + return zgrab2.TryGetScanStatus(err), nil, fmt.Errorf("error opening connection: %w", err) } cn := conn defer func() { @@ -261,13 +261,13 @@ func (s *Scanner) Scan(t zgrab2.ScanTarget) (status zgrab2.ScanStatus, result in if s.config.ImplicitTLS { tlsConn, err := s.config.TLSFlags.GetTLSConnection(conn) if err != nil { - return zgrab2.TryGetScanStatus(err), nil, err + return zgrab2.TryGetScanStatus(err), nil, fmt.Errorf("error setting up TLS connection: %w", err) } results.ImplicitTLS = true results.TLSLog = tlsConn.GetLog() err = tlsConn.Handshake() if err != nil { - return zgrab2.TryGetScanStatus(err), nil, err + return zgrab2.TryGetScanStatus(err), nil, fmt.Errorf("TLS handshake failed: %w", err) } cn = tlsConn } @@ -275,11 +275,11 @@ func (s *Scanner) Scan(t zgrab2.ScanTarget) (status zgrab2.ScanStatus, result in ftp := Connection{conn: cn, config: s.config, results: results} is200Banner, err := ftp.GetFTPBanner() if err != nil { - return zgrab2.TryGetScanStatus(err), &ftp.results, err + return zgrab2.TryGetScanStatus(err), &ftp.results, fmt.Errorf("error reading FTP banner: %w", err) } if s.config.FTPAuthTLS && is200Banner { if err := ftp.GetFTPSCertificates(); err != nil { - return zgrab2.SCAN_APPLICATION_ERROR, &ftp.results, err + return zgrab2.TryGetScanStatus(err), &ftp.results, fmt.Errorf("error getting FTPS certificates: %w", err) } } return zgrab2.SCAN_SUCCESS, &ftp.results, nil diff --git a/modules/http/http_readlimit_test.go b/modules/http/http_readlimit_test.go index 7ed76caf5..36af86f71 100644 --- a/modules/http/http_readlimit_test.go +++ b/modules/http/http_readlimit_test.go @@ -1,6 +1,7 @@ package http import ( + "context" "crypto/rsa" "encoding/hex" "fmt" @@ -8,11 +9,14 @@ import ( "math/big" "net" "strings" + "syscall" "testing" "time" "github.com/zmap/zcrypto/tls" "github.com/zmap/zgrab2" + "github.com/zmap/zgrab2/lib/http" + "golang.org/x/sys/unix" ) // BEGIN Taken from handshake_server_test.go -- certs for TLS server @@ -80,7 +84,18 @@ func _write(writer io.Writer, data []byte) error { // XXXX.... func (cfg *readLimitTestConfig) runFakeHTTPServer(t *testing.T) { endpoint := fmt.Sprintf("127.0.0.1:%d", cfg.port) - listener, err := net.Listen("tcp", endpoint) + lc := net.ListenConfig{ + Control: func(network, address string, c syscall.RawConn) error { + var opErr error + if err := c.Control(func(fd uintptr) { + opErr = unix.SetsockoptInt(int(fd), unix.SOL_SOCKET, unix.SO_REUSEPORT, 1) + }); err != nil { + return err + } + return opErr + }, + } + listener, err := lc.Listen(context.Background(), "tcp", endpoint) if err != nil { t.Fatal(err) } @@ -107,7 +122,13 @@ func (cfg *readLimitTestConfig) runFakeHTTPServer(t *testing.T) { } head := "HTTP/1.0 200 OK\r\nBogus-Header: X" + if cfg.customHeader != nil { + head = *cfg.customHeader + } headSuffix := fmt.Sprintf("\r\nContent-Length: %d\r\n\r\n", cfg.bodySize) + if cfg.customSuffix != nil { + headSuffix = *cfg.customSuffix + } size := cfg.headerSize - len(head) - len(headSuffix) if size < 0 { t.Fatalf("Header size %d too small: must be at least %d bytes", cfg.headerSize, len(head)+len(headSuffix)) @@ -191,6 +212,11 @@ type readLimitTestConfig struct { // If set, the error returned by the scan must contain this. expectedError string + + // If set, return a custom header + customHeader *string + + customSuffix *string } const ( @@ -198,6 +224,8 @@ const ( readLimitTestConfigHTTPSBasePort = 0x7bbc ) +func adr(s string) *string { return &s } + var readLimitTestConfigs = map[string]*readLimitTestConfig{ // The socket truncates the connection while reading the body. To the client it looks as if the // server closed the connection prior to sending Content-Length bytes; the result is success, @@ -237,8 +265,8 @@ var readLimitTestConfigs = map[string]*readLimitTestConfig{ expectedStatus: zgrab2.SCAN_SUCCESS, }, - // The socket truncates the connection while reading the headers. The result isn't a valid HTTP - // response, so the library returns an unexpected EOF error. + // The socket truncates the connection while reading the headers. The result isn't a completely valid HTTP + // response, but we capture the output regardless // headerSize > maxReadSize "truncate_read_header": { tls: false, @@ -246,9 +274,8 @@ var readLimitTestConfigs = map[string]*readLimitTestConfig{ maxBodySize: 1024, maxReadSize: 2048, headerSize: 3072, - bodySize: 8, - expectedError: "unexpected EOF", - expectedStatus: zgrab2.SCAN_UNKNOWN_ERROR, + bodySize: 0, + expectedStatus: zgrab2.SCAN_SUCCESS, }, "tls_truncate_read_header": { tls: true, @@ -256,8 +283,69 @@ var readLimitTestConfigs = map[string]*readLimitTestConfig{ maxBodySize: 1024, maxReadSize: 2048, headerSize: 3072, - bodySize: 8, - expectedError: "unexpected EOF", + bodySize: 0, + expectedStatus: zgrab2.SCAN_SUCCESS, + }, + + // The socket truncates the connection while reading the status code. The result isn't a valid HTTP + // response + // headerSize > maxReadSize + "invalid_status_code": { + tls: false, + port: readLimitTestConfigHTTPBasePort + 2, + maxBodySize: 8192, + maxReadSize: 8192, + headerSize: 1024, + bodySize: 1024, + customHeader: adr("HTTP/1.0 200"), + expectedError: "malformed HTTP status code", + expectedStatus: zgrab2.SCAN_UNKNOWN_ERROR, + }, + "tls_invalid_status_code": { + tls: true, + port: readLimitTestConfigHTTPSBasePort + 2, + maxBodySize: 8192, + maxReadSize: 8192, + headerSize: 1024, + bodySize: 1024, + customHeader: adr("HTTP/1.0 200"), + expectedError: "malformed HTTP status code", + expectedStatus: zgrab2.SCAN_UNKNOWN_ERROR, + }, + + "invalid_no_status": { + tls: false, + port: readLimitTestConfigHTTPBasePort + 2, + maxBodySize: 8192, + maxReadSize: 8192, + headerSize: 1024, + bodySize: 1024, + customHeader: adr(""), + customSuffix: adr(""), + expectedError: "malformed HTTP response", + expectedStatus: zgrab2.SCAN_UNKNOWN_ERROR, + }, + + "invalid_response": { + tls: false, + port: readLimitTestConfigHTTPBasePort + 2, + maxBodySize: 8192, + maxReadSize: 8192, + headerSize: 1024, + bodySize: 1024, + customHeader: adr(""), + expectedError: "malformed HTTP response", + expectedStatus: zgrab2.SCAN_UNKNOWN_ERROR, + }, + + "invalid_low_read_limit": { + tls: false, + port: readLimitTestConfigHTTPBasePort + 2, + maxBodySize: 8192, + maxReadSize: 1, + headerSize: 1024, + bodySize: 1024, + expectedError: "malformed HTTP response", expectedStatus: zgrab2.SCAN_UNKNOWN_ERROR, }, @@ -284,19 +372,15 @@ var readLimitTestConfigs = map[string]*readLimitTestConfig{ } // Try to get the HTTP body from a result; otherwise return the empty string. -func getBody(result interface{}) string { +func getResponse(result any) *http.Response { if result == nil { - return "" + return nil } httpResult, ok := result.(*Results) if !ok { - return "" - } - response := httpResult.Response - if response == nil { - return "" + return nil } - return response.BodyText + return httpResult.Response } // Run a single test with the given configuration. @@ -307,21 +391,33 @@ func (cfg *readLimitTestConfig) runTest(t *testing.T, testName string) { IP: net.ParseIP("127.0.0.1"), } status, ret, err := scanner.Scan(target) + response := getResponse(ret) if status != cfg.expectedStatus { - t.Errorf("Wrong status: expected %s, got %s", cfg.expectedStatus, status) + t.Errorf("Wrong status: expected %s, got %s with %+v", cfg.expectedStatus, status, response) } if err != nil { if !strings.Contains(err.Error(), cfg.expectedError) { - t.Errorf("Wrong error: expected %s, got %s", err.Error(), cfg.expectedError) + t.Errorf("Wrong error: expected %s, got %s", cfg.expectedError, err.Error()) } } else if len(cfg.expectedError) > 0 { t.Errorf("Expected error '%s' but got none", cfg.expectedError) } if cfg.expectedStatus == zgrab2.SCAN_SUCCESS { - body := getBody(ret) + if response == nil { + t.Errorf("Expected response, but got none") + } + + statusCode := response.Status + if statusCode != "200 OK" { + t.Errorf("Expected status %s, but got %s", "200 OK", statusCode) + } + + body := response.BodyText if body == "" { - t.Errorf("Expected success, but got no body") + if cfg.bodySize != 0 { + t.Errorf("Expected success, but got no body") + } } else { if len(body) > cfg.maxBodySize || len(body) > cfg.maxReadSize { t.Errorf("Body exceeds max size: len(body)=%d; maxBodySize=%d, maxReadSize=%d", len(body), cfg.maxBodySize, cfg.maxReadSize) diff --git a/modules/http/scanner.go b/modules/http/scanner.go index 264c0ca43..0e32d3208 100644 --- a/modules/http/scanner.go +++ b/modules/http/scanner.go @@ -24,9 +24,10 @@ import ( log "github.com/sirupsen/logrus" "github.com/zmap/zcrypto/tls" + "golang.org/x/net/html/charset" + "github.com/zmap/zgrab2" "github.com/zmap/zgrab2/lib/http" - "golang.org/x/net/html/charset" ) var ( @@ -44,15 +45,15 @@ var ( // // TODO: Custom headers? type Flags struct { - zgrab2.BaseFlags - zgrab2.TLSFlags - Method string `long:"method" default:"GET" description:"Set HTTP request method type"` - Endpoint string `long:"endpoint" default:"/" description:"Send an HTTP request to an endpoint"` - FailHTTPToHTTPS bool `long:"fail-http-to-https" description:"Trigger retry-https logic on known HTTP/400 protocol mismatch responses"` - UserAgent string `long:"user-agent" default:"Mozilla/5.0 zgrab/0.x" description:"Set a custom user agent"` - RetryHTTPS bool `long:"retry-https" description:"If the initial request fails, reconnect and try with HTTPS."` - MaxSize int `long:"max-size" default:"256" description:"Max kilobytes to read in response to an HTTP request"` - MaxRedirects int `long:"max-redirects" default:"0" description:"Max number of redirects to follow"` + zgrab2.BaseFlags `group:"Basic Options"` + zgrab2.TLSFlags `group:"TLS Options"` + Method string `long:"method" default:"GET" description:"Set HTTP request method type"` + Endpoint string `long:"endpoint" default:"/" description:"Send an HTTP request to an endpoint"` + FailHTTPToHTTPS bool `long:"fail-http-to-https" description:"Trigger retry-https logic on known HTTP/400 protocol mismatch responses"` + UserAgent string `long:"user-agent" default:"Mozilla/5.0 zgrab/0.x" description:"Set a custom user agent"` + RetryHTTPS bool `long:"retry-https" description:"If the initial request fails, reconnect and try with HTTPS."` + MaxSize int `long:"max-size" default:"256" description:"Max kilobytes to read in response to an HTTP request"` + MaxRedirects int `long:"max-redirects" default:"0" description:"Max number of redirects to follow"` // FollowLocalhostRedirects overrides the default behavior to return // ErrRedirLocalhost whenever a redirect points to localhost. @@ -69,6 +70,9 @@ type Flags struct { CustomHeadersNames string `long:"custom-headers-names" description:"CSV of custom HTTP headers to send to server"` CustomHeadersValues string `long:"custom-headers-values" description:"CSV of custom HTTP header values to send to server. Should match order of custom-headers-names."` CustomHeadersDelimiter string `long:"custom-headers-delimiter" description:"Delimiter for customer header name/value CSVs"` + // Set HTTP Request body + RequestBody string `long:"request-body" description:"HTTP request body to send to server"` + RequestBodyHex string `long:"request-body-hex" description:"HTTP request body to send to server"` OverrideSH bool `long:"override-sig-hash" description:"Override the default SignatureAndHashes TLS option with more expansive default"` @@ -78,6 +82,9 @@ type Flags struct { // WithBodyLength enables adding the body_size field to the Response WithBodyLength bool `long:"with-body-size" description:"Enable the body_size attribute, for how many bytes actually read"` + + // Extract the raw header as it is on the wire + RawHeaders bool `long:"raw-headers" description:"Extract raw response up through headers"` } // A Results object is returned by the HTTP module's Scanner.Scan() @@ -99,6 +106,7 @@ type Module struct { type Scanner struct { config *Flags customHeaders map[string]string + requestBody string decodedHashFn func([]byte) string } @@ -116,7 +124,7 @@ type scan struct { } // NewFlags returns an empty Flags object. -func (module *Module) NewFlags() interface{} { +func (module *Module) NewFlags() any { return new(Flags) } @@ -149,6 +157,7 @@ func (scanner *Scanner) Protocol() string { func (scanner *Scanner) Init(flags zgrab2.ScanFlags) error { fl, _ := flags.(*Flags) scanner.config = fl + scanner.config.RequestBody = fl.RequestBody // parse out custom headers at initialization so that they can be easily // iterated over when constructing individual scanners @@ -427,9 +436,15 @@ func getHTTPURL(https bool, host string, port uint16, endpoint string) string { } else { proto = "http" } - if protoToPort[proto] == port { + if protoToPort[proto] == port && strings.Contains(host, ":") { + //If the host has a ":" in it, assume literal IPv6 address + return proto + "://[" + host + "]" + endpoint + } else if protoToPort[proto] == port { + //Otherwise, just concatenate host and endpoint return proto + "://" + host + endpoint } + + //For non-default ports, net.JoinHostPort will handle brackets for IPv6 literals return proto + "://" + net.JoinHostPort(host, strconv.FormatUint(uint64(port), 10)) + endpoint } @@ -443,6 +458,7 @@ func (scanner *Scanner) newHTTPScan(t *zgrab2.ScanTarget, useHTTPS bool) *scan { DisableKeepAlives: false, DisableCompression: false, MaxIdleConnsPerHost: scanner.config.MaxRedirects, + RawHeaderBuffer: scanner.config.RawHeaders, }, client: http.MakeNewClient(), globalDeadline: time.Now().Add(scanner.config.Timeout), @@ -473,7 +489,18 @@ func (scanner *Scanner) newHTTPScan(t *zgrab2.ScanTarget, useHTTPS bool) *scan { // Grab performs the HTTP scan -- implementation taken from zgrab/zlib/grabber.go func (scan *scan) Grab() *zgrab2.ScanError { // TODO: Allow body? - request, err := http.NewRequest(scan.scanner.config.Method, scan.url, nil) + var ( + request *http.Request + err error + ) + if len(scan.scanner.config.RequestBody) > 0 { + request, err = http.NewRequest(scan.scanner.config.Method, scan.url, strings.NewReader(scan.scanner.config.RequestBody)) + } else if len(scan.scanner.config.RequestBodyHex) > 0 { + reqbody, _ := hex.DecodeString(scan.scanner.config.RequestBodyHex) + request, err = http.NewRequest(scan.scanner.config.Method, scan.url, bytes.NewReader(reqbody)) + } else { + request, err = http.NewRequest(scan.scanner.config.Method, scan.url, nil) + } if err != nil { return zgrab2.NewScanError(zgrab2.SCAN_UNKNOWN_ERROR, err) } @@ -592,7 +619,7 @@ func (scan *scan) Grab() *zgrab2.ScanError { // Scan implements the zgrab2.Scanner interface and performs the full scan of // the target. If the scanner is configured to follow redirects, this may entail // multiple TCP connections to hosts other than target. -func (scanner *Scanner) Scan(t zgrab2.ScanTarget) (zgrab2.ScanStatus, interface{}, error) { +func (scanner *Scanner) Scan(t zgrab2.ScanTarget) (zgrab2.ScanStatus, any, error) { scan := scanner.newHTTPScan(&t, scanner.config.UseHTTPS) defer scan.Cleanup() err := scan.Grab() @@ -603,7 +630,7 @@ func (scanner *Scanner) Scan(t zgrab2.ScanTarget) (zgrab2.ScanStatus, interface{ defer retry.Cleanup() retryError := retry.Grab() if retryError != nil { - return retryError.Unpack(&retry.results) + return err.Unpack(&scan.results) } return zgrab2.SCAN_SUCCESS, &retry.results, nil } diff --git a/modules/imap/imap.go b/modules/imap/imap.go index a40bd2684..3220d519d 100644 --- a/modules/imap/imap.go +++ b/modules/imap/imap.go @@ -1,9 +1,9 @@ package imap import ( + "io" "net" "regexp" - "io" "github.com/zmap/zgrab2" ) diff --git a/modules/imap/scanner.go b/modules/imap/scanner.go index 9ae94eb96..d2aba9f4c 100644 --- a/modules/imap/scanner.go +++ b/modules/imap/scanner.go @@ -23,8 +23,8 @@ package imap import ( - "fmt" "errors" + "fmt" "strings" @@ -50,8 +50,8 @@ type ScanResults struct { // Flags holds the command-line configuration for the IMAP scan module. // Populated by the framework. type Flags struct { - zgrab2.BaseFlags - zgrab2.TLSFlags + zgrab2.BaseFlags `group:"Basic Options"` + zgrab2.TLSFlags `group:"TLS Options"` // SendCLOSE indicates that the CLOSE command should be sent. SendCLOSE bool `long:"send-close" description:"Send the CLOSE command before closing."` @@ -85,7 +85,7 @@ func RegisterModule() { } // NewFlags returns a default Flags object. -func (module *Module) NewFlags() interface{} { +func (module *Module) NewFlags() any { return new(Flags) } @@ -154,18 +154,18 @@ func VerifyIMAPContents(banner string) zgrab2.ScanStatus { lowerBanner := strings.ToLower(banner) switch { case strings.HasPrefix(banner, "* NO"), - strings.HasPrefix(banner, "* BAD"): + strings.HasPrefix(banner, "* BAD"): return zgrab2.SCAN_APPLICATION_ERROR case strings.HasPrefix(banner, "* OK"), - strings.HasPrefix(banner, "* PREAUTH"), - strings.HasPrefix(banner, "* BYE"), - strings.HasPrefix(banner, "* OKAY"), - strings.Contains(banner, "IMAP"), - strings.Contains(lowerBanner, "blacklist"), - strings.Contains(lowerBanner, "abuse"), - strings.Contains(lowerBanner, "rbl"), - strings.Contains(lowerBanner, "spamhaus"), - strings.Contains(lowerBanner, "relay"): + strings.HasPrefix(banner, "* PREAUTH"), + strings.HasPrefix(banner, "* BYE"), + strings.HasPrefix(banner, "* OKAY"), + strings.Contains(banner, "IMAP"), + strings.Contains(lowerBanner, "blacklist"), + strings.Contains(lowerBanner, "abuse"), + strings.Contains(lowerBanner, "rbl"), + strings.Contains(lowerBanner, "spamhaus"), + strings.Contains(lowerBanner, "relay"): return zgrab2.SCAN_SUCCESS default: return zgrab2.SCAN_PROTOCOL_ERROR @@ -173,15 +173,15 @@ func VerifyIMAPContents(banner string) zgrab2.ScanStatus { } // Scan performs the IMAP scan. -// 1. Open a TCP connection to the target port (default 143). -// 2. If --imaps is set, perform a TLS handshake using the command-line -// flags. -// 3. Read the banner. -// 6. If --starttls is sent, send a001 STARTTLS, read the result, negotiate a -// TLS connection using the command-line flags. -// 7. If --send-close is sent, send a001 CLOSE and read the result. -// 8. Close the connection. -func (scanner *Scanner) Scan(target zgrab2.ScanTarget) (zgrab2.ScanStatus, interface{}, error) { +// 1. Open a TCP connection to the target port (default 143). +// 2. If --imaps is set, perform a TLS handshake using the command-line +// flags. +// 3. Read the banner. +// 6. If --starttls is sent, send a001 STARTTLS, read the result, negotiate a +// TLS connection using the command-line flags. +// 7. If --send-close is sent, send a001 CLOSE and read the result. +// 8. Close the connection. +func (scanner *Scanner) Scan(target zgrab2.ScanTarget) (zgrab2.ScanStatus, any, error) { c, err := target.Open(&scanner.config.BaseFlags) if err != nil { return zgrab2.TryGetScanStatus(err), nil, err diff --git a/modules/ipp/ipp.go b/modules/ipp/ipp.go index 837dd6859..069a9414c 100644 --- a/modules/ipp/ipp.go +++ b/modules/ipp/ipp.go @@ -5,8 +5,8 @@ import ( "encoding/binary" "errors" "math" - "strings" "net/url" + "strings" log "github.com/sirupsen/logrus" ) @@ -14,15 +14,17 @@ import ( // Writes an "attribute-with-one-value" with the provided "value-tag", "name", and "value" to provided buffer // attribute-with-one-value encoding described at https://tools.ietf.org/html/rfc8010#section-3.1.4 // Example (runnable from ipp_test.go): -// Input: 0x47, "attributes-charset", "us-ascii" -// Output: [71 0 18 97 116 116 114 105 98 117 116 101 115 45 99 104 97 114 115 101 116 0 8 117 115 45 97 115 99 105 105] +// +// Input: 0x47, "attributes-charset", "us-ascii" +// Output: [71 0 18 97 116 116 114 105 98 117 116 101 115 45 99 104 97 114 115 101 116 0 8 117 115 45 97 115 99 105 105] +// // TODO: Switch output and Example function to use hex.Dump() // TODO: Should return an error when fed an invalid valueTag func AttributeByteString(valueTag byte, name string, value string, target *bytes.Buffer) error { //special byte denoting value syntax binary.Write(target, binary.BigEndian, valueTag) - if len(name) <= math.MaxInt16 && len(name) >= 0 { + if len(name) <= math.MaxInt16 && len(name) >= 0 { //append 16-bit signed int denoting name length binary.Write(target, binary.BigEndian, int16(len(name))) @@ -55,7 +57,7 @@ func ConvertURIToIPP(uriString string, tls bool) string { if err != nil { log.WithFields(log.Fields{ "error": err, - "url": uriString, + "url": uriString, }).Debug("Failed to parse URL from string") } // TODO: Create a better condition than uri.Scheme == "" b/c url.Parse doesn't know whether there's a scheme diff --git a/modules/ipp/ipp_test.go b/modules/ipp/ipp_test.go index 77cc83880..b1b4df216 100644 --- a/modules/ipp/ipp_test.go +++ b/modules/ipp/ipp_test.go @@ -30,4 +30,4 @@ func ExampleConvertURIToIPP() { // ipps://www.google.com:631/ipp // ipp://www.google.com:631 // ipps://www.google.com:631 -} \ No newline at end of file +} diff --git a/modules/ipp/scanner.go b/modules/ipp/scanner.go index d04825dce..207d53c25 100644 --- a/modules/ipp/scanner.go +++ b/modules/ipp/scanner.go @@ -18,6 +18,7 @@ import ( "strings" log "github.com/sirupsen/logrus" + "github.com/zmap/zgrab2" "github.com/zmap/zgrab2/lib/http" ) @@ -41,8 +42,18 @@ var ( // TODO: Explain this error ErrVersionNotSupported = errors.New("IPP version not supported") - Versions = []version{{Major: 2, Minor: 1}, {Major: 2, Minor: 0}, {Major: 1, Minor: 1}, {Major: 1, Minor: 0}} - AttributesCharset = []byte{0x47, 0x00, 0x12, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2d, 0x63, 0x68, 0x61, 0x72, 0x73, 0x65, 0x74} + Versions = []version{ + {Major: 2, Minor: 1}, + {Major: 2, Minor: 0}, + {Major: 1, Minor: 1}, + {Major: 1, Minor: 0}, + } + + AttributesCharset = []byte{ + 0x47, 0x00, 0x12, 0x61, 0x74, 0x74, 0x72, 0x69, + 0x62, 0x75, 0x74, 0x65, 0x73, 0x2d, 0x63, 0x68, + 0x61, 0x72, 0x73, 0x65, 0x74, + } ) type scan struct { @@ -54,7 +65,7 @@ type scan struct { tls bool } -//TODO: Tag relevant results and exlain in comments +// TODO: Tag relevant results and exlain in comments // ScanResults instances are returned by the module's Scan function. type ScanResults struct { //TODO: ?Include the request sent as well?? @@ -81,9 +92,9 @@ type ScanResults struct { // Flags holds the command-line configuration for the ipp scan module. // Populated by the framework. type Flags struct { - zgrab2.BaseFlags - zgrab2.TLSFlags - Verbose bool `long:"verbose" description:"More verbose logging, include debug fields in the scan results"` + zgrab2.BaseFlags `group:"Basic Options"` + zgrab2.TLSFlags `group:"TLS Options"` + Verbose bool `long:"verbose" description:"More verbose logging, include debug fields in the scan results"` //FIXME: Borrowed from http module, determine whether this is all needed MaxSize int `long:"max-size" default:"256" description:"Max kilobytes to read in response to an IPP request"` @@ -125,7 +136,7 @@ func RegisterModule() { } // NewFlags returns a default Flags object. -func (module *Module) NewFlags() interface{} { +func (module *Module) NewFlags() any { return new(Flags) } @@ -236,8 +247,10 @@ func detectReadBodyError(err error) error { return zgrab2.NewScanError(zgrab2.TryGetScanStatus(err), err) } -/* An IPP response contains the following data (as specified in RFC 8010 Section 3.1.8 - https://tools.ietf.org/html/rfc8010#section-3.1.8) +/* + An IPP response contains the following data (as specified in RFC 8010 Section 3.1.8 + https://tools.ietf.org/html/rfc8010#section-3.1.8) + bytes name ---------------------------- 2 version-number @@ -297,9 +310,10 @@ func readAllAttributes(body []byte, scanner *Scanner) ([]*Attribute, error) { continue } // TODO: Implement parsing attribute collections, since they're special - // Read in length of attribute's name, which will be used to determine whether this attribute stands alone - // or provides an additonal value for the previous attribute - var nameLength int16 + // Read in length of attribute's name, which will be used to determine + // whether this attribute stands alone or provides an additonal value + // for the previous attribute + var nameLength uint16 if err := binary.Read(buf, binary.BigEndian, &nameLength); err != nil { return attrs, detectReadBodyError(err) } @@ -583,7 +597,7 @@ func (scanner *Scanner) Grab(scan *scan, target *zgrab2.ScanTarget, version *ver return nil } -//Taken from zgrab/zlib/grabber.go -- check if the URL points to localhost +// Taken from zgrab/zlib/grabber.go -- check if the URL points to localhost func redirectsToLocalhost(host string) bool { if i := net.ParseIP(host); i != nil { return i.IsLoopback() || i.Equal(net.IPv4zero) @@ -727,9 +741,9 @@ func (scan *scan) shouldReportResult(scanner *Scanner) bool { } // Scan TODO: describe how scan operates in appropriate detail -//1. Send a request (currently get-printer-attributes) -//2. Take in that response & read out version numbers -func (scanner *Scanner) Scan(target zgrab2.ScanTarget) (zgrab2.ScanStatus, interface{}, error) { +// 1. Send a request (currently get-printer-attributes) +// 2. Take in that response & read out version numbers +func (scanner *Scanner) Scan(target zgrab2.ScanTarget) (zgrab2.ScanStatus, any, error) { // Try all known IPP versions from newest to oldest until we reach a supported version scan, err := scanner.tryGrabForVersions(&target, Versions, scanner.config.TLSRetry || scanner.config.IPPSecure) if err != nil { diff --git a/modules/ipp/scanner_test.go b/modules/ipp/scanner_test.go index 14d013d23..55a2f0620 100644 --- a/modules/ipp/scanner_test.go +++ b/modules/ipp/scanner_test.go @@ -1,2 +1 @@ package ipp - diff --git a/modules/jarm/scanner.go b/modules/jarm/scanner.go index 718b8bec3..db74e1d22 100644 --- a/modules/jarm/scanner.go +++ b/modules/jarm/scanner.go @@ -4,18 +4,20 @@ package jarm import ( _ "fmt" - jarm "github.com/RumbleDiscovery/jarm-go" - "github.com/zmap/zgrab2" "log" "net" "strings" "time" + + jarm "github.com/hdm/jarm-go" + + "github.com/zmap/zgrab2" ) // Flags give the command-line flags for the banner module. type Flags struct { - zgrab2.BaseFlags - MaxTries int `long:"max-tries" default:"1" description:"Number of tries for timeouts and connection errors before giving up."` + zgrab2.BaseFlags `group:"Basic Options"` + MaxTries int `long:"max-tries" default:"1" description:"Number of tries for timeouts and connection errors before giving up."` } // Module is the implementation of the zgrab2.Module interface. @@ -42,7 +44,7 @@ func RegisterModule() { } // NewFlags returns a new default flags object. -func (m *Module) NewFlags() interface{} { +func (m *Module) NewFlags() any { return new(Flags) } @@ -98,7 +100,7 @@ func (scanner *Scanner) Init(flags zgrab2.ScanFlags) error { return nil } -func (scanner *Scanner) Scan(target zgrab2.ScanTarget) (zgrab2.ScanStatus, interface{}, error) { +func (scanner *Scanner) Scan(target zgrab2.ScanTarget) (zgrab2.ScanStatus, any, error) { // Stores raw hashes returned from parsing each protocols Hello message rawhashes := []string{} diff --git a/modules/modbus/modbus.go b/modules/modbus/modbus.go index 54af68fc0..2ca2dad75 100644 --- a/modules/modbus/modbus.go +++ b/modules/modbus/modbus.go @@ -17,10 +17,10 @@ package modbus import ( "encoding/binary" "encoding/json" + "errors" "fmt" "io" "strconv" - "errors" ) // MEIResponse is the parsed data field from the 0x2B/0x0E response. @@ -114,7 +114,7 @@ func (m *MEIObjectID) Name() string { // MarshalJSON encodes the identifier as its friendly name. func (m *MEIObject) MarshalJSON() ([]byte, error) { - enc := make(map[string]interface{}, 1) + enc := make(map[string]any, 1) name := m.OID.Name() enc[name] = m.Value return json.Marshal(enc) diff --git a/modules/modbus/scanner.go b/modules/modbus/scanner.go index f4f47724b..762db2065 100644 --- a/modules/modbus/scanner.go +++ b/modules/modbus/scanner.go @@ -31,13 +31,12 @@ import ( // Flags holds the command-line configuration for the modbus scan module. // Populated by the framework. type Flags struct { - zgrab2.BaseFlags - // Protocols that support TLS should include zgrab2.TLSFlags - UnitID uint8 `long:"unit-id" description:"The UnitID / Station ID to probe"` - ObjectID uint8 `long:"object-id" description:"The ObjectID of the object to be read." default:"0x00"` - Strict bool `long:"strict" description:"If set, perform stricter checks on the response data to get fewer false positives"` - RequestID uint16 `long:"request-id" description:"Override the default request ID." default:"0x5A47"` - Verbose bool `long:"verbose" description:"More verbose logging, include debug fields in the scan results"` + zgrab2.BaseFlags `group:"Basic Options"` // Protocols that support TLS should include zgrab2.TLSFlags + UnitID uint8 `long:"unit-id" description:"The UnitID / Station ID to probe"` + ObjectID uint8 `long:"object-id" description:"The ObjectID of the object to be read." default:"0x00"` + Strict bool `long:"strict" description:"If set, perform stricter checks on the response data to get fewer false positives"` + RequestID uint16 `long:"request-id" description:"Override the default request ID." default:"0x5A47"` + Verbose bool `long:"verbose" description:"More verbose logging, include debug fields in the scan results"` } // Module implements the zgrab2.Module interface. @@ -59,7 +58,7 @@ func RegisterModule() { } // NewFlags returns a default Flags object. -func (module *Module) NewFlags() interface{} { +func (module *Module) NewFlags() any { return new(Flags) } @@ -131,14 +130,16 @@ func (c *Conn) getUnderlyingConn() net.Conn { // Scan probes for a modbus service. // It connects to the configured TCP port (default 502) and sends a packet with: -// UnitID = -// FunctionCode = 0x2B: Encapsulated Interface Transport) -// MEI Type = 0x0E: Read Device Info -// Category = 0x01: Basic -// ObjectID = +// +// UnitID = +// FunctionCode = 0x2B: Encapsulated Interface Transport) +// MEI Type = 0x0E: Read Device Info +// Category = 0x01: Basic +// ObjectID = +// // If the response is not a valid modbus response to this packet, then fail with a SCAN_PROTOCOL_ERROR. // Otherwise, return the parsed response and status (SCAN_SUCCESS or SCAN_APPLICATION_ERROR) -func (scanner *Scanner) Scan(target zgrab2.ScanTarget) (zgrab2.ScanStatus, interface{}, error) { +func (scanner *Scanner) Scan(target zgrab2.ScanTarget) (zgrab2.ScanStatus, any, error) { conn, err := target.Open(&scanner.config.BaseFlags) if err != nil { return zgrab2.TryGetScanStatus(err), nil, err diff --git a/modules/mongodb/scanner.go b/modules/mongodb/scanner.go index 24be7c54a..a2889722d 100644 --- a/modules/mongodb/scanner.go +++ b/modules/mongodb/scanner.go @@ -16,7 +16,7 @@ type Module struct { // Flags contains mongodb-specific command-line flags. type Flags struct { - zgrab2.BaseFlags + zgrab2.BaseFlags `group:"Basic Options"` } // Scanner implements the zgrab2.Scanner interface @@ -25,6 +25,7 @@ type Scanner struct { isMasterMsg []byte buildInfoCommandMsg []byte buildInfoOpMsg []byte + listDatabasesMsg []byte } // scan holds the state for the scan of an individual target @@ -64,6 +65,17 @@ func getBuildInfoQuery() []byte { return query_msg } +// getListDatabasesMsg returns a mongodb message containing a command to retrieve MongoDB database info. +func getListDatabasesMsg() []byte { + query, err := bson.Marshal(bson.M{"listDatabases": 1}) + if err != nil { + // programmer error + log.Fatalf("Invalid BSON: %v", err) + } + query_msg := getOpQuery("admin.$cmd", query) + return query_msg +} + // getOpQuery returns a mongodb OP_QUERY message containing the specified BSON-encoded query. // query expected to be BSON byte array. func getOpQuery(collname string, query []byte) []byte { @@ -132,9 +144,18 @@ type BuildEnvironment_t struct { // BuildInfo_t holds the data returned by the the buildInfo query type BuildInfo_t struct { - Version string `bson:"version,omitempty" json:"version,omitempty"` - GitVersion string `bson:"gitVersion,omitempty" json:"git_version,omitempty"` - BuildEnvironment BuildEnvironment_t `bson:"buildEnvironment,omitempty" json:"build_environment,omitempty"` + Version string `bson:"version,omitempty" json:"version,omitempty"` + GitVersion string `bson:"gitVersion,omitempty" json:"git_version,omitempty"` + SysInfo string `bson:"sysInfo,omitempty" json:"sys_info,omitempty"` + LoaderFlags string `bson:"loaderFlags,omitempty" json:"loader_flags,omitempty"` + CompilerFlags string `bson:"compilerFlags,omitempty" json:"compiler_flags,omitempty"` + Allocator string `bson:"allocator,omitempty" json:"allocator,omitempty"` + Debug bool `bson:"debug,omitempty" json:"debug,omitempty"` + Bits int32 `bson:"bits,omitempty" json:"bits,omitempty"` + MaxBsonObjectSize int32 `bson:"maxBsonObjectSize,omitempty" json:"max_bson_object_size,omitempty"` + JavascriptEngine string `bson:"javascriptEngine,omitempty" json:"javascript_engine,omitempty"` + StorageEngines []string `bson:"storageEngines,omitempty" json:"storage_engines,omitempty"` + BuildEnvironment BuildEnvironment_t `bson:"buildEnvironment,omitempty" json:"build_environment,omitempty"` } // IsMaster_t holds the data returned by an isMaster query @@ -149,10 +170,22 @@ type IsMaster_t struct { ReadOnly bool `bson:"readOnly" json:"read_only"` } +type DatabaseInfo_t struct { + Name string `bson:"name" json:"name"` + SizeOnDisk int64 `bson:"sizeOnDisk" json:"size_on_disk"` + Empty bool `bson:"empty" json:"empty"` +} + +type ListDatabases_t struct { + Databases []DatabaseInfo_t `bson:"databases,omitempty" json:"databases,omitempty"` + TotalSize int64 `bson:"totalSize,omitempty" json:"total_size,omitempty"` +} + // Result holds the data returned by a scan type Result struct { - IsMaster *IsMaster_t `json:"is_master,omitempty"` - BuildInfo *BuildInfo_t `json:"build_info,omitempty"` + IsMaster *IsMaster_t `json:"is_master,omitempty"` + BuildInfo *BuildInfo_t `json:"build_info,omitempty"` + DatabaseInfo *ListDatabases_t `json:"database_info,omitempty"` } // Init initializes the scanner @@ -162,6 +195,7 @@ func (scanner *Scanner) Init(flags zgrab2.ScanFlags) error { scanner.isMasterMsg = getIsMasterMsg() scanner.buildInfoCommandMsg = getBuildInfoQuery() scanner.buildInfoOpMsg = getBuildInfoOpMsg() + scanner.listDatabasesMsg = getListDatabasesMsg() return nil } @@ -196,7 +230,7 @@ func (flags *Flags) Help() string { } // NewFlags provides an empty instance of the flags that will be filled in by the framework -func (module *Module) NewFlags() interface{} { +func (module *Module) NewFlags() any { return new(Flags) } @@ -264,8 +298,22 @@ func getIsMaster(conn *Connection) (*IsMaster_t, error) { return document, nil } +func listDatabases(conn *Connection) (*ListDatabases_t, error) { + document := ListDatabases_t{} + conn.Write(conn.scanner.listDatabasesMsg) + + msg, err := conn.ReadMsg() + if err != nil { + return nil, err + } + + bson.Unmarshal(msg[MSGHEADER_LEN+20:], &document) + return &document, nil +} + // Scan connects to a host and performs a scan. -func (scanner *Scanner) Scan(target zgrab2.ScanTarget) (zgrab2.ScanStatus, interface{}, error) { +// https://github.com/mongodb/specifications/blob/master/source/message/OP_MSG.rst +func (scanner *Scanner) Scan(target zgrab2.ScanTarget) (zgrab2.ScanStatus, any, error) { scan, err := scanner.StartScan(&target) if err != nil { return zgrab2.TryGetScanStatus(err), nil, err @@ -278,6 +326,11 @@ func (scanner *Scanner) Scan(target zgrab2.ScanTarget) (zgrab2.ScanStatus, inter return zgrab2.SCAN_PROTOCOL_ERROR, nil, err } + result.DatabaseInfo, err = listDatabases(scan.conn) + if err != nil { + return zgrab2.SCAN_PROTOCOL_ERROR, nil, err + } + var query []byte var resplen_offset int var resp_offset int @@ -305,12 +358,6 @@ func (scanner *Scanner) Scan(target zgrab2.ScanTarget) (zgrab2.ScanStatus, inter return zgrab2.SCAN_PROTOCOL_ERROR, &result, err } - responselen := int(binary.LittleEndian.Uint32(msg[MSGHEADER_LEN : MSGHEADER_LEN+resplen_offset])) - if len(msg[MSGHEADER_LEN:]) < responselen { - err = fmt.Errorf("Server truncated BSON response doc (%d bytes: %s)", - len(msg[MSGHEADER_LEN:]), hex.EncodeToString(msg)) - return zgrab2.SCAN_PROTOCOL_ERROR, &result, err - } bson.Unmarshal(msg[MSGHEADER_LEN+resp_offset:], &result.BuildInfo) return zgrab2.SCAN_SUCCESS, &result, err diff --git a/modules/mongodb/types.go b/modules/mongodb/types.go index ca5f15e03..724aabb89 100644 --- a/modules/mongodb/types.go +++ b/modules/mongodb/types.go @@ -1,40 +1,40 @@ package mongodb import ( - "io" "encoding/binary" "fmt" "github.com/zmap/zgrab2" + "io" ) const ( - OP_REPLY = 1 - OP_UPDATE = 2001 - OP_INSERT = 2002 - RESERVED = 2003 - OP_QUERY = 2004 - OP_GET_MORE = 2005 - OP_DELETE = 2006 - OP_KILL_CURSORS = 2007 - OP_COMMAND = 2010 - OP_COMMANDREPLY = 2011 - OP_MSG = 2013 + OP_REPLY = 1 + OP_UPDATE = 2001 + OP_INSERT = 2002 + RESERVED = 2003 + OP_QUERY = 2004 + OP_GET_MORE = 2005 + OP_DELETE = 2006 + OP_KILL_CURSORS = 2007 + OP_COMMAND = 2010 + OP_COMMANDREPLY = 2011 + OP_MSG = 2013 - QUERY_RESERVED = 1 - QUERY_TAILABLEC = 2 - QUERY_SLAVEOK = 4 - QUERY_OPLOGREPLAY = 8 - QUERY_NOCTIMEOUT = 16 - QUERY_AWAITDATA = 32 - QUERY_EXHAUST = 64 - QUERY_PARTIAL = 128 + QUERY_RESERVED = 1 + QUERY_TAILABLEC = 2 + QUERY_SLAVEOK = 4 + QUERY_OPLOGREPLAY = 8 + QUERY_NOCTIMEOUT = 16 + QUERY_AWAITDATA = 32 + QUERY_EXHAUST = 64 + QUERY_PARTIAL = 128 - QUERY_RESP_CUR_NOTFOUND = 1 - QUERY_RESP_FAILED = 2 - QUERY_RESP_SHARD_STALE = 4 - QUERY_RESP_AWAIT_CAP = 8 + QUERY_RESP_CUR_NOTFOUND = 1 + QUERY_RESP_FAILED = 2 + QUERY_RESP_SHARD_STALE = 4 + QUERY_RESP_AWAIT_CAP = 8 - MSGHEADER_LEN = 16 + MSGHEADER_LEN = 16 ) // Connection holds the state for a single connection within a scan. @@ -55,7 +55,7 @@ func (conn *Connection) ReadMsg() ([]byte, error) { } msglen := binary.LittleEndian.Uint32(msglen_buf[:]) if msglen < 4 || msglen > 5125 { - // msglen is length of message which includes msglen itself; Less than + // msglen is length of message which includes msglen itself; Less than // four is invalid. More than a few K probably mean this isn't actually // a mongodb server. return nil, fmt.Errorf("Server sent invalid message: msglen = %d", msglen) diff --git a/modules/mssql/connection.go b/modules/mssql/connection.go index dab750454..c1de185e0 100644 --- a/modules/mssql/connection.go +++ b/modules/mssql/connection.go @@ -235,6 +235,7 @@ type ServerVersion struct { // Decode a VERSION response and return the parsed ServerVersion struct // As defined in the MSDN docs, these come from token 0: +// // VERSION -- UL_VERSION = ((US_BUILD<<16)|(VER_SQL_MINOR<<8)|( VER_SQL_MAJOR)) func decodeServerVersion(buf []byte) *ServerVersion { if len(buf) != 6 { diff --git a/modules/mssql/scanner.go b/modules/mssql/scanner.go index 708fa96c1..118f73baa 100644 --- a/modules/mssql/scanner.go +++ b/modules/mssql/scanner.go @@ -19,7 +19,7 @@ import ( ) // ScanResults contains detailed information about each step of the -// MySQL handshake, and can be encoded to JSON. +// MSSQL handshake, and can be encoded to JSON. type ScanResults struct { // Version is the version returned by the server in the PRELOGIN response. // Its format is "MAJOR.MINOR.BUILD_NUMBER". @@ -43,10 +43,10 @@ type ScanResults struct { // Flags defines the command-line configuration options for the module. type Flags struct { - zgrab2.BaseFlags - zgrab2.TLSFlags - EncryptMode string `long:"encrypt-mode" description:"The type of encryption to request in the pre-login step. One of ENCRYPT_ON, ENCRYPT_OFF, ENCRYPT_NOT_SUP." default:"ENCRYPT_ON"` - Verbose bool `long:"verbose" description:"More verbose logging, include debug fields in the scan results"` + zgrab2.BaseFlags `group:"Basic Options"` + zgrab2.TLSFlags `group:"TLS Options"` + EncryptMode string `long:"encrypt-mode" description:"The type of encryption to request in the pre-login step. One of ENCRYPT_ON, ENCRYPT_OFF, ENCRYPT_NOT_SUP." default:"ENCRYPT_ON"` + Verbose bool `long:"verbose" description:"More verbose logging, include debug fields in the scan results"` } // Module is the implementation of zgrab2.Module for the MSSQL protocol. @@ -60,7 +60,7 @@ type Scanner struct { // NewFlags returns a default Flags instance to be populated by the command // line flags. -func (module *Module) NewFlags() interface{} { +func (module *Module) NewFlags() any { return new(Flags) } @@ -121,7 +121,7 @@ func (scanner *Scanner) GetTrigger() string { // 4. If the server encrypt mode is EncryptModeNotSupported, break. // 5. Perform a TLS handshake, with the packets wrapped in TDS headers. // 6. Decode the Version and InstanceName from the PRELOGIN response -func (scanner *Scanner) Scan(target zgrab2.ScanTarget) (zgrab2.ScanStatus, interface{}, error) { +func (scanner *Scanner) Scan(target zgrab2.ScanTarget) (zgrab2.ScanStatus, any, error) { conn, err := target.Open(&scanner.config.BaseFlags) if err != nil { return zgrab2.TryGetScanStatus(err), nil, err diff --git a/modules/mysql/scanner.go b/modules/mysql/scanner.go index 6a45543fa..1f9d3ebfa 100644 --- a/modules/mysql/scanner.go +++ b/modules/mysql/scanner.go @@ -132,9 +132,9 @@ func readResultsFromConnectionLog(connectionLog *mysql.ConnectionLog) *ScanResul // Flags give the command-line flags for the MySQL module. type Flags struct { - zgrab2.BaseFlags - zgrab2.TLSFlags - Verbose bool `long:"verbose" description:"More verbose logging, include debug fields in the scan results"` + zgrab2.BaseFlags `group:"Basic Options"` + zgrab2.TLSFlags `group:"TLS Options"` + Verbose bool `long:"verbose" description:"More verbose logging, include debug fields in the scan results"` } // Module is the implementation of the zgrab2.Module interface. @@ -156,7 +156,7 @@ func RegisterModule() { } // NewFlags returns a new default flags object. -func (m *Module) NewFlags() interface{} { +func (m *Module) NewFlags() any { return new(Flags) } @@ -211,11 +211,11 @@ func (scanner *Scanner) GetTrigger() string { } // Scan probles the target for a MySQL server. -// 1. Connects and waits to receive the handshake packet. -// 2. If the server supports SSL, send an SSLRequest packet, then -// perform the standard TLS actions. -// 3. Process and return the results. -func (s *Scanner) Scan(t zgrab2.ScanTarget) (status zgrab2.ScanStatus, result interface{}, thrown error) { +// 1. Connects and waits to receive the handshake packet. +// 2. If the server supports SSL, send an SSLRequest packet, then +// perform the standard TLS actions. +// 3. Process and return the results. +func (s *Scanner) Scan(t zgrab2.ScanTarget) (status zgrab2.ScanStatus, result any, thrown error) { var tlsConn *zgrab2.TLSConnection sql := mysql.NewConnection(&mysql.Config{}) defer func() { diff --git a/modules/ntp/scanner.go b/modules/ntp/scanner.go index 083af17ea..6ea617a1d 100644 --- a/modules/ntp/scanner.go +++ b/modules/ntp/scanner.go @@ -24,6 +24,7 @@ import ( "time" log "github.com/sirupsen/logrus" + "github.com/zmap/zgrab2" ) @@ -793,7 +794,7 @@ type Results struct { // Flags holds the command-line flags for the scanner. type Flags struct { - zgrab2.BaseFlags + zgrab2.BaseFlags `group:"Basic Options"` zgrab2.UDPFlags Verbose bool `long:"verbose" description:"More verbose logging, include debug fields in the scan results"` Version uint8 `long:"version" description:"The version number to pass to the Server." default:"3"` @@ -822,7 +823,7 @@ func RegisterModule() { } // NewFlags returns a flags instant to be populated with the command line args -func (module *Module) NewFlags() interface{} { +func (module *Module) NewFlags() any { return new(Flags) } @@ -997,16 +998,17 @@ func (scanner *Scanner) GetTime(sock net.Conn) (*NTPHeader, error) { // Scan scans the configured server with the settings provided by the command // line arguments as follows: -// 1. If SkipGetTime is not set, send a GetTime packet to the server and read -// the response packet into the result. -// 2. If MonList is set, send a MONLIST packet to the server and read the -// response packet into the result. +// 1. If SkipGetTime is not set, send a GetTime packet to the server and read +// the response packet into the result. +// 2. If MonList is set, send a MONLIST packet to the server and read the +// response packet into the result. +// // The presence of an NTP service at the target can be inferred by a non-nil // result -- if the service does not return any data or if the response is not // a valid NTP packet, then the result will be nil. // The presence of a DDoS-amplifying target can be inferred by // result.MonListReponse being present. -func (scanner *Scanner) Scan(t zgrab2.ScanTarget) (zgrab2.ScanStatus, interface{}, error) { +func (scanner *Scanner) Scan(t zgrab2.ScanTarget) (zgrab2.ScanStatus, any, error) { sock, err := t.OpenUDP(&scanner.config.BaseFlags, &scanner.config.UDPFlags) if err != nil { return zgrab2.TryGetScanStatus(err), nil, err diff --git a/modules/oracle/connection.go b/modules/oracle/connection.go index 65e046378..e47ba39e2 100644 --- a/modules/oracle/connection.go +++ b/modules/oracle/connection.go @@ -152,11 +152,11 @@ func (conn *Connection) Connect(connectDescriptor string) (*HandshakeLog, error) // TODO: Variable fields in the connect descriptor (e.g. host?) connectPacket := &TNSConnect{ - Version: conn.scanner.config.Version, - MinVersion: conn.scanner.config.MinVersion, - GlobalServiceOptions: ServiceOptions(u16Flag(conn.scanner.config.GlobalServiceOptions)), - SDU: u16Flag(conn.scanner.config.SDU), - TDU: u16Flag(conn.scanner.config.TDU), + Version: conn.scanner.config.Version, + MinVersion: conn.scanner.config.MinVersion, + GlobalServiceOptions: ServiceOptions(u16Flag(conn.scanner.config.GlobalServiceOptions)), + SDU: u16Flag(conn.scanner.config.SDU), + TDU: u16Flag(conn.scanner.config.TDU), ProtocolCharacteristics: NTProtocolCharacteristics(u16Flag(conn.scanner.config.ProtocolCharacterisics)), MaxBeforeAck: 0, ByteOrder: defaultByteOrder, @@ -250,7 +250,7 @@ func (conn *Connection) Connect(connectDescriptor string) (*HandshakeLog, error) Version: encodeReleaseVersion(conn.scanner.config.ReleaseVersion), Options: NSNOptions(0), Services: []NSNService{ - NSNService{ + { Type: NSNServiceSupervisor, Values: []NSNValue{ *NSNValueVersion(conn.scanner.config.ReleaseVersion), @@ -259,7 +259,7 @@ func (conn *Connection) Connect(connectDescriptor string) (*HandshakeLog, error) }, Marker: 0, }, - NSNService{ + { Type: NSNServiceAuthentication, Values: []NSNValue{ *NSNValueVersion(conn.scanner.config.ReleaseVersion), @@ -270,7 +270,7 @@ func (conn *Connection) Connect(connectDescriptor string) (*HandshakeLog, error) }, Marker: 0, }, - NSNService{ + { Type: NSNServiceEncryption, Values: []NSNValue{ *NSNValueVersion(conn.scanner.config.ReleaseVersion), @@ -278,7 +278,7 @@ func (conn *Connection) Connect(connectDescriptor string) (*HandshakeLog, error) }, Marker: 0, }, - NSNService{ + { Type: NSNServiceDataIntegrity, Values: []NSNValue{ *NSNValueVersion(conn.scanner.config.ReleaseVersion), diff --git a/modules/oracle/scanner.go b/modules/oracle/scanner.go index 752e51250..2ff026305 100644 --- a/modules/oracle/scanner.go +++ b/modules/oracle/scanner.go @@ -41,8 +41,8 @@ type ScanResults struct { // Flags holds the command-line configuration for the HTTP scan module. // Populated by the framework. type Flags struct { - zgrab2.BaseFlags - zgrab2.TLSFlags + zgrab2.BaseFlags `group:"Basic Options"` + zgrab2.TLSFlags `group:"TLS Options"` // Version is the client version number sent to the server in the Connect // packet. TODO: Find version number mappings. @@ -113,7 +113,7 @@ func RegisterModule() { } // NewFlags returns a default Flags object. -func (module *Module) NewFlags() interface{} { +func (module *Module) NewFlags() any { return new(Flags) } @@ -209,7 +209,7 @@ func (scanner *Scanner) getTNSDriver() *TNSDriver { // 6. If the response is... // a. ...a Resend packet, then set result.DidResend and re-send the packet. // b. ...a Refused packet, then set the result.RefuseReason and RefuseError, -// then exit. +// then exit. // c. ...a Redirect packet, then set result.RedirectTarget and exit. // d. ...an Accept packet, go to 7 // e. ...anything else: exit with SCAN_APPLICATION_ERROR @@ -217,7 +217,7 @@ func (scanner *Scanner) getTNSDriver() *TNSDriver { // into the results, then send a Native Security Negotiation Data packet. // 8. If the response is not a Data packet, exit with SCAN_APPLICATION_ERROR. // 9. Pull the versions out of the response and exit with SCAN_SUCCESS. -func (scanner *Scanner) Scan(t zgrab2.ScanTarget) (zgrab2.ScanStatus, interface{}, error) { +func (scanner *Scanner) Scan(t zgrab2.ScanTarget) (zgrab2.ScanStatus, any, error) { var results *ScanResults sock, err := t.Open(&scanner.config.BaseFlags) diff --git a/modules/oracle/types.go b/modules/oracle/types.go index 368a7e60d..17af1de2c 100644 --- a/modules/oracle/types.go +++ b/modules/oracle/types.go @@ -580,7 +580,7 @@ func startReading(reader io.Reader) *chainedReader { // read the value from the stream, unless there was a previous error on the // reader. Uses binary.Read() to decode the data. dest must be a pointer. -func (reader *chainedReader) read(dest interface{}) *chainedReader { +func (reader *chainedReader) read(dest any) *chainedReader { if reader.err != nil { return reader } @@ -1253,7 +1253,7 @@ func (value *NSNValue) String() string { func (value *NSNValue) MarshalJSON() ([]byte, error) { type Aux struct { Type NSNValueType `json:"type"` - Value interface{} `json:"value"` + Value any `json:"value"` } ret := Aux{ Type: value.Type, diff --git a/modules/oracle/types_test.go b/modules/oracle/types_test.go index 7d104c38d..6b65e2b88 100644 --- a/modules/oracle/types_test.go +++ b/modules/oracle/types_test.go @@ -66,14 +66,14 @@ func fromHex(h string) []byte { } var validHeaders = map[string]TNSHeader{ - "00 08 00 01 02 03 00 45": TNSHeader{ + "00 08 00 01 02 03 00 45": { Length: 8, PacketChecksum: 1, Type: 2, Flags: 3, HeaderChecksum: 0x45, }, - "f2 1e 01 00 07 06 76 54": TNSHeader{ + "f2 1e 01 00 07 06 76 54": { Length: 0xF21E, PacketChecksum: 0x0100, Type: 0x07, @@ -95,7 +95,7 @@ func orPanic(ret []byte, err error) []byte { } var validTNSData = map[string]TestCase{ - "00.empty": TestCase{ + "00.empty": { Encoding: "00 0A 00 00 06 00 00 00 80 00", Value: &TNSPacket{ Header: &TNSHeader{ @@ -111,7 +111,7 @@ var validTNSData = map[string]TestCase{ }, }, }, - "00.trivial": TestCase{ + "00.trivial": { Encoding: "00 10 00 00 06 00 00 00 00 01 31 32 33 34 35 36", Value: &TNSPacket{ Header: &TNSHeader{ @@ -127,7 +127,7 @@ var validTNSData = map[string]TestCase{ }, }, }, - "01.NSN.Request": TestCase{ + "01.NSN.Request": { Encoding: "00 a8 00 00 06 00 00 00 00 00 de ad be ef 00 9e " + /* ................ */ "0a 20 03 00 00 04 00 00 04 00 03 00 00 00 00 00 " + /* . .............. */ "04 00 05 0a 20 03 00 00 08 00 01 00 00 04 ec 19 " + /* .... ........... */ @@ -154,7 +154,7 @@ var validTNSData = map[string]TestCase{ Version: encodeReleaseVersion("10.2.0.3.0"), Options: NSNOptions(0), Services: []NSNService{ - NSNService{ + { Type: 4, Values: []NSNValue{ *NSNValueVersion("10.2.0.3.0"), @@ -163,45 +163,45 @@ var validTNSData = map[string]TestCase{ }, Marker: 0, }, - NSNService{ + { Type: 1, Values: []NSNValue{ *NSNValueVersion("10.2.0.3.0"), - NSNValue{ + { Type: 3, Value: fromHex("e0 e1"), }, - NSNValue{ + { Type: 6, Value: fromHex("fc ff"), }, - NSNValue{ + { Type: 2, Value: fromHex("01"), }, - NSNValue{ + { Type: 0, Value: []byte("NTS"), }, }, Marker: 0, }, - NSNService{ + { Type: 2, Values: []NSNValue{ *NSNValueVersion("10.2.0.3.0"), - NSNValue{ + { Type: 1, Value: fromHex("00 11 06 10 0c 0f 0a 0b 08 02 01 03"), }, }, Marker: 0, }, - NSNService{ + { Type: 3, Values: []NSNValue{ *NSNValueVersion("10.2.0.3.0"), - NSNValue{ + { Type: 1, Value: fromHex("00 03 01"), }, @@ -215,7 +215,7 @@ var validTNSData = map[string]TestCase{ } var validTNSConnect = map[string]TestCase{ - "01. 013A-0139": TestCase{ + "01. 013A-0139": { Encoding: "00 ca 00 00 01 00 00 00 01 3a 01 2c 0c 41 20 00 " + /* .........:.,.A . */ "ff ff 7f 08 00 00 01 00 00 90 00 3a 00 00 08 00 " + /* ...........:.... */ "41 41 00 00 00 00 00 00 00 00 00 00 00 00 00 00 " + /* AA.............. */ @@ -232,11 +232,11 @@ var validTNSConnect = map[string]TestCase{ Value: &TNSPacket{ Header: &TNSHeader{Length: 0x00ca, PacketChecksum: 0, Type: PacketTypeConnect, Flags: 0, HeaderChecksum: 0}, Body: &TNSConnect{ - Version: 0x013a, - MinVersion: 0x012c, - GlobalServiceOptions: SOHeaderChecksum | SOFullDuplex | SOUnknown0040 | SOUnknown0001, // (0x0c41) - SDU: 0x2000, - TDU: 0xffff, + Version: 0x013a, + MinVersion: 0x012c, + GlobalServiceOptions: SOHeaderChecksum | SOFullDuplex | SOUnknown0040 | SOUnknown0001, // (0x0c41) + SDU: 0x2000, + TDU: 0xffff, ProtocolCharacteristics: NTPCConfirmedRelease | NTPCTDUBasedIO | NTPCSpawnerRunning | NTPCDataTest | NTPCCallbackIO | NTPCAsyncIO | NTPCPacketIO | NTPCGenerateSIGURG, // 0x7F08 MaxBeforeAck: 0, ByteOrder: defaultByteOrder, @@ -254,7 +254,7 @@ var validTNSConnect = map[string]TestCase{ }, }, }, - "02. 138-138": TestCase{ + "02. 138-138": { Encoding: "01 00 00 00 01 04 00 00 01 38 01 2c 00 00 08 00 " + /* .........8.,.... */ "7f ff 86 0e 00 00 01 00 00 c6 00 3a 00 00 02 00 " + /* ...........:.... */ "61 61 00 00 00 00 00 00 00 00 00 00 04 10 00 00 " + /* aa.............. */ @@ -274,11 +274,11 @@ var validTNSConnect = map[string]TestCase{ Value: &TNSPacket{ Header: &TNSHeader{Length: 0x0100, PacketChecksum: 0, Type: PacketTypeConnect, Flags: 0x04, HeaderChecksum: 0}, Body: &TNSConnect{ - Version: 0x0138, - MinVersion: 0x012c, - GlobalServiceOptions: 0, - SDU: 0x0800, - TDU: 0x7fff, + Version: 0x0138, + MinVersion: 0x012c, + GlobalServiceOptions: 0, + SDU: 0x0800, + TDU: 0x7fff, ProtocolCharacteristics: NTPCHangon | NTPCCallbackIO | NTPCAsyncIO | NTPCGenerateSIGURG | NTPCUrgentIO | NTPCFullDuplex, // 0x860e MaxBeforeAck: 0, ByteOrder: defaultByteOrder, @@ -296,7 +296,7 @@ var validTNSConnect = map[string]TestCase{ }, }, }, - "03. 138-138": TestCase{ + "03. 138-138": { Encoding: "00 ec 00 00 01 04 00 00 01 38 01 2c 00 00 08 00 " + /* .........8.,.... */ "7f ff 86 0e 00 00 01 00 00 b2 00 3a 00 00 02 00 " + /* ...........:.... */ "61 61 00 00 00 00 00 00 00 00 00 00 10 ec 00 00 " + /* aa.............. */ @@ -315,11 +315,11 @@ var validTNSConnect = map[string]TestCase{ Value: &TNSPacket{ Header: &TNSHeader{Length: 0x00EC, PacketChecksum: 0, Type: PacketTypeConnect, Flags: 0x04, HeaderChecksum: 0}, Body: &TNSConnect{ - Version: 0x0138, - MinVersion: 0x012c, - GlobalServiceOptions: 0, - SDU: 0x0800, - TDU: 0x7fff, + Version: 0x0138, + MinVersion: 0x012c, + GlobalServiceOptions: 0, + SDU: 0x0800, + TDU: 0x7fff, ProtocolCharacteristics: NTPCHangon | NTPCCallbackIO | NTPCAsyncIO | NTPCGenerateSIGURG | NTPCUrgentIO | NTPCFullDuplex, // 0x860e MaxBeforeAck: 0, ByteOrder: defaultByteOrder, @@ -337,7 +337,7 @@ var validTNSConnect = map[string]TestCase{ }, }, }, - "unknown": TestCase{ + "unknown": { Encoding: "00 d7 00 00 01 00 00 00 01 3b 01 2c 0c 41 20 00 " + /* .........;.,.A . */ "ff ff 7f 08 00 00 01 00 00 91 00 46 00 00 08 00 " + /* ...........F.... */ "41 41 00 00 00 00 00 00 00 00 00 00 00 00 00 00 " + /* AA.............. */ @@ -355,11 +355,11 @@ var validTNSConnect = map[string]TestCase{ Value: &TNSPacket{ Header: &TNSHeader{Length: 0x00d7, PacketChecksum: 0, Type: PacketTypeConnect, Flags: 0, HeaderChecksum: 0}, Body: &TNSConnect{ - Version: 0x013b, - MinVersion: 0x012c, - GlobalServiceOptions: SOHeaderChecksum | SOFullDuplex | SOUnknown0040 | SOUnknown0001, // (0x0c41) - SDU: 0x2000, - TDU: 0xffff, + Version: 0x013b, + MinVersion: 0x012c, + GlobalServiceOptions: SOHeaderChecksum | SOFullDuplex | SOUnknown0040 | SOUnknown0001, // (0x0c41) + SDU: 0x2000, + TDU: 0xffff, ProtocolCharacteristics: NTPCConfirmedRelease | NTPCTDUBasedIO | NTPCSpawnerRunning | NTPCDataTest | NTPCCallbackIO | NTPCAsyncIO | NTPCPacketIO | NTPCGenerateSIGURG, // 0x7F08 MaxBeforeAck: 0, ByteOrder: defaultByteOrder, @@ -377,7 +377,7 @@ var validTNSConnect = map[string]TestCase{ }, }, }, - "unknown3a": TestCase{ + "unknown3a": { Encoding: "00 d7 00 00 01 00 00 00 01 3b 01 2c 0c 41 20 00 " + /* .........;.,.A . */ "ff ff 7f 08 00 00 01 00 00 91 00 46 00 00 08 00 " + /* ...........F.... */ "41 41 00 00 00 00 00 00 00 00 00 00 00 00 00 00 " + /* AA.............. */ @@ -395,11 +395,11 @@ var validTNSConnect = map[string]TestCase{ Value: &TNSPacket{ Header: &TNSHeader{Length: 0x00d7, PacketChecksum: 0, Type: PacketTypeConnect, Flags: 0, HeaderChecksum: 0}, Body: &TNSConnect{ - Version: 0x013b, - MinVersion: 0x012c, - GlobalServiceOptions: SOHeaderChecksum | SOFullDuplex | SOUnknown0040 | SOUnknown0001, // (0x0c41) - SDU: 0x2000, - TDU: 0xffff, + Version: 0x013b, + MinVersion: 0x012c, + GlobalServiceOptions: SOHeaderChecksum | SOFullDuplex | SOUnknown0040 | SOUnknown0001, // (0x0c41) + SDU: 0x2000, + TDU: 0xffff, ProtocolCharacteristics: NTPCConfirmedRelease | NTPCTDUBasedIO | NTPCSpawnerRunning | NTPCDataTest | NTPCCallbackIO | NTPCAsyncIO | NTPCPacketIO | NTPCGenerateSIGURG, // 0x7F08 MaxBeforeAck: 0, ByteOrder: defaultByteOrder, @@ -420,7 +420,7 @@ var validTNSConnect = map[string]TestCase{ } var validTNSAccept = map[string]TestCase{ - "01. 013A-0139": TestCase{ + "01. 013A-0139": { Encoding: "00 20 00 00 02 00 00 00 01 39 00 00 08 00 7f ff " + /* . .......9...... */ "01 00 00 00 00 20 61 61 00 00 00 00 00 00 00 00 ", /* ..... aa........ */ Value: &TNSPacket{ @@ -442,7 +442,7 @@ var validTNSAccept = map[string]TestCase{ }, } -func serialize(val interface{}) []byte { +func serialize(val any) []byte { // According to the comments in json.Marshal, JSON object keys are sorted, // so this is suitable for comparison. ret, err := json.Marshal(val) @@ -587,7 +587,7 @@ func TestTNSData(t *testing.T) { var descriptorValues = map[string]Descriptor{ //"()": Descriptor{}, - "(DESCRIPTION=(ERR=1153)(VSNNUM=186647040)(ERROR_STACK=(ERROR=(CODE=1153)(EMFI=4)(ARGS='()'))(ERROR=(CODE=303)(EMFI=1))))": Descriptor{ + "(DESCRIPTION=(ERR=1153)(VSNNUM=186647040)(ERROR_STACK=(ERROR=(CODE=1153)(EMFI=4)(ARGS='()'))(ERROR=(CODE=303)(EMFI=1))))": { DescriptorEntry{"DESCRIPTION.ERR", "1153"}, DescriptorEntry{"DESCRIPTION.VSNNUM", "186647040"}, DescriptorEntry{"DESCRIPTION.ERROR_STACK.ERROR.CODE", "1153"}, @@ -596,7 +596,7 @@ var descriptorValues = map[string]Descriptor{ DescriptorEntry{"DESCRIPTION.ERROR_STACK.ERROR.CODE", "303"}, DescriptorEntry{"DESCRIPTION.ERROR_STACK.ERROR.EMFI", "1"}, }, - "(DESCRIPTION=\n\t(ERR=1153)\n\t(VSNNUM=186647040)\n\t(ERROR_STACK=\n\t\t(ERROR=(CODE=1153)(EMFI=4)(ARGS='()'))\n\t\t(ERROR=(CODE=303)(EMFI=1))\n\t)\n)\n": Descriptor{ + "(DESCRIPTION=\n\t(ERR=1153)\n\t(VSNNUM=186647040)\n\t(ERROR_STACK=\n\t\t(ERROR=(CODE=1153)(EMFI=4)(ARGS='()'))\n\t\t(ERROR=(CODE=303)(EMFI=1))\n\t)\n)\n": { DescriptorEntry{"DESCRIPTION.ERR", "1153"}, DescriptorEntry{"DESCRIPTION.VSNNUM", "186647040"}, DescriptorEntry{"DESCRIPTION.ERROR_STACK.ERROR.CODE", "1153"}, @@ -605,7 +605,7 @@ var descriptorValues = map[string]Descriptor{ DescriptorEntry{"DESCRIPTION.ERROR_STACK.ERROR.CODE", "303"}, DescriptorEntry{"DESCRIPTION.ERROR_STACK.ERROR.EMFI", "1"}, }, - " (DESCRIPTION=\r\n (ERR=1153)\r\n (VSNNUM=186647040)\r\n (ERROR_STACK=\r\n (ERROR=(CODE=1153)(EMFI=4)(ARGS='()'))\r\n (ERROR=(CODE=303)(EMFI=1))\r\n )\r\n) ": Descriptor{ + " (DESCRIPTION=\r\n (ERR=1153)\r\n (VSNNUM=186647040)\r\n (ERROR_STACK=\r\n (ERROR=(CODE=1153)(EMFI=4)(ARGS='()'))\r\n (ERROR=(CODE=303)(EMFI=1))\r\n )\r\n) ": { DescriptorEntry{"DESCRIPTION.ERR", "1153"}, DescriptorEntry{"DESCRIPTION.VSNNUM", "186647040"}, DescriptorEntry{"DESCRIPTION.ERROR_STACK.ERROR.CODE", "1153"}, @@ -614,7 +614,7 @@ var descriptorValues = map[string]Descriptor{ DescriptorEntry{"DESCRIPTION.ERROR_STACK.ERROR.CODE", "303"}, DescriptorEntry{"DESCRIPTION.ERROR_STACK.ERROR.EMFI", "1"}, }, - "(DESCRIPTION=(ERR=1153)(VSNNUM=186647040)(ERROR_STACK=(ERROR=(CODE=1153)(EMFI=4)(ARGS='(embedded \\'quotes\\')'))(ERROR=(CODE= \" (23) \" )(EMFI=1))))": Descriptor{ + "(DESCRIPTION=(ERR=1153)(VSNNUM=186647040)(ERROR_STACK=(ERROR=(CODE=1153)(EMFI=4)(ARGS='(embedded \\'quotes\\')'))(ERROR=(CODE= \" (23) \" )(EMFI=1))))": { DescriptorEntry{"DESCRIPTION.ERR", "1153"}, DescriptorEntry{"DESCRIPTION.VSNNUM", "186647040"}, DescriptorEntry{"DESCRIPTION.ERROR_STACK.ERROR.CODE", "1153"}, @@ -623,7 +623,7 @@ var descriptorValues = map[string]Descriptor{ DescriptorEntry{"DESCRIPTION.ERROR_STACK.ERROR.CODE", "\" (23) \""}, DescriptorEntry{"DESCRIPTION.ERROR_STACK.ERROR.EMFI", "1"}, }, - "(DESCRIPTION=(CONNECT_DATA=(SERVICE_NAME=)(CID=(PROGRAM=C:\\Users\\localadmin\\work\\oracle\\instantclient_11_2\\sqlplus.exe)(HOST=win10pc)(USER=localadmin)))(ADDRESS=(PROTOCOL=TCP)(HOST=127.0.0.1)(PORT=1521)))": Descriptor{ + "(DESCRIPTION=(CONNECT_DATA=(SERVICE_NAME=)(CID=(PROGRAM=C:\\Users\\localadmin\\work\\oracle\\instantclient_11_2\\sqlplus.exe)(HOST=win10pc)(USER=localadmin)))(ADDRESS=(PROTOCOL=TCP)(HOST=127.0.0.1)(PORT=1521)))": { DescriptorEntry{"DESCRIPTION.CONNECT_DATA.SERVICE_NAME", ""}, DescriptorEntry{"DESCRIPTION.CONNECT_DATA.CID.PROGRAM", "C:\\Users\\localadmin\\work\\oracle\\instantclient_11_2\\sqlplus.exe"}, DescriptorEntry{"DESCRIPTION.CONNECT_DATA.CID.HOST", "win10pc"}, @@ -635,20 +635,20 @@ var descriptorValues = map[string]Descriptor{ } var descriptorGetValuesTests = map[string]map[string][]string{ - "(A=(B=(C=ABC1)(C=ABC2)(D=ABD))(E=AE)(F=))": map[string][]string{ - "A.B.C": []string{"ABC1", "ABC2"}, - "A.B.D": []string{"ABD"}, - "A.E": []string{"AE"}, - "does.not.exist": []string{}, - "A.F": []string{""}, + "(A=(B=(C=ABC1)(C=ABC2)(D=ABD))(E=AE)(F=))": { + "A.B.C": {"ABC1", "ABC2"}, + "A.B.D": {"ABD"}, + "A.E": {"AE"}, + "does.not.exist": {}, + "A.F": {""}, }, - "(A=(B=(C=ABC1)(D=ABD1))(B=(C=ABC2)(D=ABD2))(B=(E=ABE)(D=ABD3))(F=(G=(H=AFGH)))(I=)(I=iii)(I=)(I=))": map[string][]string{ - "A.B.C": []string{"ABC1", "ABC2"}, - "A.B.D": []string{"ABD1", "ABD2", "ABD3"}, - "A.B.E": []string{"ABE"}, - "A.F.G.H": []string{"AFGH"}, - "does.not.exist": []string{}, - "A.I": []string{"", "iii", "", ""}, + "(A=(B=(C=ABC1)(D=ABD1))(B=(C=ABC2)(D=ABD2))(B=(E=ABE)(D=ABD3))(F=(G=(H=AFGH)))(I=)(I=iii)(I=)(I=))": { + "A.B.C": {"ABC1", "ABC2"}, + "A.B.D": {"ABD1", "ABD2", "ABD3"}, + "A.B.E": {"ABE"}, + "A.F.G.H": {"AFGH"}, + "does.not.exist": {}, + "A.I": {"", "iii", "", ""}, }, } @@ -673,14 +673,14 @@ type GetValueTestResult struct { } var descriptorGetValueTests = map[string]map[string]GetValueTestResult{ - "(A=(B=(C=ABC1)(C=ABC2)(D=ABD))(E=AE)(F=))": map[string]GetValueTestResult{ + "(A=(B=(C=ABC1)(C=ABC2)(D=ABD))(E=AE)(F=))": { "A.B.C": {Value: "", Error: ErrUnexpectedResponse}, "A.B.D": {Value: "ABD", Error: nil}, "A.E": {Value: "AE", Error: nil}, "does.not.exist": {Value: "", Error: ErrUnexpectedResponse}, "A.F": {Value: "", Error: nil}, }, - "(A=(B=(C=ABC1)(D=ABD1))(B=(C=ABC2)(D=ABD2))(B=(E=ABE)(D=ABD3))(F=(G=(H=AFGH)))(I=)(I=))": map[string]GetValueTestResult{ + "(A=(B=(C=ABC1)(D=ABD1))(B=(C=ABC2)(D=ABD2))(B=(E=ABE)(D=ABD3))(F=(G=(H=AFGH)))(I=)(I=))": { "A.B.C": {Value: "", Error: ErrUnexpectedResponse}, "A.B.D": {Value: "", Error: ErrUnexpectedResponse}, "A.B.E": {Value: "ABE", Error: nil}, diff --git a/modules/pop3/pop3.go b/modules/pop3/pop3.go index 2a8152ba5..8afa2d39f 100644 --- a/modules/pop3/pop3.go +++ b/modules/pop3/pop3.go @@ -4,9 +4,9 @@ package pop3 import ( + "io" "net" "regexp" - "io" "github.com/zmap/zgrab2" ) diff --git a/modules/pop3/scanner.go b/modules/pop3/scanner.go index a85d2d830..7fac659ec 100644 --- a/modules/pop3/scanner.go +++ b/modules/pop3/scanner.go @@ -27,7 +27,6 @@ package pop3 import ( "fmt" - "errors" "strings" log "github.com/sirupsen/logrus" @@ -58,8 +57,8 @@ type ScanResults struct { // Flags holds the command-line configuration for the POP3 scan module. // Populated by the framework. type Flags struct { - zgrab2.BaseFlags - zgrab2.TLSFlags + zgrab2.BaseFlags `group:"Basic Options"` + zgrab2.TLSFlags `group:"TLS Options"` // SendHELP indicates that the client should send the HELP command. SendHELP bool `long:"send-help" description:"Send the HELP command"` @@ -99,7 +98,7 @@ func RegisterModule() { } // NewFlags returns a default Flags object. -func (module *Module) NewFlags() interface{} { +func (module *Module) NewFlags() any { return new(Flags) } @@ -170,14 +169,15 @@ func VerifyPOP3Contents(banner string) zgrab2.ScanStatus { case strings.HasPrefix(banner, "-ERR "): return zgrab2.SCAN_APPLICATION_ERROR case strings.HasPrefix(banner, "+OK "), - strings.Contains(banner, "POP3"), - // These are rare for POP3 if they happen at all, - // But it won't hurt to check just in case as a backup - strings.Contains(lowerBanner, "blacklist"), - strings.Contains(lowerBanner, "abuse"), - strings.Contains(lowerBanner, "rbl"), - strings.Contains(lowerBanner, "spamhaus"), - strings.Contains(lowerBanner, "relay"): + banner == "+OK\r\n", + strings.Contains(banner, "POP3"), + // These are rare for POP3 if they happen at all, + // But it won't hurt to check just in case as a backup + strings.Contains(lowerBanner, "blacklist"), + strings.Contains(lowerBanner, "abuse"), + strings.Contains(lowerBanner, "rbl"), + strings.Contains(lowerBanner, "spamhaus"), + strings.Contains(lowerBanner, "relay"): return zgrab2.SCAN_SUCCESS default: return zgrab2.SCAN_PROTOCOL_ERROR @@ -185,17 +185,17 @@ func VerifyPOP3Contents(banner string) zgrab2.ScanStatus { } // Scan performs the POP3 scan. -// 1. Open a TCP connection to the target port (default 110). -// 2. If --pop3s is set, perform a TLS handshake using the command-line -// flags. -// 3. Read the banner. -// 4. If --send-help is sent, send HELP, read the result. -// 5. If --send-noop is sent, send NOOP, read the result. -// 6. If --starttls is sent, send STLS, read the result, negotiate a -// TLS connection using the command-line flags. -// 7. If --send-quit is sent, send QUIT and read the result. -// 8. Close the connection. -func (scanner *Scanner) Scan(target zgrab2.ScanTarget) (zgrab2.ScanStatus, interface{}, error) { +// 1. Open a TCP connection to the target port (default 110). +// 2. If --pop3s is set, perform a TLS handshake using the command-line +// flags. +// 3. Read the banner. +// 4. If --send-help is sent, send HELP, read the result. +// 5. If --send-noop is sent, send NOOP, read the result. +// 6. If --starttls is sent, send STLS, read the result, negotiate a +// TLS connection using the command-line flags. +// 7. If --send-quit is sent, send QUIT and read the result. +// 8. Close the connection. +func (scanner *Scanner) Scan(target zgrab2.ScanTarget) (zgrab2.ScanStatus, any, error) { c, err := target.Open(&scanner.config.BaseFlags) if err != nil { return zgrab2.TryGetScanStatus(err), nil, err @@ -222,7 +222,7 @@ func (scanner *Scanner) Scan(target zgrab2.ScanTarget) (zgrab2.ScanStatus, inter // OR save it to return later sr := VerifyPOP3Contents(banner) if sr == zgrab2.SCAN_PROTOCOL_ERROR { - return sr, nil, errors.New("Invalid response for POP3") + return sr, nil, fmt.Errorf("Invalid POP3 banner: %s", banner) } result.Banner = banner if scanner.config.SendHELP { diff --git a/modules/postgres/connection.go b/modules/postgres/connection.go index c2634150f..fd9f95c2c 100644 --- a/modules/postgres/connection.go +++ b/modules/postgres/connection.go @@ -69,7 +69,7 @@ func (p *ServerPacket) OutputValue() string { l = maxOutputSize } body := hex.EncodeToString(p.Body[:l]) - if p.Length - 4 > uint32(l) { + if p.Length-4 > uint32(l) { body = body + "..." } return fmt.Sprintf("%c: 0x%08x: %s", p.Type, p.Length, body) @@ -79,12 +79,11 @@ func (p *ServerPacket) OutputValue() string { func (p *ServerPacket) ToError() *PostgresError { return &PostgresError{ "severity": "unexpected", - "code": "unexpected error format", - "detail": p.OutputValue(), + "code": "unexpected error format", + "detail": p.OutputValue(), } } - // Send a client packet: a big-endian uint32 length followed by a body. func (c *Connection) Send(body []byte) error { toSend := make([]byte, len(body)+4) @@ -133,9 +132,9 @@ func (c *Connection) tryReadPacket(header byte) (*ServerPacket, *zgrab2.ScanErro } if string(buf[n-2:n]) == "\x0a\x00" { return &ServerPacket{ - Type: header, + Type: header, Length: 0, - Body: append(length[:], buf[:n]...), + Body: append(length[:], buf[:n]...), }, nil } return nil, zgrab2.NewScanError(zgrab2.SCAN_PROTOCOL_ERROR, fmt.Errorf("Server returned too much data: length = 0x%x; first %d bytes = %s", bodyLen, n, hex.EncodeToString(buf[:n]))) @@ -148,20 +147,20 @@ func (c *Connection) tryReadPacket(header byte) (*ServerPacket, *zgrab2.ScanErro if sizeToRead < uint32Len { sizeToRead = uint32Len } - body := make([]byte, sizeToRead - uint32Len) // Length includes the length of the Length uint32 + body := make([]byte, sizeToRead-uint32Len) // Length includes the length of the Length uint32 _, err = io.ReadFull(c.Connection, body) if err != nil && err != io.EOF { return nil, zgrab2.DetectScanError(err) } - if sizeToRead < bodyLen && len(body) + 4 >= maxPacketSize { + if sizeToRead < bodyLen && len(body)+4 >= maxPacketSize { // Warn if we actually truncate (as opposed getting a huge length but only a few bytes are actually available) log.Warnf("Truncated postgres packet from %s: advertised size = %d bytes, read size = %d bytes", c.Target.String(), bodyLen, len(body)) } return &ServerPacket{ - Type: header, + Type: header, Length: bodyLen, - Body: body, + Body: body, }, nil } @@ -312,11 +311,11 @@ func (m *connectionManager) closeConnection(c io.Closer) { func (m *connectionManager) cleanUp() { // first in, last out: empty out the map defer func() { - for conn, _ := range m.connections { + for conn := range m.connections { delete(m.connections, conn) } }() - for connection, _ := range m.connections { + for connection := range m.connections { // Close them all even if there is a panic with one defer func(c io.Closer) { m.closeConnection(c) diff --git a/modules/postgres/scanner.go b/modules/postgres/scanner.go index 8e0becae9..b86a18c46 100644 --- a/modules/postgres/scanner.go +++ b/modules/postgres/scanner.go @@ -116,14 +116,14 @@ type AuthenticationMode struct { // Flags sets the module-specific flags that can be passed in from the // command line. type Flags struct { - zgrab2.BaseFlags - zgrab2.TLSFlags - SkipSSL bool `long:"skip-ssl" description:"If set, do not attempt to negotiate an SSL connection"` - Verbose bool `long:"verbose" description:"More verbose logging, include debug fields in the scan results"` - ProtocolVersion string `long:"protocol-version" description:"The protocol to use in the StartupPacket" default:"3.0"` - User string `long:"user" description:"Username to pass to StartupMessage. If omitted, no user will be sent." default:""` - Database string `long:"database" description:"Database to pass to StartupMessage. If omitted, none will be sent." default:""` - ApplicationName string `long:"application-name" description:"application_name value to pass in StartupMessage. If omitted, none will be sent." default:""` + zgrab2.BaseFlags `group:"Basic Options"` + zgrab2.TLSFlags `group:"TLS Options"` + SkipSSL bool `long:"skip-ssl" description:"If set, do not attempt to negotiate an SSL connection"` + Verbose bool `long:"verbose" description:"More verbose logging, include debug fields in the scan results"` + ProtocolVersion string `long:"protocol-version" description:"The protocol to use in the StartupPacket" default:"3.0"` + User string `long:"user" description:"Username to pass to StartupMessage. If omitted, no user will be sent." default:""` + Database string `long:"database" description:"Database to pass to StartupMessage. If omitted, none will be sent." default:""` + ApplicationName string `long:"application-name" description:"application_name value to pass in StartupMessage. If omitted, none will be sent." default:""` } // Scanner is the zgrab2 scanner type for the postgres protocol @@ -271,7 +271,7 @@ func (results *Results) decodeServerResponse(packets []*ServerPacket) { } // NewFlags returns a default Flags instance. -func (m *Module) NewFlags() interface{} { +func (m *Module) NewFlags() any { return new(Flags) } @@ -375,24 +375,28 @@ func (s *Scanner) getDefaultKVPs() map[string]string { } // Scan does the actual scanning. It opens up to four connections: -// 1. Sends a bogus protocol version in hopes of getting a list of -// supported protcols back. Results here are supported_versions and -// and tls (* if applicable). -// 2. Send a too-high protocol version (255.255) to get full error -// message, including line numbers, which could be useful for probing -// server version. This is where it gets the protcol_error result. -// 3. Send a StartupMessage with a valid protocol version (by default -// 3.0, but this can be overridden on the command line), but omit the -// user field. This is where it gets the startup_error result. -// 4. Only sent if at least one of user/database/application-name -// command line flags are provided. Does the same as #3, but includes -// any/all of user/database/application-name. This is where it gets -// backend_key_data, server_parameters, authentication_mode, -// transaction_status and user_startup_error. // -// * NOTE: TLS is only used for the first connection, and then only if -// both client and server support it. -func (s *Scanner) Scan(t zgrab2.ScanTarget) (status zgrab2.ScanStatus, result interface{}, thrown error) { +// 1. Sends a bogus protocol version in hopes of getting a list of +// supported protcols back. Results here are supported_versions and +// and tls (* if applicable). +// +// 2. Send a too-high protocol version (255.255) to get full error +// message, including line numbers, which could be useful for probing +// server version. This is where it gets the protcol_error result. +// +// 3. Send a StartupMessage with a valid protocol version (by default +// 3.0, but this can be overridden on the command line), but omit the +// user field. This is where it gets the startup_error result. +// +// 4. Only sent if at least one of user/database/application-name +// command line flags are provided. Does the same as #3, but includes +// any/all of user/database/application-name. This is where it gets +// backend_key_data, server_parameters, authentication_mode, +// transaction_status and user_startup_error. +// +// - NOTE: TLS is only used for the first connection, and then only if +// both client and server support it. +func (s *Scanner) Scan(t zgrab2.ScanTarget) (status zgrab2.ScanStatus, result any, thrown error) { var results Results mgr := newConnectionManager() diff --git a/modules/redis/scanner.go b/modules/redis/scanner.go index 567576bbe..230d05645 100644 --- a/modules/redis/scanner.go +++ b/modules/redis/scanner.go @@ -17,19 +17,21 @@ import ( "fmt" "io" "io/ioutil" + "net" "os" "path/filepath" "strconv" "strings" log "github.com/sirupsen/logrus" - "github.com/zmap/zgrab2" "gopkg.in/yaml.v2" + + "github.com/zmap/zgrab2" ) // Flags contains redis-specific command-line flags. type Flags struct { - zgrab2.BaseFlags + zgrab2.BaseFlags `group:"Basic Options"` CustomCommands string `long:"custom-commands" description:"Pathname for JSON/YAML file that contains extra commands to execute. WARNING: This is sent in the clear."` Mappings string `long:"mappings" description:"Pathname for JSON/YAML file that contains mappings for command names."` @@ -37,6 +39,8 @@ type Flags struct { Password string `long:"password" description:"Set a password to use to authenticate to the server. WARNING: This is sent in the clear."` DoInline bool `long:"inline" description:"Send commands using the inline syntax"` Verbose bool `long:"verbose" description:"More verbose logging, include debug fields in the scan results"` + UseTLS bool `long:"use-tls" description:"Sends probe with a TLS connection. Loads TLS module command options."` + zgrab2.TLSFlags `group:"TLS Options"` } // Module implements the zgrab2.Module interface @@ -154,6 +158,9 @@ type Result struct { // simple string "OK" even when authentication is required, unless the // QUIT command was renamed. QuitResponse string `json:"quit_response,omitempty"` + + // TLSLog is the standard TLS log for the connection if used + TLSLog *zgrab2.TLSLog `json:"tls,omitempty"` } // RegisterModule registers the zgrab2 module @@ -166,7 +173,7 @@ func RegisterModule() { } // NewFlags provides an empty instance of the flags that will be filled in by the framework -func (module *Module) NewFlags() interface{} { +func (module *Module) NewFlags() any { return new(Flags) } @@ -221,8 +228,8 @@ func (scan *scan) Close() { defer scan.close() } -func getUnmarshaler(file string) (func([]byte, interface{}) error, error) { - var unmarshaler func([]byte, interface{}) error +func getUnmarshaler(file string) (func([]byte, any) error, error) { + var unmarshaler func([]byte, any) error switch ext := filepath.Ext(file); ext { case ".json": unmarshaler = json.Unmarshal @@ -235,7 +242,7 @@ func getUnmarshaler(file string) (func([]byte, interface{}) error, error) { return unmarshaler, nil } -func (scanner *Scanner) getFileContents(file string, output interface{}) error { +func (scanner *Scanner) getFileContents(file string, output any) error { unmarshaler, err := getUnmarshaler(file) if err != nil { return err @@ -312,16 +319,43 @@ func (scan *scan) SendCommand(cmd string, args ...string) (RedisValue, error) { // StartScan opens a connection to the target and sets up a scan instance for it func (scanner *Scanner) StartScan(target *zgrab2.ScanTarget) (*scan, error) { - conn, err := target.Open(&scanner.config.BaseFlags) + var ( + conn net.Conn + tlsConn *zgrab2.TLSConnection + err error + ) + + isSSL := false + conn, err = target.Open(&scanner.config.BaseFlags) + if err != nil { + return nil, err + } + + if scanner.config.UseTLS { + tlsConn, err = scanner.config.TLSFlags.GetTLSConnection(conn) + if err != nil { + return nil, err + } + if err := tlsConn.Handshake(); err != nil { + return nil, err + } + conn = tlsConn + isSSL = true + } else { + conn, err = target.Open(&scanner.config.BaseFlags) + } + if err != nil { return nil, err } + return &scan{ target: target, scanner: scanner, result: &Result{}, conn: &Connection{ scanner: scanner, + isSSL: isSSL, conn: conn, }, close: func() { conn.Close() }, @@ -372,7 +406,7 @@ func convToUint32(s string) uint32 { // 6. QUIT // The responses for each of these is logged, and if INFO succeeds, the version // is scraped from it. -func (scanner *Scanner) Scan(target zgrab2.ScanTarget) (zgrab2.ScanStatus, interface{}, error) { +func (scanner *Scanner) Scan(target zgrab2.ScanTarget) (zgrab2.ScanStatus, any, error) { // ping, info, quit scan, err := scanner.StartScan(&target) if err != nil { @@ -475,5 +509,6 @@ func (scanner *Scanner) Scan(target zgrab2.ScanTarget) (zgrab2.ScanStatus, inter quitResponse = NullValue } result.QuitResponse = forceToString(quitResponse) + result.TLSLog = scan.conn.GetTLSLog() return zgrab2.SCAN_SUCCESS, &result, nil } diff --git a/modules/redis/types.go b/modules/redis/types.go index f2ad957bb..343825853 100644 --- a/modules/redis/types.go +++ b/modules/redis/types.go @@ -4,7 +4,7 @@ import ( "bytes" "errors" "fmt" - "io" + "net" "strconv" "strings" @@ -329,11 +329,9 @@ var readers map[byte]redisDataReader // Connection holds the state for a single connection within a scan type Connection struct { scanner *Scanner - conn interface { - io.Reader - io.Writer - } - buffer []byte + conn net.Conn + buffer []byte + isSSL bool } // write writes data to the connection, and returns an error if the write fails @@ -425,6 +423,13 @@ func (conn *Connection) ReadRedisValue() (RedisValue, error) { return reader(conn) } +func (conn *Connection) GetTLSLog() *zgrab2.TLSLog { + if !conn.isSSL { + return nil + } + return conn.conn.(*zgrab2.TLSConnection).GetLog() +} + type CustomResponse struct { Command string `json:"command,omitempty"` Arguments string `json:"arguments,omitempty"` diff --git a/modules/redis/types_test.go b/modules/redis/types_test.go index 53abe002e..817496fdf 100644 --- a/modules/redis/types_test.go +++ b/modules/redis/types_test.go @@ -3,9 +3,11 @@ package redis import ( "bytes" "fmt" + "net" "reflect" "strings" "testing" + "time" ) // fakeIO is a simple fake Reader/Writer. Read pulls data from the output @@ -44,6 +46,41 @@ func (fakeio *fakeIO) Provide(buf []byte) { }() } +func (fakeio *fakeIO) Close() error { + return nil +} + +func (fakeio *fakeIO) LocalAddr() net.Addr { + return fakeAddr{} +} + +func (fakeio *fakeIO) RemoteAddr() net.Addr { + return fakeAddr{} +} + +func (fakeio *fakeIO) SetDeadline(t time.Time) error { + return nil +} + +func (fakeio *fakeIO) SetReadDeadline(t time.Time) error { + return nil +} + +func (fakeio *fakeIO) SetWriteDeadline(t time.Time) error { + return nil +} + +// A fake net.Addr +type fakeAddr struct{} + +func (f fakeAddr) Network() string { + return "tcp" +} + +func (f fakeAddr) String() string { + return "127.0.0.1" +} + var bigSimpleString = strings.Repeat("simple,", 1024*1024) var bigBulkString = "--- BEGIN BULK STRING ---\r\n" + bigSimpleString + "\r\n--- END BULK STRING---\r\n" @@ -78,36 +115,36 @@ var integers = map[int64]string{ // redisErrors maps error strings to their encoding var redisErrors = map[string]string{ - "": "-\r\n", + "": "-\r\n", "ERR something went wrong": "-ERR something went wrong\r\n", "singleword": "-singleword\r\n", } // redisErrors maps error strings to their prefixes var redisErrorPrefixes = map[string]string{ - "": "", + "": "", "ERR something went wrong": "ERR", "singleword": "singleword", } // redisErrorMessages maps error strings to their "messages" var redisErrorMessages = map[string]string{ - "": "", + "": "", "ERR something went wrong": "something went wrong", "singleword": "singleword", } // redisArrays maps encoded array values to the corresponding array (Note: reverse key/value order from other maps) var redisArrays = map[string]RedisArray{ - "*0\r\n": RedisArray{}, - "*1\r\n+\r\n": RedisArray{SimpleString("")}, - "*2\r\n*1\r\n*0\r\n*1\r\n$5\r\n12345\r\n": RedisArray{RedisArray{RedisArray{}}, RedisArray{BulkString("12345")}}, + "*0\r\n": {}, + "*1\r\n+\r\n": {SimpleString("")}, + "*2\r\n*1\r\n*0\r\n*1\r\n$5\r\n12345\r\n": {RedisArray{RedisArray{}}, RedisArray{BulkString("12345")}}, "*5\r\n" + "+simpleString\r\n" + "-ERR error message\r\n" + ":12345\r\n" + "$47\r\n*5\r\n+simpleString\r\n-ERR error message\r\n:12345\r\n\r\n" + - "*0\r\n": RedisArray{ + "*0\r\n": { SimpleString("simpleString"), ErrorMessage("ERR error message"), Integer(12345), @@ -126,7 +163,7 @@ func getConnection() (*Connection, *fakeIO) { } // strip s down to 32 chars -func strip(s interface{}) string { +func strip(s any) string { var stringVal string switch v := s.(type) { case SimpleString: diff --git a/modules/siemens/s7.go b/modules/siemens/s7.go index d1ebb689e..a08194c46 100644 --- a/modules/siemens/s7.go +++ b/modules/siemens/s7.go @@ -3,11 +3,21 @@ package siemens import ( "bytes" "encoding/binary" + "fmt" "net" "github.com/zmap/zgrab2" ) +const s7ModuleIdRecordSize = 28 +const ( + s7ModuleIdModuleIndex = 0x1 + s7ModuleIdHardwareIndex = 0x6 + s7ModuleIdFirmwareIndex = 0x7 +) + +const uint16Size = 2 + // ReconnectFunction is used to re-connect to the target to re-try the scan with a different TSAP destination. type ReconnectFunction func() (net.Conn, error) @@ -59,7 +69,7 @@ func GetS7Banner(logStruct *S7Log, connection net.Conn, reconnect ReconnectFunct if err != nil { return err } - parseModuleIdentificatioNRequest(logStruct, &moduleIdentificationResponse) + parseModuleIdentificationRequest(logStruct, &moduleIdentificationResponse) // Make Component Identification request componentIdentificationResponse, err := readRequest(connection, S7_SZL_COMPONENT_IDENTIFICATION) @@ -257,24 +267,81 @@ func parseComponentIdentificationResponse(logStruct *S7Log, s7Packet *S7Packet) return nil } -func parseModuleIdentificatioNRequest(logStruct *S7Log, s7Packet *S7Packet) error { +// moduleIDData represents the data structure of the system status list. +// See https://cache.industry.siemens.com/dl/files/574/1214574/att_44504/v1/SFC_e.pdf +// 33.5 SSL-ID W#16#xy11 - Module Identification +type moduleIDData struct { + Index uint16 // Index of an identification data record + MIFB string // 20 bytes string + BGTyp uint16 // Reserved, 1 word + Ausbg1 uint16 // Version of the module, 1 word + Ausbg2 uint16 // Remaining numbers of the version ID, 1 word +} + +// parseModuleIDDataRecord parses a byte slice into a DataRecord. +func parseModuleIDDataRecord(data []byte) (*moduleIDData, error) { + if len(data) < 28 { + return nil, fmt.Errorf("data slice too short to contain a valid DataRecord") + } + + return &moduleIDData{ + Index: binary.BigEndian.Uint16(data[:2]), + MIFB: string(data[2:22]), + BGTyp: binary.BigEndian.Uint16(data[22:24]), + Ausbg1: binary.BigEndian.Uint16(data[24:26]), + Ausbg2: binary.BigEndian.Uint16(data[26:28]), + }, nil +} + +// Constructs the version number from a moduleIDData record. +func getVersionNumber(record *moduleIDData) string { + // The major, minor, and patch versions are stored in the lower 8 bits of Ausbg1, + // the upper 8 bits of Ausbg2, and the lower 8 bits of Ausbg2, respectively. + major := record.Ausbg1 & 0xFF + minor := record.Ausbg2 >> 8 + patch := record.Ausbg2 & 0xFF + + return fmt.Sprintf("%d.%d.%d", major, minor, patch) +} + +func parseModuleIdentificationRequest(logStruct *S7Log, s7Packet *S7Packet) error { if len(s7Packet.Data) < S7_DATA_BYTE_OFFSET { return errS7PacketTooShort } - fields := bytes.FieldsFunc(s7Packet.Data[S7_DATA_BYTE_OFFSET:], func(c rune) bool { - return int(c) == 0 - }) + // Skip the first 4 bytes (return code, transport size, length) + // And the next 4 bytes (SSLID, INDEX) + offset := 8 - for i := len(fields) - 1; i >= 0; i-- { - switch i { - case 0: - logStruct.ModuleId = string(fields[i][1:]) // exclude index byte - case 5: - logStruct.Hardware = string(fields[i][1:]) - case 6: - logStruct.Firmware = string(fields[i][1:]) + // Parse LENTHDR and N_DR from the header + recordLen := int(binary.BigEndian.Uint16(s7Packet.Data[offset : offset+2])) + offset += uint16Size + + numRecords := int(binary.BigEndian.Uint16(s7Packet.Data[offset : offset+2])) + offset += uint16Size + + // Check if the data record length and number of data records are valid + if recordLen != s7ModuleIdRecordSize || numRecords*recordLen > len(s7Packet.Data)-offset { + return fmt.Errorf("invalid data record length or number of data records") + } + + // Now parse the data records, considering each one is 28 bytes long after the header + for i := 0; i < int(numRecords); i++ { + record, err := parseModuleIDDataRecord(s7Packet.Data[offset : offset+recordLen]) + if err != nil { + return fmt.Errorf("failed parsing data record %d: %v", i, err) } + + switch record.Index { + case s7ModuleIdModuleIndex: + logStruct.ModuleId = record.MIFB + case s7ModuleIdHardwareIndex: + logStruct.Hardware = getVersionNumber(record) + case s7ModuleIdFirmwareIndex: + logStruct.Firmware = getVersionNumber(record) + } + + offset += recordLen } return nil diff --git a/modules/siemens/scanner.go b/modules/siemens/scanner.go index 03112d0a7..8197dbb3e 100644 --- a/modules/siemens/scanner.go +++ b/modules/siemens/scanner.go @@ -13,9 +13,8 @@ import ( // Flags holds the command-line configuration for the siemens scan module. // Populated by the framework. type Flags struct { - zgrab2.BaseFlags - // TODO: configurable TSAP source / destination, etc - Verbose bool `long:"verbose" description:"More verbose logging, include debug fields in the scan results"` + zgrab2.BaseFlags `group:"Basic Options"` // TODO: configurable TSAP source / destination, etc + Verbose bool `long:"verbose" description:"More verbose logging, include debug fields in the scan results"` } // Module implements the zgrab2.Module interface. @@ -37,7 +36,7 @@ func RegisterModule() { } // NewFlags returns a default Flags object. -func (module *Module) NewFlags() interface{} { +func (module *Module) NewFlags() any { return new(Flags) } @@ -98,7 +97,7 @@ func (scanner *Scanner) Protocol() string { // 5. Request to read the module identification (and store it in the output) // 6. Request to read the component identification (and store it in the output) // 7. Return the output -func (scanner *Scanner) Scan(target zgrab2.ScanTarget) (zgrab2.ScanStatus, interface{}, error) { +func (scanner *Scanner) Scan(target zgrab2.ScanTarget) (zgrab2.ScanStatus, any, error) { conn, err := target.Open(&scanner.config.BaseFlags) if err != nil { return zgrab2.TryGetScanStatus(err), nil, err diff --git a/modules/smb/scanner.go b/modules/smb/scanner.go index 851185b5b..e0b66ca78 100644 --- a/modules/smb/scanner.go +++ b/modules/smb/scanner.go @@ -11,8 +11,7 @@ import ( // Flags holds the command-line configuration for the smb scan module. // Populated by the framework. type Flags struct { - zgrab2.BaseFlags - + zgrab2.BaseFlags `group:"Basic Options"` // SetupSession tells the client to continue the handshake up to the point where credentials would be needed. SetupSession bool `long:"setup-session" description:"After getting the response from the negotiation request, send a setup session packet."` @@ -39,7 +38,7 @@ func RegisterModule() { } // NewFlags returns a default Flags object. -func (module *Module) NewFlags() interface{} { +func (module *Module) NewFlags() any { return new(Flags) } @@ -93,18 +92,18 @@ func (scanner *Scanner) Protocol() string { } // Scan performs the following: -// 1. Connect to the TCP port (default 445). -// 2. Send a negotiation packet with the default values: -// Dialects = { DialectSmb_2_1 }, -// SecurityMode = SecurityModeSigningEnabled -// 3. Read response from server; on failure, exit with log = nil. -// If the server returns a protocol ID indicating support for version 1, set smbv1_support = true -// Pull out the relevant information from the response packet -// 4. If --setup-session is not set, exit with success. -// 5. Send a setup session packet to the server with appropriate values -// 6. Read the response from the server; on failure, exit with the log so far. -// 7. Return the log. -func (scanner *Scanner) Scan(target zgrab2.ScanTarget) (zgrab2.ScanStatus, interface{}, error) { +// 1. Connect to the TCP port (default 445). +// 2. Send a negotiation packet with the default values: +// Dialects = { DialectSmb_2_1 }, +// SecurityMode = SecurityModeSigningEnabled +// 3. Read response from server; on failure, exit with log = nil. +// If the server returns a protocol ID indicating support for version 1, set smbv1_support = true +// Pull out the relevant information from the response packet +// 4. If --setup-session is not set, exit with success. +// 5. Send a setup session packet to the server with appropriate values +// 6. Read the response from the server; on failure, exit with the log so far. +// 7. Return the log. +func (scanner *Scanner) Scan(target zgrab2.ScanTarget) (zgrab2.ScanStatus, any, error) { conn, err := target.Open(&scanner.config.BaseFlags) if err != nil { return zgrab2.TryGetScanStatus(err), nil, err diff --git a/modules/smtp/scanner.go b/modules/smtp/scanner.go index 69679b2c9..fa3aa49cf 100644 --- a/modules/smtp/scanner.go +++ b/modules/smtp/scanner.go @@ -69,14 +69,14 @@ type ScanResults struct { // Flags holds the command-line configuration for the HTTP scan module. // Populated by the framework. type Flags struct { - zgrab2.BaseFlags - zgrab2.TLSFlags + zgrab2.BaseFlags `group:"Basic Options"` + zgrab2.TLSFlags `group:"TLS Options"` - // SendHELO indicates that the EHLO command should be set. + // SendEHLO indicates that the EHLO command should be set. SendEHLO bool `long:"send-ehlo" description:"Send the EHLO command; use --ehlo-domain to set a domain."` - // SendEHLO indicates that the EHLO command should be set. - SendHELO bool `long:"send-helo" description:"Send the EHLO command; use --helo-domain to set a domain."` + // SendHELO indicates that the HELO command should be set. + SendHELO bool `long:"send-helo" description:"Send the HELO command; use --helo-domain to set a domain."` // SendHELP indicates that the client should send the HELP command (after HELO/EHLO). SendHELP bool `long:"send-help" description:"Send the HELP command"` @@ -87,7 +87,7 @@ type Flags struct { // HELODomain is the domain the client should send in the HELO command. HELODomain string `long:"helo-domain" description:"Set the domain to use with the HELO command. Implies --send-helo."` - // EHLODomain is the domain the client should send in the HELO command. + // EHLODomain is the domain the client should send in the EHLO command. EHLODomain string `long:"ehlo-domain" description:"Set the domain to use with the EHLO command. Implies --send-ehlo."` // SMTPSecure indicates that the entire transaction should be wrapped in a TLS session. @@ -119,7 +119,7 @@ func RegisterModule() { } // NewFlags returns a default Flags object. -func (module *Module) NewFlags() interface{} { +func (module *Module) NewFlags() any { return new(Flags) } @@ -214,12 +214,12 @@ func VerifySMTPContents(banner string) (zgrab2.ScanStatus, int) { case err == nil && (code < 200 || code >= 300): return zgrab2.SCAN_APPLICATION_ERROR, code case err == nil, - strings.Contains(banner, "SMTP"), - strings.Contains(lowerBanner, "blacklist"), - strings.Contains(lowerBanner, "abuse"), - strings.Contains(lowerBanner, "rbl"), - strings.Contains(lowerBanner, "spamhaus"), - strings.Contains(lowerBanner, "relay"): + strings.Contains(banner, "SMTP"), + strings.Contains(lowerBanner, "blacklist"), + strings.Contains(lowerBanner, "abuse"), + strings.Contains(lowerBanner, "rbl"), + strings.Contains(lowerBanner, "spamhaus"), + strings.Contains(lowerBanner, "relay"): return zgrab2.SCAN_SUCCESS, 0 default: return zgrab2.SCAN_PROTOCOL_ERROR, 0 @@ -227,17 +227,17 @@ func VerifySMTPContents(banner string) (zgrab2.ScanStatus, int) { } // Scan performs the SMTP scan. -// 1. Open a TCP connection to the target port (default 25). -// 2. If --smtps is set, perform a TLS handshake. -// 3. Read the banner. -// 4. If --send-ehlo or --send-helo is sent, send the corresponding EHLO -// or HELO command. -// 5. If --send-help is sent, send HELP, read the result. -// 6. If --starttls is sent, send STARTTLS, read the result, negotiate a -// TLS connection. -// 7. If --send-quit is sent, send QUIT and read the result. -// 8. Close the connection. -func (scanner *Scanner) Scan(target zgrab2.ScanTarget) (zgrab2.ScanStatus, interface{}, error) { +// 1. Open a TCP connection to the target port (default 25). +// 2. If --smtps is set, perform a TLS handshake. +// 3. Read the banner. +// 4. If --send-ehlo or --send-helo is sent, send the corresponding EHLO +// or HELO command. +// 5. If --send-help is sent, send HELP, read the result. +// 6. If --starttls is sent, send STARTTLS, read the result, negotiate a +// TLS connection. +// 7. If --send-quit is sent, send QUIT and read the result. +// 8. Close the connection. +func (scanner *Scanner) Scan(target zgrab2.ScanTarget) (zgrab2.ScanStatus, any, error) { c, err := target.Open(&scanner.config.BaseFlags) if err != nil { return zgrab2.TryGetScanStatus(err), nil, err diff --git a/modules/smtp/smtp.go b/modules/smtp/smtp.go index df9211081..73f0a68e7 100644 --- a/modules/smtp/smtp.go +++ b/modules/smtp/smtp.go @@ -1,9 +1,9 @@ package smtp import ( + "io" "net" "regexp" - "io" "github.com/zmap/zgrab2" ) diff --git a/modules/ssh.go b/modules/ssh.go index 3d065c359..9f4ed680d 100644 --- a/modules/ssh.go +++ b/modules/ssh.go @@ -6,12 +6,13 @@ import ( "strings" log "github.com/sirupsen/logrus" + "github.com/zmap/zgrab2" "github.com/zmap/zgrab2/lib/ssh" ) type SSHFlags struct { - zgrab2.BaseFlags + zgrab2.BaseFlags `group:"Basic Options"` ClientID string `long:"client" description:"Specify the client ID string to use" default:"SSH-2.0-Go"` KexAlgorithms string `long:"kex-algorithms" description:"Set SSH Key Exchange Algorithms"` HostKeyAlgorithms string `long:"host-key-algorithms" description:"Set SSH Host Key Algorithms"` @@ -39,7 +40,7 @@ func init() { } } -func (m *SSHModule) NewFlags() interface{} { +func (m *SSHModule) NewFlags() any { return new(SSHFlags) } @@ -88,7 +89,7 @@ func (s *SSHScanner) GetTrigger() string { return s.config.Trigger } -func (s *SSHScanner) Scan(t zgrab2.ScanTarget) (zgrab2.ScanStatus, interface{}, error) { +func (s *SSHScanner) Scan(t zgrab2.ScanTarget) (zgrab2.ScanStatus, any, error) { data := new(ssh.HandshakeLog) var port uint diff --git a/modules/telnet/scanner.go b/modules/telnet/scanner.go index 391acb6e4..352800d99 100644 --- a/modules/telnet/scanner.go +++ b/modules/telnet/scanner.go @@ -13,16 +13,17 @@ package telnet import ( log "github.com/sirupsen/logrus" + "github.com/zmap/zgrab2" ) // Flags holds the command-line configuration for the Telnet scan module. // Populated by the framework. type Flags struct { - zgrab2.BaseFlags - MaxReadSize int `long:"max-read-size" description:"Set the maximum number of bytes to read when grabbing the banner" default:"65536"` - Banner bool `long:"force-banner" description:"Always return banner if it has non-zero bytes"` - Verbose bool `long:"verbose" description:"More verbose logging, include debug fields in the scan results"` + zgrab2.BaseFlags `group:"Basic Options"` + MaxReadSize int `long:"max-read-size" description:"Set the maximum number of bytes to read when grabbing the banner" default:"65536"` + Banner bool `long:"force-banner" description:"Always return banner if it has non-zero bytes"` + Verbose bool `long:"verbose" description:"More verbose logging, include debug fields in the scan results"` } // Module implements the zgrab2.Module interface. @@ -44,7 +45,7 @@ func RegisterModule() { } // NewFlags returns a default Flags object. -func (module *Module) NewFlags() interface{} { +func (module *Module) NewFlags() any { return new(Flags) } @@ -98,7 +99,7 @@ func (scanner *Scanner) Protocol() string { } // Scan connects to the target (default port TCP 23) and attempts to grab the Telnet banner. -func (scanner *Scanner) Scan(target zgrab2.ScanTarget) (zgrab2.ScanStatus, interface{}, error) { +func (scanner *Scanner) Scan(target zgrab2.ScanTarget) (zgrab2.ScanStatus, any, error) { conn, err := target.Open(&scanner.config.BaseFlags) if err != nil { return zgrab2.TryGetScanStatus(err), nil, err diff --git a/modules/tls.go b/modules/tls.go index 7f8c48d45..5ff10e0d6 100644 --- a/modules/tls.go +++ b/modules/tls.go @@ -6,8 +6,8 @@ import ( ) type TLSFlags struct { - zgrab2.BaseFlags - zgrab2.TLSFlags + zgrab2.BaseFlags `group:"Basic Options"` + zgrab2.TLSFlags `group:"TLS Options"` } type TLSModule struct { @@ -25,7 +25,7 @@ func init() { } } -func (m *TLSModule) NewFlags() interface{} { +func (m *TLSModule) NewFlags() any { return new(TLSFlags) } @@ -71,7 +71,7 @@ func (s *TLSScanner) InitPerSender(senderID int) error { // a TLS handshake. If the handshake gets past the ServerHello stage, the // handshake log is returned (along with any other TLS-related logs, such as // heartbleed, if enabled). -func (s *TLSScanner) Scan(t zgrab2.ScanTarget) (zgrab2.ScanStatus, interface{}, error) { +func (s *TLSScanner) Scan(t zgrab2.ScanTarget) (zgrab2.ScanStatus, any, error) { conn, err := t.OpenTLS(&s.config.BaseFlags, &s.config.TLSFlags) if conn != nil { defer conn.Close() diff --git a/output.json b/output.json new file mode 100644 index 000000000..a2108239b --- /dev/null +++ b/output.json @@ -0,0 +1 @@ +{"ip":"165.227.114.176","data":{"amqp091":{"status":"success","protocol":"amqp091","result":{"failure":"Exception (403) Reason: \"SASL could not negotiate a shared mechanism\"","version_major":0,"version_minor":9,"server_properties":{"product":"RabbitMQ","version":"3.8.16","platform":"Erlang/OTP 24.0.2","copyright":"Copyright (c) 2007-2021 VMware, Inc. or its affiliates.","information":"Licensed under the MPL 2.0. Website: https://rabbitmq.com","unknown_props":"{\"capabilities\":{\"authentication_failure_close\":true,\"basic.nack\":true,\"connection.blocked\":true,\"consumer_cancel_notify\":true,\"consumer_priorities\":true,\"direct_reply_to\":true,\"exchange_exchange_bindings\":true,\"per_consumer_qos\":true,\"publisher_confirms\":true},\"cluster_name\":\"speedy-red-elephant\"}"},"locales":["en_US"],"auth_success":false,"tls":{"handshake_log":{"server_hello":{"version":{"name":"TLSv1.2","value":771},"random":"ZkReGV9XxyHJdhvR5YvbXWoxZaqOD+F7RE9XTkdSRAE=","session_id":"ienBC9iUZ0TDvYsQK4E3wAhhGPds9QyKfK2+8ZHH10E=","cipher_suite":{"hex":"0xC02F","name":"TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256","value":49199},"compression_method":0,"ocsp_stapling":false,"ticket":false,"secure_renegotiation":true,"heartbeat":false,"extended_master_secret":false},"server_certificates":{"certificate":{"raw":"MIIFDzCCA/egAwIBAgISBAameeroCAfXEX+P6HjPx4o3MA0GCSqGSIb3DQEBCwUAMDIxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MQswCQYDVQQDEwJSMzAeFw0yNDA0MTkwOTA0MTNaFw0yNDA3MTgwOTA0MTJaMB8xHTAbBgNVBAMMFCoucm1xMi5jbG91ZGFtcXAuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvzm4SlktbWfAFiUh5x1gHz0ZwocaIrcWlsRNk5iYP33NvQmFNAwv5kGq//BDU62IIEaRvKlXOMvn+1e62TSwQ65RUYpZRlHAOJ64+64adfiGUrIvif2i0VaK5kQrbsPzlm50GNKU3AJtD30bQZnAsrguudGWp8XrHz7smc/+oSiP2TfU0pWyZh94mtx18xMRRBGRCkSY3GiMWHO0zRUVpH0Rdh0U40SdMfqUCOaIo8hEM6q1qmECvm4hAtlqKpW3bvDKFQytb/jqgWomuqQ4TyLL/4In7Ecac01bxrMpUglM18mSNdXfRdrzWMKRb7i8sTsRX9MxhmHJNErDpT5nEwIDAQABo4ICMDCCAiwwDgYDVR0PAQH/BAQDAgWgMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAMBgNVHRMBAf8EAjAAMB0GA1UdDgQWBBTM/XXvsow84DPre+rCCefZyorEODAfBgNVHSMEGDAWgBQULrMXt1hWy65QCUDmH6+dixTCxjBVBggrBgEFBQcBAQRJMEcwIQYIKwYBBQUHMAGGFWh0dHA6Ly9yMy5vLmxlbmNyLm9yZzAiBggrBgEFBQcwAoYWaHR0cDovL3IzLmkubGVuY3Iub3JnLzA4BgNVHREEMTAvghcqLmluLnJtcTIuY2xvdWRhbXFwLmNvbYIUKi5ybXEyLmNsb3VkYW1xcC5jb20wEwYDVR0gBAwwCjAIBgZngQwBAgEwggEFBgorBgEEAdZ5AgQCBIH2BIHzAPEAdwBIsONr2qZHNA/lagL6nTDrHFIBy1bdLIHZu7+rOdiEcwAAAY710E/6AAAEAwBIMEYCIQCU6Hlu2rXR9kA1JVGA/tT6h9cs10zJ5jKmpQkDd/NakQIhAK3MKAvRLe+C1qmS9E/BJV1wcsV2VDhXSFzKTQx7VpafAHYAGZgQcQnw1lIuMIDSnj9ku4NuKMz5D1KO7t/OSj8WtMoAAAGO9dBQdgAABAMARzBFAiEAvjIwxkWSNlmj3V5vz5RC9gNeryKRVMSANdcRu4bml7ACIDqzkLl38EdQKxqY1sNLEo9GCpoKoQwxJ/PUo1avmj2lMA0GCSqGSIb3DQEBCwUAA4IBAQB/WnVLyFClipmQTP/5cnkwx5vPK2ijc745zNX16CCdoOEnUKOsQkOKhv/7v4/Hl61BIj/sDb+jlxlbN07Uzbsd54fha/KPcwSnVEgOwuPVA4ruYPRhfPrU4zSCeMp0i0LdbsFMVNRaXIfsQvWGRhlEmmL3i8FTDUV4cWQRvK6U80sCwxyWhkKckvT2qOnjjL2iL16zEJkhIfQ68rFr0lUrpb7Jh6hWonUHQxA4j6/jM0Ath+haBudjH4HqcR/gsAXK5sw7n9vVcFPv74dO0xqJN7q6Erouzht4tfvZxfkVItVzo30SQ7FzGBYCwUT839mhPElCRVTbdp6gvJw6K8sk","parsed":{"version":3,"serial_number":"350712122808254062432312023692293498702391","signature_algorithm":{"name":"SHA256-RSA","oid":"1.2.840.113549.1.1.11"},"issuer":{"common_name":["R3"],"country":["US"],"organization":["Let's Encrypt"]},"issuer_dn":"C=US, O=Let's Encrypt, CN=R3","validity":{"start":"2024-04-19T09:04:13Z","end":"2024-07-18T09:04:12Z","length":7775999},"subject":{"common_name":["*.rmq2.cloudamqp.com"]},"subject_dn":"CN=*.rmq2.cloudamqp.com","subject_key_info":{"key_algorithm":{"name":"RSA"},"rsa_public_key":{"exponent":65537,"modulus":"vzm4SlktbWfAFiUh5x1gHz0ZwocaIrcWlsRNk5iYP33NvQmFNAwv5kGq//BDU62IIEaRvKlXOMvn+1e62TSwQ65RUYpZRlHAOJ64+64adfiGUrIvif2i0VaK5kQrbsPzlm50GNKU3AJtD30bQZnAsrguudGWp8XrHz7smc/+oSiP2TfU0pWyZh94mtx18xMRRBGRCkSY3GiMWHO0zRUVpH0Rdh0U40SdMfqUCOaIo8hEM6q1qmECvm4hAtlqKpW3bvDKFQytb/jqgWomuqQ4TyLL/4In7Ecac01bxrMpUglM18mSNdXfRdrzWMKRb7i8sTsRX9MxhmHJNErDpT5nEw==","length":2048},"fingerprint_sha256":"760c92c9f2b79f1eb9ae2dcf33a08699de785fd394ba9177ed3cb5f962a81ce9"},"extensions":{"key_usage":{"digital_signature":true,"key_encipherment":true,"value":5},"basic_constraints":{"is_ca":false},"subject_alt_name":{"dns_names":["*.in.rmq2.cloudamqp.com","*.rmq2.cloudamqp.com"]},"authority_key_id":"142eb317b75856cbae500940e61faf9d8b14c2c6","subject_key_id":"ccfd75efb28c3ce033eb7beac209e7d9ca8ac438","extended_key_usage":{"server_auth":true,"client_auth":true},"certificate_policies":[{"id":"2.23.140.1.2.1"}],"authority_info_access":{"ocsp_urls":["http://r3.o.lencr.org"],"issuer_urls":["http://r3.i.lencr.org/"]},"signed_certificate_timestamps":[{"version":0,"log_id":"SLDja9qmRzQP5WoC+p0w6xxSActW3SyB2bu/qznYhHM=","timestamp":1713521053,"signature":"BAMASDBGAiEAlOh5btq10fZANSVRgP7U+ofXLNdMyeYypqUJA3fzWpECIQCtzCgL0S3vgtapkvRPwSVdcHLFdlQ4V0hcyk0Me1aWnw=="},{"version":0,"log_id":"GZgQcQnw1lIuMIDSnj9ku4NuKMz5D1KO7t/OSj8WtMo=","timestamp":1713521053,"signature":"BAMARzBFAiEAvjIwxkWSNlmj3V5vz5RC9gNeryKRVMSANdcRu4bml7ACIDqzkLl38EdQKxqY1sNLEo9GCpoKoQwxJ/PUo1avmj2l"}]},"signature":{"signature_algorithm":{"name":"SHA256-RSA","oid":"1.2.840.113549.1.1.11"},"value":"f1p1S8hQpYqZkEz/+XJ5MMebzytoo3O+OczV9eggnaDhJ1CjrEJDiob/+7+Px5etQSI/7A2/o5cZWzdO1M27HeeH4Wvyj3MEp1RIDsLj1QOK7mD0YXz61OM0gnjKdItC3W7BTFTUWlyH7EL1hkYZRJpi94vBUw1FeHFkEbyulPNLAsMcloZCnJL09qjp44y9oi9esxCZISH0OvKxa9JVK6W+yYeoVqJ1B0MQOI+v4zNALYfoWgbnYx+B6nEf4LAFyubMO5/b1XBT7++HTtMaiTe6uhK6Ls4beLX72cX5FSLVc6N9EkOxcxgWAsFE/N/ZoTxJQkVU23aeoLycOivLJA==","valid":false,"self_signed":false},"fingerprint_md5":"50d77a385bb3556dd99074550ea0f664","fingerprint_sha1":"8e85228d704ac0972817d43f5f0f22264e2e7654","fingerprint_sha256":"eda0b0b8a9c28fbbeac1781eb1a8fa49df8480befefa1654cfcebcd7cf3d0891","tbs_noct_fingerprint":"da8a7597d6f3e3ad6a584804f7146a9e38cbd4189035612946b0b2bafe2ce192","spki_subject_fingerprint":"9a3ae45305db9efc51adaddf15ed499f9ef338706c9f9c3d84be359c1ede3305","tbs_fingerprint":"766514440cf4512aeaf14e153dd4acf143f1cf5fa5a7f36a9c02e6c7ba9a85fb","validation_level":"DV","names":["*.in.rmq2.cloudamqp.com","*.rmq2.cloudamqp.com"],"redacted":false}},"chain":[{"raw":"MIIFFjCCAv6gAwIBAgIRAJErCErPDBinU/bWLiWnX1owDQYJKoZIhvcNAQELBQAwTzELMAkGA1UEBhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2VhcmNoIEdyb3VwMRUwEwYDVQQDEwxJU1JHIFJvb3QgWDEwHhcNMjAwOTA0MDAwMDAwWhcNMjUwOTE1MTYwMDAwWjAyMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNTGV0J3MgRW5jcnlwdDELMAkGA1UEAxMCUjMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC7AhUozPaglNMPEuyNVZLD+ILxmaZ6QoinXSaqtSu5xUyxr45r+XXIo9cPR5QUVTVXjJ6oojkZ9YI8QqlObvU7wy7bjcCwXPNZOOftz2nwWgsbvsCUJCWH+jdxsxPnHKzhm+/b5DtFUkWWqcFTzjTIUu61ru2P3mBw4qVUq7ZtDpelQDRrK9O8ZutmNHz6a4uPVymZ+DAXXbpyb/uBxa3Shlg9F8fnCbvxK/eG3MHacV3URuPMrSXBiLxgZ3Vms/EY96Jc5lP/Ooi2R6X/ExjqmAl3P51T+c8B5fWmcBcUr2Ok/5mzk53cU6cG/kiFHaFpriV1uxPMUgP17VGhi9sVAgMBAAGjggEIMIIBBDAOBgNVHQ8BAf8EBAMCAYYwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMBMBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFBQusxe3WFbLrlAJQOYfr52LFMLGMB8GA1UdIwQYMBaAFHm0WeZ7tuXkAXOACIjIGlj26ZtuMDIGCCsGAQUFBwEBBCYwJDAiBggrBgEFBQcwAoYWaHR0cDovL3gxLmkubGVuY3Iub3JnLzAnBgNVHR8EIDAeMBygGqAYhhZodHRwOi8veDEuYy5sZW5jci5vcmcvMCIGA1UdIAQbMBkwCAYGZ4EMAQIBMA0GCysGAQQBgt8TAQEBMA0GCSqGSIb3DQEBCwUAA4ICAQCFyk5HPqP3hUSFvNVneLKYY611TR6WPTNlclQtgaDqw+34IL9fzLdwALduO/ZelN7kIJ+m74uyA+eitRY8kc607TkC53wlikfmZW4/RvTZ8M6UK+5UzhK8jCdLuMGYL6KvzXGRSgi3yLgjewQtCPkIVz6D2QQzCkcheAmCJ8MqyJu5zlzyZMjAvnnAT45tRAxekrsu94sQ4egdRCnbWSDtY7kh+BImlJNXoB1lBMEKIq4QDUOXoRgffuDghje1WrG9ML+Hbisq/yFOGwXD9RiX8F6sw6W4avAuvDszue5L3sz85K+EC4Y/wFVDNvZo4TYXao6Z0f+lQKc0t8DQYzk1OXVu8rp2yJMC6alLbBfODALZvYH7n7do1AZls4I9d1P4jnkDrQoxB3UqQ9hVl3LEKQ73xF1OyK5GhDDX8oVfGKF5u+decIsH4YaTw7mP3GFxJSqv3+0lUFJoi5Lc5da149p90IdshCExroL1+7mryIkXPeFM5TgO9r0rvZaBFOvV2z0gp35Z0+L4WPlbuEjN/lxPFin+HlUjr8gRsI3qfJOQFy/9rKIJR0Y/8Omwt/8oTWgy1mdeHmmjk7j1nYsvC9JSQ6ZvMldlTTKB3zhThV1+XWYp6rjd5JW1zbVWEkLNxE7GJThEUG3szgBVGP7pSWTUTsqXnLRbwHOoq7hHwg==","parsed":{"version":3,"serial_number":"192961496339968674994309121183282847578","signature_algorithm":{"name":"SHA256-RSA","oid":"1.2.840.113549.1.1.11"},"issuer":{"common_name":["ISRG Root X1"],"country":["US"],"organization":["Internet Security Research Group"]},"issuer_dn":"C=US, O=Internet Security Research Group, CN=ISRG Root X1","validity":{"start":"2020-09-04T00:00:00Z","end":"2025-09-15T16:00:00Z","length":158774400},"subject":{"common_name":["R3"],"country":["US"],"organization":["Let's Encrypt"]},"subject_dn":"C=US, O=Let's Encrypt, CN=R3","subject_key_info":{"key_algorithm":{"name":"RSA"},"rsa_public_key":{"exponent":65537,"modulus":"uwIVKMz2oJTTDxLsjVWSw/iC8ZmmekKIp10mqrUrucVMsa+Oa/l1yKPXD0eUFFU1V4yeqKI5GfWCPEKpTm71O8Mu243AsFzzWTjn7c9p8FoLG77AlCQlh/o3cbMT5xys4Zvv2+Q7RVJFlqnBU840yFLuta7tj95gcOKlVKu2bQ6XpUA0ayvTvGbrZjR8+muLj1cpmfgwF126cm/7gcWt0oZYPRfH5wm78Sv3htzB2nFd1EbjzK0lwYi8YGd1ZrPxGPeiXOZT/zqItkel/xMY6pgJdz+dU/nPAeX1pnAXFK9jpP+Zs5Od3FOnBv5IhR2haa4ldbsTzFID9e1RoYvbFQ==","length":2048},"fingerprint_sha256":"8d02536c887482bc34ff54e41d2ba659bf85b341a0a20afadb5813dcfbcf286d"},"extensions":{"key_usage":{"digital_signature":true,"certificate_sign":true,"crl_sign":true,"value":97},"basic_constraints":{"is_ca":true,"max_path_len":0},"crl_distribution_points":["http://x1.c.lencr.org/"],"authority_key_id":"79b459e67bb6e5e40173800888c81a58f6e99b6e","subject_key_id":"142eb317b75856cbae500940e61faf9d8b14c2c6","extended_key_usage":{"server_auth":true,"client_auth":true},"certificate_policies":[{"id":"2.23.140.1.2.1"},{"id":"1.3.6.1.4.1.44947.1.1.1"}],"authority_info_access":{"issuer_urls":["http://x1.i.lencr.org/"]}},"signature":{"signature_algorithm":{"name":"SHA256-RSA","oid":"1.2.840.113549.1.1.11"},"value":"hcpORz6j94VEhbzVZ3iymGOtdU0elj0zZXJULYGg6sPt+CC/X8y3cAC3bjv2XpTe5CCfpu+LsgPnorUWPJHOtO05Aud8JYpH5mVuP0b02fDOlCvuVM4SvIwnS7jBmC+ir81xkUoIt8i4I3sELQj5CFc+g9kEMwpHIXgJgifDKsibuc5c8mTIwL55wE+ObUQMXpK7LveLEOHoHUQp21kg7WO5IfgSJpSTV6AdZQTBCiKuEA1Dl6EYH37g4IY3tVqxvTC/h24rKv8hThsFw/UYl/BerMOluGrwLrw7M7nuS97M/OSvhAuGP8BVQzb2aOE2F2qOmdH/pUCnNLfA0GM5NTl1bvK6dsiTAumpS2wXzgwC2b2B+5+3aNQGZbOCPXdT+I55A60KMQd1KkPYVZdyxCkO98RdTsiuRoQw1/KFXxihebvnXnCLB+GGk8O5j9xhcSUqr9/tJVBSaIuS3OXWtePafdCHbIQhMa6C9fu5q8iJFz3hTOU4Dva9K72WgRTr1ds9IKd+WdPi+Fj5W7hIzf5cTxYp/h5VI6/IEbCN6nyTkBcv/ayiCUdGP/DpsLf/KE1oMtZnXh5po5O49Z2LLwvSUkOmbzJXZU0ygd84U4Vdfl1mKeq43eSVtc21VhJCzcROxiU4RFBt7M4AVRj+6Ulk1E7Kl5y0W8BzqKu4R8I=","valid":false,"self_signed":false},"fingerprint_md5":"e829e65d7c4307d6fbc13c179e037a36","fingerprint_sha1":"a053375bfe84e8b748782c7cee15827a6af5a405","fingerprint_sha256":"67add1166b020ae61b8f5fc96813c04c2aa589960796865572a3c7e737613dfd","tbs_noct_fingerprint":"444ebd67bb83f8807b3921e938ac9178b882bd50aadb11231f044cf5f08df7ce","spki_subject_fingerprint":"390bc358202771a65e7be7a87924d7f2a079de04feb5ffd4163fae4fbf9b11e9","tbs_fingerprint":"444ebd67bb83f8807b3921e938ac9178b882bd50aadb11231f044cf5f08df7ce","validation_level":"DV","redacted":false}}],"validation":{"browser_trusted":false,"browser_error":"x509: failed to load system roots and no roots provided"}},"server_key_exchange":{"ecdh_params":{"curve_id":{"name":"secp256r1","id":23},"server_public":{"x":{"value":"nfV5Z/BX7NG6WAK+7CohY1MI1m76yGrhm3/omzRkRJc=","length":256},"y":{"value":"thOt8w1Yaw5zhmo9+NS8PgjHdlMMPn8Zl1aLvwC7z50=","length":256}}},"digest":"zsHfGj/e8lFwyqqn61neIIhm25oyABuTofdOq4bdi8s=","signature":{"raw":"E+2Fz4oduylrlhqaLHqImJ5IuJ3/RQwyENA9q+o6U9VQsfXvbRw/4ndY5zfyypoFjzOoGRc0Dhx8nz8T4zqui0SPgChSTzCStt1KIfvaVIHWntVa5uWODCjgorji9b4XCrh4hszutMzeV8NXlMMIerTiluTEAiYlsACgArPG0YFoyBLb6ohDTKGeaEq296DxRCaJI1jNfRwbY9z+EBmlfaekjPucPcjnzlEAhMsPlrzEzHPEg8XkGBPGYcadHSbl/9CqOMGws7acR1JTyJAtyKVaJkauZorzsGSN5ZW2lEF/2eqTBal0431dNygx4nuoz1CpqGfAamQbqnLAbTPDZQ==","type":"rsa","valid":true,"signature_and_hash_type":{"signature_algorithm":"rsa","hash_algorithm":"sha256"},"tls_version":{"name":"TLSv1.2","value":771}}},"client_key_exchange":{"ecdh_params":{"curve_id":{"name":"secp256r1","id":23},"client_public":{"x":{"value":"FphxrWdXsuFxMSAu4nK1QkL5gmakbxp3ZFoVgoDKiyk=","length":256},"y":{"value":"n4YXrWbOELzor2eB9sddXjeRmzF8t1++mYnI9yWIe0k=","length":256}},"client_private":{"value":"aD2Kcjp9xdUNcx+j5N7NXxlvxBKFj1vAVc3pnXt7B04=","length":32}}},"client_finished":{"verify_data":"ZwBhDZRd2iJW/Dmf"},"server_finished":{"verify_data":"CIXmEd1/E8gMxmNi"},"key_material":{"master_secret":{"value":"+ZA70wONtgCIJMTd+oATK8EkbqXZLeEV0kv0iGMKmmM6R9BgQlFoYlr6LDTKdG0w","length":48},"pre_master_secret":{"value":"sxkQa0ePkbyP4un9hzAF+jJuLP4XExZq3QC5HjeIQek=","length":32}}}}},"timestamp":"2024-05-15T00:02:49-07:00"}}} diff --git a/processing.go b/processing.go index 7ac14234c..9129b7419 100644 --- a/processing.go +++ b/processing.go @@ -13,6 +13,7 @@ import ( // Grab contains all scan responses for a single host type Grab struct { IP string `json:"ip,omitempty"` + Port uint `json:"port,omitempty"` Domain string `json:"domain,omitempty"` Data map[string]ScanResponse `json:"data,omitempty"` } @@ -117,12 +118,16 @@ func (target *ScanTarget) OpenUDP(flags *BaseFlags, udp *UDPFlags) (net.Conn, er // scan responses. func BuildGrabFromInputResponse(t *ScanTarget, responses map[string]ScanResponse) *Grab { var ipstr string - + var port uint if t.IP != nil { ipstr = t.IP.String() } + if t.Port != nil { + port = *t.Port + } return &Grab{ IP: ipstr, + Port: port, Domain: t.Domain, Data: responses, } @@ -130,7 +135,7 @@ func BuildGrabFromInputResponse(t *ScanTarget, responses map[string]ScanResponse // EncodeGrab serializes a Grab to JSON, handling the debug fields if necessary. func EncodeGrab(raw *Grab, includeDebug bool) ([]byte, error) { - var outputData interface{} + var outputData any if includeDebug { outputData = raw } else { @@ -178,7 +183,7 @@ func grabTarget(input ScanTarget, m *Monitor) []byte { raw := BuildGrabFromInputResponse(&input, moduleResult) result, err := EncodeGrab(raw, includeDebugOutput()) if err != nil { - log.Fatalf("unable to marshal data: %s", err) + log.Errorf("unable to marshal data: %s", err) } return result diff --git a/setup.py b/setup.py index 578560c3a..04816d906 100644 --- a/setup.py +++ b/setup.py @@ -4,18 +4,15 @@ here = os.path.abspath(os.path.dirname(__file__)) setup( - name="zgrab2_schemas", - version="0.0.1", - description="ZSchema definitions for zgrab2's JSON output.", - classifiers=[ - "Programming Language :: Python", - "Natural Language :: English" - ], - author="ZMap Team", - author_email="team@zmap.io", - url="https://github.com/zmap/zgrab2", - keywords="zmap censys zgrab2 internet-wide scanning", - packages=find_packages(), - include_package_data=True, - zip_safe=False + name="zgrab2_schemas", + version="0.0.1", + description="ZSchema definitions for zgrab2's JSON output.", + classifiers=["Programming Language :: Python", "Natural Language :: English"], + author="ZMap Team", + author_email="team@zmap.io", + url="https://github.com/zmap/zgrab2", + keywords="zmap censys zgrab2 internet-wide scanning", + packages=find_packages(), + include_package_data=True, + zip_safe=False, ) diff --git a/status.go b/status.go index c1e7f7831..afb1801e3 100644 --- a/status.go +++ b/status.go @@ -16,14 +16,14 @@ type ScanStatus string // TODO: lump connection closed / io timeout? // TODO: Add SCAN_TLS_PROTOCOL_ERROR? For purely TLS-wrapped protocols, SCAN_PROTOCOL_ERROR is fine -- but for protocols that have a non-TLS bootstrap (e.g. a STARTTLS procedure), SCAN_PROTOCOL_ERROR is misleading, since it did get far-enough into the application protocol to start TLS handshaking -- but a garbled TLS handshake is certainly not a SCAN_APPLICATION_ERROR const ( - SCAN_SUCCESS = ScanStatus("success") // The protocol in question was positively identified and the scan encountered no errors - SCAN_CONNECTION_REFUSED = ScanStatus("connection-refused") // TCP connection was actively rejected - SCAN_CONNECTION_TIMEOUT = ScanStatus("connection-timeout") // No response to TCP connection request - SCAN_CONNECTION_CLOSED = ScanStatus("connection-closed") // The TCP connection was unexpectedly closed - SCAN_IO_TIMEOUT = ScanStatus("io-timeout") // Timed out waiting on data - SCAN_PROTOCOL_ERROR = ScanStatus("protocol-error") // Received data incompatible with the target protocol - SCAN_APPLICATION_ERROR = ScanStatus("application-error") // The application reported an error - SCAN_UNKNOWN_ERROR = ScanStatus("unknown-error") // Catch-all for unrecognized errors + SCAN_SUCCESS = ScanStatus("success") // The protocol in question was positively identified and the scan encountered no errors + SCAN_CONNECTION_REFUSED = ScanStatus("connection-refused") // TCP connection was actively rejected + SCAN_CONNECTION_TIMEOUT = ScanStatus("connection-timeout") // No response to TCP connection request + SCAN_CONNECTION_CLOSED = ScanStatus("connection-closed") // The TCP connection was unexpectedly closed + SCAN_IO_TIMEOUT = ScanStatus("io-timeout") // Timed out waiting on data + SCAN_PROTOCOL_ERROR = ScanStatus("protocol-error") // Received data incompatible with the target protocol + SCAN_APPLICATION_ERROR = ScanStatus("application-error") // The application reported an error + SCAN_UNKNOWN_ERROR = ScanStatus("unknown-error") // Catch-all for unrecognized errors ) // ScanError an error that also includes a ScanStatus. @@ -40,7 +40,7 @@ func (err *ScanError) Error() string { return err.Err.Error() } -func (err *ScanError) Unpack(results interface{}) (ScanStatus, interface{}, error) { +func (err *ScanError) Unpack(results any) (ScanStatus, any, error) { return err.Status, results, err.Err } diff --git a/tls.go b/tls.go index 15de73389..467ee8cfc 100644 --- a/tls.go +++ b/tls.go @@ -12,8 +12,10 @@ import ( "time" log "github.com/sirupsen/logrus" + "github.com/zmap/zcrypto/encoding/asn1" "github.com/zmap/zcrypto/tls" "github.com/zmap/zcrypto/x509" + "github.com/zmap/zcrypto/x509/pkix" ) // Shared code for TLS scans. @@ -28,6 +30,8 @@ import ( // Common flags for TLS configuration -- include this in your module's ScanFlags implementation to use the common TLS code // Adapted from modules/ssh.go type TLSFlags struct { + Config *tls.Config // Config is ready to use TLS configuration + Heartbleed bool `long:"heartbleed" description:"Check if server is vulnerable to Heartbleed"` SessionTicket bool `long:"session-ticket" description:"Send support for TLS Session Tickets and output ticket if presented" json:"session"` @@ -89,6 +93,11 @@ func (t *TLSFlags) GetTLSConfig() (*tls.Config, error) { func (t *TLSFlags) GetTLSConfigForTarget(target *ScanTarget) (*tls.Config, error) { var err error + // Config already exists + if t.Config != nil { + return t.Config, nil + } + // TODO: Find standard names cipherMap := map[string][]uint16{ "portable": tls.PortableCiphers, @@ -142,6 +151,10 @@ func (t *TLSFlags) GetTLSConfigForTarget(target *ScanTarget) (*tls.Config, error log.Fatalf("Could not read certificates from PEM file. Invalid PEM?") } } + + asn1.AllowPermissiveParsing = true + pkix.LegacyNameString = true + if t.NextProtos != "" { // TODO: Different format? ret.NextProtos = getCSV(t.NextProtos) diff --git a/tools/keys/ecdhe.go b/tools/keys/ecdhe.go index 459d90b49..3bff16a69 100644 --- a/tools/keys/ecdhe.go +++ b/tools/keys/ecdhe.go @@ -93,7 +93,7 @@ func (c *TLSCurveID) MarshalJSON() ([]byte, error) { return json.Marshal(&aux) } -//UnmarshalJSON implements the json.Unmarshaler interface +// UnmarshalJSON implements the json.Unmarshaler interface func (c *TLSCurveID) UnmarshalJSON(b []byte) error { aux := struct { ID uint16 `json:"id"` diff --git a/utility.go b/utility.go index c2d88a7f2..1f6a65c3d 100644 --- a/utility.go +++ b/utility.go @@ -2,6 +2,7 @@ package zgrab2 import ( "errors" + "fmt" "net" "regexp" "strconv" @@ -9,13 +10,16 @@ import ( "time" - "github.com/zmap/zflags" - "github.com/sirupsen/logrus" "runtime/debug" + + "github.com/sirupsen/logrus" + flags "github.com/zmap/zflags" ) var parser *flags.Parser +const defaultDNSPort = "53" + func init() { parser = flags.NewParser(&config, flags.Default) } @@ -28,7 +32,7 @@ func NewIniParser() *flags.IniParser { // AddGroup exposes the parser's AddGroup function, allowing extension // of the global arguments. -func AddGroup(shortDescription string, longDescription string, data interface{}) { +func AddGroup(shortDescription string, longDescription string, data any) { parser.AddGroup(shortDescription, longDescription, data) } @@ -214,8 +218,9 @@ func IsTimeoutError(err error) bool { // doing anything. Otherwise, it logs the stacktrace, the panic error, and the provided message // before re-raising the original panic. // Example: -// defer zgrab2.LogPanic("Error decoding body '%x'", body) -func LogPanic(format string, args...interface{}) { +// +// defer zgrab2.LogPanic("Error decoding body '%x'", body) +func LogPanic(format string, args ...any) { err := recover() if err == nil { return @@ -224,3 +229,26 @@ func LogPanic(format string, args...interface{}) { logrus.Errorf(format, args...) panic(err) } + +// addDefaultPortToDNSServerName validates that the input DNS server address is correct and appends the default DNS port 53 if no port is specified +func addDefaultPortToDNSServerName(inAddr string) (string, error) { + // Try to split host and port to see if the port is already specified. + host, port, err := net.SplitHostPort(inAddr) + if err != nil { + // might mean there's no port specified + host = inAddr + } + + // Validate the host part as an IP address. + ip := net.ParseIP(host) + if ip == nil { + return "", fmt.Errorf("invalid IP address") + } + + // If the original input does not have a port, specify port 53 as the default + if port == "" { + port = defaultDNSPort + } + + return net.JoinHostPort(ip.String(), port), nil +} diff --git a/zgrab2_schemas/README.md b/zgrab2_schemas/README.md index ebb10c3d9..e047b2fa1 100644 --- a/zgrab2_schemas/README.md +++ b/zgrab2_schemas/README.md @@ -3,7 +3,7 @@ ZGrab 2.0 schemas for zschema ## Validating -[integration_tests.sh](../integration_tests.sh) automatically validates +[integration_tests](../integration_tests) automatically validates output from the integration tests; to manually validate a zgrab2 result, you can follow these steps: @@ -11,11 +11,11 @@ you can follow these steps: 1. Run the zschema validator: 1. Run the zschema module's main function 2. Pass it the `validate` command - 3. Give the path to the zgrab2 schema [`schemas/__init__.py:zgrab2`](schemas/__init.py__) + 3. Give the path to the zgrab2 schema [`zgrab2/__init__.py:zgrab2`](zgrab2/__init__.py) 4. Pass in the zgrab2 JSON file to validate * ``` echo 127.0.0.1 | ./cmd/zgrab2/zgrab2 mysql > output.json - PYTHONPATH=/path/to/zschema python -m zschema validate schemas/__init__.py:zgrab2 output.json + PYTHONPATH=/path/to/zschema python2 -m zschema validate zgrab2 output.json --path . --module zgrab2_schemas.zgrab2 ``` ## Adding new module schemas @@ -35,11 +35,11 @@ unfortunately, this means that multiple scans on a single host, or scans using custom identifiers, will not validate). Your module should include a `SubRecord` that extends from `zgrab2.base_scan_response`, -specifically, overridding the `result` field. See [schemas/mysql.py](schemas/mysql.py) +specifically, overridding the `result` field. See [zgrab2/mysql.py](zgrab2/mysql.py) for an example. ### Register the module -In [`schemas/__init__.py`](schemas/__init__.py), add an import for your +In [`zgrab2/__init__.py`](zgrab2/__init__.py), add an import for your module (e.g. `import my_protocol`). This will ensure that the module code is executed and that the response type is registered with the zgrab2 module. diff --git a/zgrab2_schemas/zgrab2/__init__.py b/zgrab2_schemas/zgrab2/__init__.py index 5d5104007..5ca9ed17b 100644 --- a/zgrab2_schemas/zgrab2/__init__.py +++ b/zgrab2_schemas/zgrab2/__init__.py @@ -21,3 +21,4 @@ from . import telnet from . import ipp from . import banner +from . import amqp091 diff --git a/zgrab2_schemas/zgrab2/amqp091.py b/zgrab2_schemas/zgrab2/amqp091.py new file mode 100644 index 000000000..842e301ba --- /dev/null +++ b/zgrab2_schemas/zgrab2/amqp091.py @@ -0,0 +1,50 @@ +# zschema sub-schema for zgrab2's AMQP091 module +# Registers zgrab2-amqp091 globally, and amqp091 with the main zgrab2 schema. +from zschema.leaves import * +from zschema.compounds import * +import zschema.registry + +from . import zgrab2 + +# Schema for connectionTune struct +connection_tune = SubRecord( + { + "channel_max": Unsigned32BitInteger(), + "frame_max": Unsigned32BitInteger(), + "heartbeat": Unsigned32BitInteger(), + } +) + +# Schema for knownServerProperties struct +known_server_properties = SubRecord( + { + "product": String(), + "version": String(), + "platform": String(), + "copyright": String(), + "information": String(), + "unknown_props": String(), + } +) + +# Schema for Result struct +result_schema = SubRecord( + { + "result": SubRecord( + { + "failure": String(), + "version_major": Unsigned32BitInteger(), + "version_minor": Unsigned32BitInteger(), + "server_properties": known_server_properties, + "locales": ListOf(String()), + "auth_success": Boolean(), + "tune": connection_tune, + "tls": zgrab2.tls_log, + } + ) + }, + extends=zgrab2.base_scan_response, +) + +zschema.registry.register_schema("zgrab2-amqp091", result_schema) +zgrab2.register_scan_response_type("amqp091", result_schema) diff --git a/zgrab2_schemas/zgrab2/bacnet.py b/zgrab2_schemas/zgrab2/bacnet.py index 79aa012d8..4dbc1c9dc 100644 --- a/zgrab2_schemas/zgrab2/bacnet.py +++ b/zgrab2_schemas/zgrab2/bacnet.py @@ -7,20 +7,25 @@ import zcrypto_schemas from . import zgrab2 -bacnet_scan_response = SubRecord({ - "result": SubRecord({ - "is_bacnet": Boolean(), - "instance_number": Unsigned32BitInteger(), - "vendor_id": Unsigned16BitInteger(), - "vendor_name": String(), - "firmware_revision": String(), - "application_software_revision": String(), - "object_name": String(), - "model_name": String(), - "description": String(), - "location": String(), - }) -}, extends=zgrab2.base_scan_response) +bacnet_scan_response = SubRecord( + { + "result": SubRecord( + { + "is_bacnet": Boolean(), + "instance_number": Unsigned32BitInteger(), + "vendor_id": Unsigned16BitInteger(), + "vendor_name": String(), + "firmware_revision": String(), + "application_software_revision": String(), + "object_name": String(), + "model_name": String(), + "description": String(), + "location": String(), + } + ) + }, + extends=zgrab2.base_scan_response, +) zschema.registry.register_schema("zgrab2-bacnet", bacnet_scan_response) diff --git a/zgrab2_schemas/zgrab2/banner.py b/zgrab2_schemas/zgrab2/banner.py index 7014e6221..5092a17ec 100644 --- a/zgrab2_schemas/zgrab2/banner.py +++ b/zgrab2_schemas/zgrab2/banner.py @@ -8,12 +8,18 @@ from . import zgrab2 # modules/banner/scanner.go - Results -banner_scan_response = SubRecord({ - "result": SubRecord({ - "banner": String(), - "length": Unsigned32BitInteger() - }) -}, extends=zgrab2.base_scan_response) +banner_scan_response = SubRecord( + { + "result": SubRecord( + { + "banner": String(), + "length": Unsigned32BitInteger(), + "tls": zgrab2.tls_log, + } + ) + }, + extends=zgrab2.base_scan_response, +) zschema.registry.register_schema("zgrab2-banner", banner_scan_response) diff --git a/zgrab2_schemas/zgrab2/dnp3.py b/zgrab2_schemas/zgrab2/dnp3.py index 382bb82b4..7ea85dd91 100644 --- a/zgrab2_schemas/zgrab2/dnp3.py +++ b/zgrab2_schemas/zgrab2/dnp3.py @@ -7,12 +7,17 @@ import zcrypto_schemas.zcrypto as zcrypto from . import zgrab2 -dnp3_scan_response = SubRecord({ - "result": SubRecord({ - "is_dnp3": Boolean(), - "raw_response": Binary(), - }) -}, extends=zgrab2.base_scan_response) +dnp3_scan_response = SubRecord( + { + "result": SubRecord( + { + "is_dnp3": Boolean(), + "raw_response": Binary(), + } + ) + }, + extends=zgrab2.base_scan_response, +) zschema.registry.register_schema("zgrab2-dnp3", dnp3_scan_response) diff --git a/zgrab2_schemas/zgrab2/fox.py b/zgrab2_schemas/zgrab2/fox.py index 7370f5aef..fcf0ee0ee 100644 --- a/zgrab2_schemas/zgrab2/fox.py +++ b/zgrab2_schemas/zgrab2/fox.py @@ -7,30 +7,36 @@ import zcrypto_schemas.zcrypto as zcrypto from . import zgrab2 -fox_scan_response = SubRecord({ - 'result': SubRecord({ - 'is_fox': Boolean(), - 'version': String(), - 'id': Unsigned32BitInteger(), - 'hostname': String(), - 'host_address': String(), - 'app_name': String(), - 'app_version': String(), - 'vm_name': String(), - 'vm_version': String(), - 'os_name': String(), - 'os_version': String(), - 'station_name': String(), - 'language': String(), - 'time_zone': String(), - 'host_id': String(), - 'vm_uuid': String(), - 'brand_id': String(), - 'sys_info': String(), - 'agent_auth_type': String(), - }) -}, extends=zgrab2.base_scan_response) +fox_scan_response = SubRecord( + { + "result": SubRecord( + { + "is_fox": Boolean(), + "version": String(), + "id": Unsigned32BitInteger(), + "hostname": String(), + "host_address": String(), + "app_name": String(), + "app_version": String(), + "vm_name": String(), + "vm_version": String(), + "os_name": String(), + "os_version": String(), + "station_name": String(), + "language": String(), + "time_zone": String(), + "host_id": String(), + "vm_uuid": String(), + "brand_id": String(), + "sys_info": String(), + "agent_auth_type": String(), + "tls": zgrab2.tls_log, + } + ) + }, + extends=zgrab2.base_scan_response, +) -zschema.registry.register_schema('zgrab2-fox', fox_scan_response) +zschema.registry.register_schema("zgrab2-fox", fox_scan_response) -zgrab2.register_scan_response_type('fox', fox_scan_response) +zgrab2.register_scan_response_type("fox", fox_scan_response) diff --git a/zgrab2_schemas/zgrab2/ftp.py b/zgrab2_schemas/zgrab2/ftp.py index 80d96b810..1152d64dd 100644 --- a/zgrab2_schemas/zgrab2/ftp.py +++ b/zgrab2_schemas/zgrab2/ftp.py @@ -8,14 +8,19 @@ from . import zgrab2 # modules/ftp.go - FTPScanResults -ftp_scan_response = SubRecord({ - "result": SubRecord({ - "tls": zgrab2.tls_log, - "banner": String(), - "auth_tls": String(), - "auth_ssl": String(), - }) -}, extends=zgrab2.base_scan_response) +ftp_scan_response = SubRecord( + { + "result": SubRecord( + { + "tls": zgrab2.tls_log, + "banner": String(), + "auth_tls": String(), + "auth_ssl": String(), + } + ) + }, + extends=zgrab2.base_scan_response, +) zschema.registry.register_schema("zgrab2-ftp", ftp_scan_response) diff --git a/zgrab2_schemas/zgrab2/http.py b/zgrab2_schemas/zgrab2/http.py index ffff1f895..add8c465d 100644 --- a/zgrab2_schemas/zgrab2/http.py +++ b/zgrab2_schemas/zgrab2/http.py @@ -81,14 +81,10 @@ "x_xss_protection", ] -http_unknown_headers = ListOf(SubRecord({ - "key": String(), - "value": ListOf(String()) -})) +http_unknown_headers = ListOf(SubRecord({"key": String(), "value": ListOf(String())})) _http_headers = dict( - (header_name, ListOf(String())) - for header_name in http_known_headers + (header_name, ListOf(String())) for header_name in http_known_headers ) _http_headers["unknown"] = http_unknown_headers @@ -99,81 +95,93 @@ http_form_values = SubRecord({}) # TODO FIXME: unconstrained dict # lib/http/request.go: URLWrapper -http_url_wrapper = SubRecord({ - "scheme": String(), - "opaque": String(), - "host": String(), - "path": String(), - "raw_path": String(), - "raw_query": String(), - "fragment": String() -}) +http_url_wrapper = SubRecord( + { + "scheme": String(), + "opaque": String(), + "host": String(), + "path": String(), + "raw_path": String(), + "raw_query": String(), + "fragment": String(), + } +) # modules/http.go: HTTPRequest -http_request = SubRecord({ - "method": String(), - "endpoint": String(), - "user_agent": String(), - "body": String() -}) +http_request = SubRecord( + {"method": String(), "endpoint": String(), "user_agent": String(), "body": String()} +) # modules/http.go: HTTPResponse -http_response = SubRecord({ - "version_major": Signed32BitInteger(), - "version_minor": Signed32BitInteger(), - "status_code": Signed32BitInteger(), - "status_line": String(), - "headers": http_headers, - "body": String(), - "body_sha256": String() -}) +http_response = SubRecord( + { + "version_major": Signed32BitInteger(), + "version_minor": Signed32BitInteger(), + "status_code": Signed32BitInteger(), + "status_line": String(), + "headers": http_headers, + "body": String(), + "body_sha256": String(), + } +) # lib/http/request.go: http.Request -http_request_full = SubRecord({ - "url": http_url_wrapper, - "method": String(), - "headers": http_headers, - "body": String(), - "content_length": Signed64BitInteger(), - "transfer_encoding": ListOf(String()), - "close": Boolean(), - "host": String(), - "form": http_form_values, - "post_form": http_form_values, - "multipart_form": http_form_values, - "trailers": http_headers, - # The new field tls_log contains the zgrab2 TLS logs. - "tls_log": zgrab2.tls_log -}) +http_request_full = SubRecord( + { + "url": http_url_wrapper, + "method": String(), + "headers": http_headers, + "body": String(), + "content_length": Signed64BitInteger(), + "transfer_encoding": ListOf(String()), + "close": Boolean(), + "host": String(), + "form": http_form_values, + "post_form": http_form_values, + "multipart_form": http_form_values, + "trailers": http_headers, + # The new field tls_log contains the zgrab2 TLS logs. + "tls_log": zgrab2.tls_log, + } +) # lib/http/response.go: http.Response -http_response_full = SubRecord({ - "status_line": String(), - "status_code": Unsigned32BitInteger(), - # lib/http/protocol.go: http.Protocol - "protocol": SubRecord({ - "name": String(), - "major": Unsigned32BitInteger(), - "minor": Unsigned32BitInteger(), - }), - "headers": http_headers, - "body": String(), - "body_sha256": Binary(), - "content_length": Signed64BitInteger(), - "transfer_encoding": ListOf(String()), - "trailers": http_headers, - "request": http_request_full -}) +http_response_full = SubRecord( + { + "status_line": String(), + "status_code": Unsigned32BitInteger(), + # lib/http/protocol.go: http.Protocol + "protocol": SubRecord( + { + "name": String(), + "major": Unsigned32BitInteger(), + "minor": Unsigned32BitInteger(), + } + ), + "headers": http_headers, + "body": String(), + "body_sha256": Binary(), + "content_length": Signed64BitInteger(), + "transfer_encoding": ListOf(String()), + "trailers": http_headers, + "request": http_request_full, + } +) # modules/http.go: HTTPResults -http_scan_response = SubRecord({ - "result": SubRecord({ - "connect_request": http_request, - "connect_response": http_response, - "response": http_response_full, - "redirect_response_chain": ListOf(http_response_full), - }) -}, extends=zgrab2.base_scan_response) +http_scan_response = SubRecord( + { + "result": SubRecord( + { + "connect_request": http_request, + "connect_response": http_response, + "response": http_response_full, + "redirect_response_chain": ListOf(http_response_full), + } + ) + }, + extends=zgrab2.base_scan_response, +) zschema.registry.register_schema("zgrab2-http", http_scan_response) diff --git a/zgrab2_schemas/zgrab2/imap.py b/zgrab2_schemas/zgrab2/imap.py index 42299b584..2625b9c53 100644 --- a/zgrab2_schemas/zgrab2/imap.py +++ b/zgrab2_schemas/zgrab2/imap.py @@ -7,14 +7,21 @@ import zcrypto_schemas.zcrypto as zcrypto from . import zgrab2 -imap_scan_response = SubRecord({ - "result": SubRecord({ - "banner": String(doc="The IMAP banner."), - "starttls": String(doc="The server's response to the STARTTLS command."), - "close": String(doc="The server's response to the CLOSE command."), - "tls": zgrab2.tls_log, - }) -}, extends=zgrab2.base_scan_response) +imap_scan_response = SubRecord( + { + "result": SubRecord( + { + "banner": String(doc="The IMAP banner."), + "starttls": String( + doc="The server's response to the STARTTLS command." + ), + "close": String(doc="The server's response to the CLOSE command."), + "tls": zgrab2.tls_log, + } + ) + }, + extends=zgrab2.base_scan_response, +) zschema.registry.register_schema("zgrab2-imap", imap_scan_response) diff --git a/zgrab2_schemas/zgrab2/ipp.py b/zgrab2_schemas/zgrab2/ipp.py index 4cafed3c8..ff1fd2fc5 100644 --- a/zgrab2_schemas/zgrab2/ipp.py +++ b/zgrab2_schemas/zgrab2/ipp.py @@ -63,14 +63,10 @@ "x_forwarded_for", ] -http_unknown_headers = ListOf(SubRecord({ - "key": String(), - "value": ListOf(String()) -})) +http_unknown_headers = ListOf(SubRecord({"key": String(), "value": ListOf(String())})) _http_headers = dict( - (header_name, ListOf(String())) - for header_name in http_known_headers + (header_name, ListOf(String())) for header_name in http_known_headers ) _http_headers["unknown"] = http_unknown_headers @@ -81,71 +77,78 @@ http_form_values = SubRecord({}) # TODO FIXME: unconstrained dict # lib/http/request.go: URLWrapper -http_url_wrapper = SubRecord({ - "scheme": String(), - "opaque": String(), - "host": String(), - "path": String(), - "raw_path": String(), - "raw_query": String(), - "fragment": String() -}) +http_url_wrapper = SubRecord( + { + "scheme": String(), + "opaque": String(), + "host": String(), + "path": String(), + "raw_path": String(), + "raw_query": String(), + "fragment": String(), + } +) # modules/http.go: HTTPRequest -http_request = SubRecord({ - "method": String(), - "endpoint": String(), - "user_agent": String(), - "body": String() -}) +http_request = SubRecord( + {"method": String(), "endpoint": String(), "user_agent": String(), "body": String()} +) # modules/http.go: HTTPResponse -http_response = SubRecord({ - "version_major": Signed32BitInteger(), - "version_minor": Signed32BitInteger(), - "status_code": Signed32BitInteger(), - "status_line": String(), - "headers": http_headers, - "body": String(), - "body_sha256": String() -}) +http_response = SubRecord( + { + "version_major": Signed32BitInteger(), + "version_minor": Signed32BitInteger(), + "status_code": Signed32BitInteger(), + "status_line": String(), + "headers": http_headers, + "body": String(), + "body_sha256": String(), + } +) # lib/http/request.go: http.Request -http_request_full = SubRecord({ - "url": http_url_wrapper, - "method": String(), - "headers": http_headers, - "body": String(), - "content_length": Signed64BitInteger(), - "transfer_encoding": ListOf(String()), - "close": Boolean(), - "host": String(), - "form": http_form_values, - "post_form": http_form_values, - "multipart_form": http_form_values, - "trailers": http_headers, - # The new field tls_log contains the zgrab2 TLS logs. - "tls_log": zgrab2.tls_log -}) +http_request_full = SubRecord( + { + "url": http_url_wrapper, + "method": String(), + "headers": http_headers, + "body": String(), + "content_length": Signed64BitInteger(), + "transfer_encoding": ListOf(String()), + "close": Boolean(), + "host": String(), + "form": http_form_values, + "post_form": http_form_values, + "multipart_form": http_form_values, + "trailers": http_headers, + # The new field tls_log contains the zgrab2 TLS logs. + "tls_log": zgrab2.tls_log, + } +) # lib/http/response.go: http.Response -http_response_full = SubRecord({ - "status_line": String(), - "status_code": Unsigned32BitInteger(), - # lib/http/protocol.go: http.Protocol - "protocol": SubRecord({ - "name": String(), - "major": Unsigned32BitInteger(), - "minor": Unsigned32BitInteger(), - }), - "headers": http_headers, - "body": String(), - "body_sha256": Binary(), - "content_length": Signed64BitInteger(), - "transfer_encoding": ListOf(String()), - "trailers": http_headers, - "request": http_request_full -}) +http_response_full = SubRecord( + { + "status_line": String(), + "status_code": Unsigned32BitInteger(), + # lib/http/protocol.go: http.Protocol + "protocol": SubRecord( + { + "name": String(), + "major": Unsigned32BitInteger(), + "minor": Unsigned32BitInteger(), + } + ), + "headers": http_headers, + "body": String(), + "body_sha256": Binary(), + "content_length": Signed64BitInteger(), + "transfer_encoding": ListOf(String()), + "trailers": http_headers, + "request": http_request_full, + } +) # TODO: Determine whether value-tag types with same underlying form should have a different name in this mapping # TODO: Add method to decode these values appropriately. Encoding of different tag's attribute values specified @@ -153,56 +156,96 @@ # "value-tag" values which specify the interpretation of an attribute's value: # From RFC 8010 Section 3.5.2 (https://tools.ietf.org/html/rfc8010#section-3.5.2) # Note: value-tag values are camelCase because the names are specified that way in RFC -ipp_attribute_value = SubRecord({ - "raw": IndexedBinary(), - "integer": Signed32BitInteger(), - "boolean": Boolean(), - "enum": String(), - "octetString": IndexedBinary(), - "dateTime": DateTime(), - # TODO: Determine appropriate type for resolution - "resolution": IndexedBinary(), - # TODO: Determine appropriate type for range of Integers (probably {min, max} pair) - "rangeOfInteger": IndexedBinary(), - # TODO: Determine appropriate type for beginning of attribute collection - "bagCollection": IndexedBinary(), - "textWithLanguage": String(), - "nameWithLanguage": String(), - # TODO: Determine appropriate type for end of attribute collection - "endCollection": IndexedBinary(), - "textWithoutLanguage": String(), - "nameWithoutLanguage": String(), - "keyword": String(), - "uri": String(), - "uriScheme": String(), - "charset": String(), - "naturalLanguage": String(), - "mimeMediaType": String(), - "memberAttrName": String(), -}) - -ipp_attribute = SubRecord({ - "name": String(), - "values": ListOf(ipp_attribute_value), - "tag": Unsigned8BitInteger(), -}) - -ipp_scan_response = SubRecord({ - "result": SubRecord({ - "version_major": Signed8BitInteger(doc="Major component of IPP version listed in the Server header of a response to an IPP get-printer-attributes request."), - "version_minor": Signed8BitInteger(doc="Minor component of IPP version listed in the Server header of a response to an IPP get-printer-attributes request."), - "version_string": String(doc="The specific IPP version returned in response to an IPP get-printer-attributes request. Always in the form 'IPP/x.y'", examples=["IPP/1.0", "IPP/2.1"]), - "cups_version": String(doc="The CUPS version, if any, specified in the Server header of an IPP get-attributes response.", examples=["CUPS/1.7", "CUPS/2.2"]), - "attributes": ListOf(ipp_attribute, doc="All IPP attributes included in any contentful responses obtained. Each has a name, list of values (potentially only one), and a tag denoting how the value should be interpreted."), - "attr_cups_version": String(doc="The CUPS version, if any, specified in the list of attributes returned in a get-printer-attributes response or CUPS-get-printers response. Generally in the form 'x.y.z'.", examples=["1.7.5", "2.2.7"]), - "attr_ipp_versions": ListOf(String(), doc="Each IPP version, if any, specified in the list of attributes returned in a get-printer-attributes response or CUPS-get-printers response. Always in the form 'x.y'.", examples=["1.0", "1.1", "2.0", "2.1"]), - "attr_printer_uris": ListOf(String(), doc="Each printer URI, if any, specified in the list of attributes returned in a get-printer-attributes response or CUPS-get-printers response. Uses ipp(s) or http(s) scheme, followed by a hostname or IP, and then the path to a particular printer.", examples=["ipp://201.6.251.191:631/printers/Etiqueta", "http://163.212.253.14/ipp", "ipp://BRNB8763F84DD6A.local./ipp/port1"]), - "response": http_response_full, - "cups_response": http_response_full, - "tls": zgrab2.tls_log, - "redirect_response_chain": ListOf(http_response_full, doc="Each response returned while following a series of redirects."), - }) -}, extends=zgrab2.base_scan_response) +ipp_attribute_value = SubRecord( + { + "raw": IndexedBinary(), + "integer": Signed32BitInteger(), + "boolean": Boolean(), + "enum": String(), + "octetString": IndexedBinary(), + "dateTime": DateTime(), + # TODO: Determine appropriate type for resolution + "resolution": IndexedBinary(), + # TODO: Determine appropriate type for range of Integers (probably {min, max} pair) + "rangeOfInteger": IndexedBinary(), + # TODO: Determine appropriate type for beginning of attribute collection + "bagCollection": IndexedBinary(), + "textWithLanguage": String(), + "nameWithLanguage": String(), + # TODO: Determine appropriate type for end of attribute collection + "endCollection": IndexedBinary(), + "textWithoutLanguage": String(), + "nameWithoutLanguage": String(), + "keyword": String(), + "uri": String(), + "uriScheme": String(), + "charset": String(), + "naturalLanguage": String(), + "mimeMediaType": String(), + "memberAttrName": String(), + } +) + +ipp_attribute = SubRecord( + { + "name": String(), + "values": ListOf(ipp_attribute_value), + "tag": Unsigned8BitInteger(), + } +) + +ipp_scan_response = SubRecord( + { + "result": SubRecord( + { + "version_major": Signed8BitInteger( + doc="Major component of IPP version listed in the Server header of a response to an IPP get-printer-attributes request." + ), + "version_minor": Signed8BitInteger( + doc="Minor component of IPP version listed in the Server header of a response to an IPP get-printer-attributes request." + ), + "version_string": String( + doc="The specific IPP version returned in response to an IPP get-printer-attributes request. Always in the form 'IPP/x.y'", + examples=["IPP/1.0", "IPP/2.1"], + ), + "cups_version": String( + doc="The CUPS version, if any, specified in the Server header of an IPP get-attributes response.", + examples=["CUPS/1.7", "CUPS/2.2"], + ), + "attributes": ListOf( + ipp_attribute, + doc="All IPP attributes included in any contentful responses obtained. Each has a name, list of values (potentially only one), and a tag denoting how the value should be interpreted.", + ), + "attr_cups_version": String( + doc="The CUPS version, if any, specified in the list of attributes returned in a get-printer-attributes response or CUPS-get-printers response. Generally in the form 'x.y.z'.", + examples=["1.7.5", "2.2.7"], + ), + "attr_ipp_versions": ListOf( + String(), + doc="Each IPP version, if any, specified in the list of attributes returned in a get-printer-attributes response or CUPS-get-printers response. Always in the form 'x.y'.", + examples=["1.0", "1.1", "2.0", "2.1"], + ), + "attr_printer_uris": ListOf( + String(), + doc="Each printer URI, if any, specified in the list of attributes returned in a get-printer-attributes response or CUPS-get-printers response. Uses ipp(s) or http(s) scheme, followed by a hostname or IP, and then the path to a particular printer.", + examples=[ + "ipp://201.6.251.191:631/printers/Etiqueta", + "http://163.212.253.14/ipp", + "ipp://BRNB8763F84DD6A.local./ipp/port1", + ], + ), + "response": http_response_full, + "cups_response": http_response_full, + "tls": zgrab2.tls_log, + "redirect_response_chain": ListOf( + http_response_full, + doc="Each response returned while following a series of redirects.", + ), + } + ) + }, + extends=zgrab2.base_scan_response, +) zschema.registry.register_schema("zgrab2-ipp", ipp_scan_response) diff --git a/zgrab2_schemas/zgrab2/modbus.py b/zgrab2_schemas/zgrab2/modbus.py index 7bb97846a..2660fdb36 100644 --- a/zgrab2_schemas/zgrab2/modbus.py +++ b/zgrab2_schemas/zgrab2/modbus.py @@ -8,47 +8,57 @@ from . import zgrab2 mei_object_names = [ - 'vendor', - 'product_code', - 'revision', - 'vendor_url', - 'product_name', - 'model_name', - 'user_application_name', + "vendor", + "product_code", + "revision", + "vendor_url", + "product_name", + "model_name", + "user_application_name", ] # IDs without an explicit name are encoded as oid_(decimal id). -mei_object_set = SubRecord({ - i < len(mei_object_names) and mei_object_names[i] - or 'oid_' + str(i): String() - for i in range(0, 256) -}) - -mei_response = SubRecord({ - 'conformity_level': Unsigned8BitInteger(), - 'more_follows': Boolean(), - 'next_object_id': Unsigned8BitInteger(), - 'object_count': Unsigned8BitInteger(), - 'objects': mei_object_set, -}) - -exception_response = SubRecord({ - 'exception_function': Unsigned8BitInteger(), - 'exception_type': Unsigned8BitInteger(), -}) - -modbus_scan_response = SubRecord({ - 'result': SubRecord({ - 'length': Unsigned16BitInteger(), - 'unit_id': Unsigned8BitInteger(), - 'function_code': Unsigned8BitInteger(), - 'raw_response': Binary(), - 'mei_response': mei_response, - 'exception_response': exception_response, - 'raw': Binary(), - }) -}, extends=zgrab2.base_scan_response) - -zschema.registry.register_schema('zgrab2-modbus', modbus_scan_response) - -zgrab2.register_scan_response_type('modbus', modbus_scan_response) +mei_object_set = SubRecord( + { + i < len(mei_object_names) and mei_object_names[i] or "oid_" + str(i): String() + for i in range(0, 256) + } +) + +mei_response = SubRecord( + { + "conformity_level": Unsigned8BitInteger(), + "more_follows": Boolean(), + "next_object_id": Unsigned8BitInteger(), + "object_count": Unsigned8BitInteger(), + "objects": mei_object_set, + } +) + +exception_response = SubRecord( + { + "exception_function": Unsigned8BitInteger(), + "exception_type": Unsigned8BitInteger(), + } +) + +modbus_scan_response = SubRecord( + { + "result": SubRecord( + { + "length": Unsigned16BitInteger(), + "unit_id": Unsigned8BitInteger(), + "function_code": Unsigned8BitInteger(), + "raw_response": Binary(), + "mei_response": mei_response, + "exception_response": exception_response, + "raw": Binary(), + } + ) + }, + extends=zgrab2.base_scan_response, +) + +zschema.registry.register_schema("zgrab2-modbus", modbus_scan_response) + +zgrab2.register_scan_response_type("modbus", modbus_scan_response) diff --git a/zgrab2_schemas/zgrab2/mongodb.py b/zgrab2_schemas/zgrab2/mongodb.py index c11a4fe31..4a9df10ec 100644 --- a/zgrab2_schemas/zgrab2/mongodb.py +++ b/zgrab2_schemas/zgrab2/mongodb.py @@ -7,32 +7,67 @@ import zcrypto_schemas.zcrypto as zcrypto from . import zgrab2 -mongodb_scan_response = SubRecord({ - "result": SubRecord({ - "build_info": SubRecord({ - "version": String(doc="Version of mongodb server"), - "git_version": String(doc="Git Version of mongodb server"), - "max_wire_version": Signed32BitInteger(), - "build_environment": SubRecord({ - "dist_mod": String(), - "dist_arch": String(), - "cc": String(), - "cc_flags": String(), - "cxx": String(), - "cxx_flags": String(), - "link_flags": String(), - "target_arch": String(), - "target_os": String()})}), - "is_master": SubRecord({ - "is_master": Boolean(), - "max_wire_version": Signed32BitInteger(), - "min_wire_version": Signed32BitInteger(), - "max_bson_object_size": Signed32BitInteger(), - "max_write_batch_size": Signed32BitInteger(), - "logical_session_timeout_minutes": Signed32BitInteger(), - "max_message_size_bytes": Signed32BitInteger(), - "read_only": Boolean()})}) -}, extends=zgrab2.base_scan_response) +mongodb_scan_response = SubRecord( + { + "result": SubRecord( + { + "build_info": SubRecord( + { + "version": String(doc="Version of mongodb server"), + "git_version": String(doc="Git Version of mongodb server"), + "max_wire_version": Signed32BitInteger(), + "sys_info": String(), + "allocator": String(), + "bits": Unsigned32BitInteger(), + "max_bson_object_size": Unsigned32BitInteger(), + "javascript_engine": String(), + "storage_engines": ListOf(String()), + "build_environment": SubRecord( + { + "dist_mod": String(), + "dist_arch": String(), + "cc": String(), + "cc_flags": String(), + "cxx": String(), + "cxx_flags": String(), + "link_flags": String(), + "target_arch": String(), + "target_os": String(), + } + ), + } + ), + "database_info": SubRecord( + { + "databases": ListOf( + SubRecord( + { + "name": String(), + "size_on_disk": Signed32BitInteger(), + "empty": Boolean(), + } + ) + ), + "total_size": Signed32BitInteger(), + } + ), + "is_master": SubRecord( + { + "is_master": Boolean(), + "max_wire_version": Signed32BitInteger(), + "min_wire_version": Signed32BitInteger(), + "max_bson_object_size": Signed32BitInteger(), + "max_write_batch_size": Signed32BitInteger(), + "logical_session_timeout_minutes": Signed32BitInteger(), + "max_message_size_bytes": Signed32BitInteger(), + "read_only": Boolean(), + } + ), + } + ) + }, + extends=zgrab2.base_scan_response, +) zschema.registry.register_schema("zgrab2-mongodb", mongodb_scan_response) diff --git a/zgrab2_schemas/zgrab2/mssql.py b/zgrab2_schemas/zgrab2/mssql.py index 7355ee202..93cc4ec56 100644 --- a/zgrab2_schemas/zgrab2/mssql.py +++ b/zgrab2_schemas/zgrab2/mssql.py @@ -8,43 +8,57 @@ from . import zgrab2 ENCRYPT_MODES = [ - "ENCRYPT_OFF", - "ENCRYPT_ON", - "ENCRYPT_NOT_SUP", - "ENCRYPT_REQ", - "UNKNOWN" + "ENCRYPT_OFF", + "ENCRYPT_ON", + "ENCRYPT_NOT_SUP", + "ENCRYPT_REQ", + "UNKNOWN", ] -unknown_prelogin_option = SubRecord({ - "token": Unsigned8BitInteger(), - "value": Binary(), -}) +unknown_prelogin_option = SubRecord( + { + "token": Unsigned8BitInteger(), + "value": Binary(), + } +) -prelogin_options = SubRecord({ - "version": SubRecord({ - "major": Unsigned8BitInteger(), - "minor": Unsigned8BitInteger(), - "build_number": Unsigned16BitInteger(), - }), - "encrypt_mode": Enum(values=ENCRYPT_MODES), - "instance": WhitespaceAnalyzedString(), - "thread_id": Unsigned32BitInteger(), - "mars": Unsigned8BitInteger(), - "trace_id": Binary(), - "fed_auth_required": Unsigned8BitInteger(), - "nonce": Binary(), - "unknown": ListOf(unknown_prelogin_option), -}) +prelogin_options = SubRecord( + { + "version": SubRecord( + { + "major": Unsigned8BitInteger(), + "minor": Unsigned8BitInteger(), + "build_number": Unsigned16BitInteger(), + } + ), + "encrypt_mode": Enum(values=ENCRYPT_MODES), + "instance": WhitespaceAnalyzedString(), + "thread_id": Unsigned32BitInteger(), + "mars": Unsigned8BitInteger(), + "trace_id": Binary(), + "fed_auth_required": Unsigned8BitInteger(), + "nonce": Binary(), + "unknown": ListOf(unknown_prelogin_option), + } +) -mssql_scan_response = SubRecord({ - "result": SubRecord({ - "version": WhitespaceAnalyzedString(), - "instance_name": WhitespaceAnalyzedString(), - "prelogin_options": prelogin_options, - "encrypt_mode": Enum(values=ENCRYPT_MODES, doc="The negotiated ENCRYPT_MODE with the server."), - "tls": zgrab2.tls_log, - }) -}, extends=zgrab2.base_scan_response) +mssql_scan_response = SubRecord( + { + "result": SubRecord( + { + "version": WhitespaceAnalyzedString(), + "instance_name": WhitespaceAnalyzedString(), + "prelogin_options": prelogin_options, + "encrypt_mode": Enum( + values=ENCRYPT_MODES, + doc="The negotiated ENCRYPT_MODE with the server.", + ), + "tls": zgrab2.tls_log, + } + ) + }, + extends=zgrab2.base_scan_response, +) zschema.registry.register_schema("zgrab2-mssql", mssql_scan_response) diff --git a/zgrab2_schemas/zgrab2/mysql.py b/zgrab2_schemas/zgrab2/mysql.py index d9d929941..450d3a51d 100644 --- a/zgrab2_schemas/zgrab2/mysql.py +++ b/zgrab2_schemas/zgrab2/mysql.py @@ -8,73 +8,116 @@ from . import zgrab2 # zgrab2/lib/mysql/mysql.go: GetServerStatusFlags() -mysql_server_status_flags = zgrab2.FlagsSet([ - "SERVER_STATUS_IN_TRANS", - "SERVER_STATUS_AUTOCOMMIT", - "SERVER_MORE_RESULTS_EXISTS", - "SERVER_QUERY_NO_GOOD_INDEX_USED", - "SERVER_QUERY_NO_INDEX_USED", - "SERVER_STATUS_CURSOR_EXISTS", - "SERVER_STATUS_LAST_ROW_SENT", - "SERVER_STATUS_DB_DROPPED", - "SERVER_STATUS_NO_BACKSLASH_ESCAPES", - "SERVER_STATUS_METADATA_CHANGED", - "SERVER_QUERY_WAS_SLOW", - "SERVER_PS_OUT_PARAMS", - "SERVER_STATUS_IN_TRANS_READONLY", - "SERVER_SESSION_STATE_CHANGED", -], doc="The set of status flags the server returned in the initial HandshakePacket. Each entry corresponds to a bit being set in the flags; key names correspond to the #defines in the MySQL docs.") +mysql_server_status_flags = zgrab2.FlagsSet( + [ + "SERVER_STATUS_IN_TRANS", + "SERVER_STATUS_AUTOCOMMIT", + "SERVER_MORE_RESULTS_EXISTS", + "SERVER_QUERY_NO_GOOD_INDEX_USED", + "SERVER_QUERY_NO_INDEX_USED", + "SERVER_STATUS_CURSOR_EXISTS", + "SERVER_STATUS_LAST_ROW_SENT", + "SERVER_STATUS_DB_DROPPED", + "SERVER_STATUS_NO_BACKSLASH_ESCAPES", + "SERVER_STATUS_METADATA_CHANGED", + "SERVER_QUERY_WAS_SLOW", + "SERVER_PS_OUT_PARAMS", + "SERVER_STATUS_IN_TRANS_READONLY", + "SERVER_SESSION_STATE_CHANGED", + ], + doc="The set of status flags the server returned in the initial HandshakePacket. Each entry corresponds to a bit being set in the flags; key names correspond to the #defines in the MySQL docs.", +) # zgrab2/lib/mysql/mysql.go: GetClientCapabilityFlags() -mysql_capability_flags = zgrab2.FlagsSet([ - "CLIENT_LONG_PASSWORD", - "CLIENT_FOUND_ROWS", - "CLIENT_LONG_FLAG", - "CLIENT_CONNECT_WITH_DB", - "CLIENT_NO_SCHEMA", - "CLIENT_COMPRESS", - "CLIENT_ODBC", - "CLIENT_LOCAL_FILES", - "CLIENT_IGNORE_SPACE", - "CLIENT_PROTOCOL_41", - "CLIENT_INTERACTIVE", - "CLIENT_SSL", - "CLIENT_IGNORE_SIGPIPE", - "CLIENT_TRANSACTIONS", - "CLIENT_RESERVED", - "CLIENT_SECURE_CONNECTION", - "CLIENT_MULTI_STATEMENTS", - "CLIENT_MULTI_RESULTS", - "CLIENT_PS_MULTI_RESULTS", - "CLIENT_PLUGIN_AUTH", - "CLIENT_CONNECT_ATTRS", - "CLIENT_PLUGIN_AUTH_LEN_ENC_CLIENT_DATA", - "CLIENT_CAN_HANDLE_EXPIRED_PASSWORDS", - "CLIENT_SESSION_TRACK", - "CLIENT_DEPRECATED_EOF", -], doc="The set of capability flags the server returned in the initial HandshakePacket. Each entry corresponds to a bit being set in the flags; key names correspond to the #defines in the MySQL docs.") +mysql_capability_flags = zgrab2.FlagsSet( + [ + "CLIENT_LONG_PASSWORD", + "CLIENT_FOUND_ROWS", + "CLIENT_LONG_FLAG", + "CLIENT_CONNECT_WITH_DB", + "CLIENT_NO_SCHEMA", + "CLIENT_COMPRESS", + "CLIENT_ODBC", + "CLIENT_LOCAL_FILES", + "CLIENT_IGNORE_SPACE", + "CLIENT_PROTOCOL_41", + "CLIENT_INTERACTIVE", + "CLIENT_SSL", + "CLIENT_IGNORE_SIGPIPE", + "CLIENT_TRANSACTIONS", + "CLIENT_RESERVED", + "CLIENT_SECURE_CONNECTION", + "CLIENT_MULTI_STATEMENTS", + "CLIENT_MULTI_RESULTS", + "CLIENT_PS_MULTI_RESULTS", + "CLIENT_PLUGIN_AUTH", + "CLIENT_CONNECT_ATTRS", + "CLIENT_PLUGIN_AUTH_LEN_ENC_CLIENT_DATA", + "CLIENT_CAN_HANDLE_EXPIRED_PASSWORDS", + "CLIENT_SESSION_TRACK", + "CLIENT_DEPRECATED_EOF", + ], + doc="The set of capability flags the server returned in the initial HandshakePacket. Each entry corresponds to a bit being set in the flags; key names correspond to the #defines in the MySQL docs.", +) # zgrab2/modules/mysql.go: MySQLScanResults -mysql_scan_response = SubRecord({ - "result": SubRecord({ - "protocol_version": Unsigned8BitInteger(doc="8-bit unsigned integer representing the server's protocol version sent in the initial HandshakePacket from the server.", examples=["10"]), - "server_version": WhitespaceAnalyzedString(doc="The specific server version returned in the initial HandshakePacket. Often in the form x.y.z, but not always.", examples=["5.5.58", "5.6.38", "5.7.20", "8.0.3-rc-log"]), - "connection_id": zgrab2.DebugOnly(Unsigned32BitInteger(doc="The server's internal identifier for this client's connection, sent in the initial HandshakePacket.")), - "auth_plugin_data": zgrab2.DebugOnly(Binary(doc="Optional plugin-specific data, whose meaning depends on the value of auth_plugin_name. Returned in the initial HandshakePacket.")), - "capability_flags": mysql_capability_flags, - "character_set": zgrab2.DebugOnly(Unsigned8BitInteger(doc="The identifier for the character set the server is using. Returned in the initial HandshakePacket.")), - "status_flags": mysql_server_status_flags, - "auth_plugin_name": zgrab2.DebugOnly(WhitespaceAnalyzedString(doc="The name of the authentication plugin, returned in the initial HandshakePacket.")), - "error_code": Signed32BitInteger(doc="Only set if there is an error returned by the server, for example if the scanner is not on the allowed hosts list."), - # error_ids could be an Enum(values=mysql_errors.mysql_error_code_to_id), but that would be brittle to changes. - "error_id": WhitespaceAnalyzedString(doc="The friendly name for the error code as defined at https://dev.mysql.com/doc/refman/8.0/en/error-messages-server.html, or UNKNOWN."), - "error_message": WhitespaceAnalyzedString(doc="Optional string describing the error. Only set if there is an error."), - "raw_packets": ListOf(Binary(), doc="The base64 encoding of all packets sent and received during the scan."), - "tls": zgrab2.tls_log, - }) -}, extends=zgrab2.base_scan_response) +mysql_scan_response = SubRecord( + { + "result": SubRecord( + { + "protocol_version": Unsigned8BitInteger( + doc="8-bit unsigned integer representing the server's protocol version sent in the initial HandshakePacket from the server.", + examples=["10"], + ), + "server_version": WhitespaceAnalyzedString( + doc="The specific server version returned in the initial HandshakePacket. Often in the form x.y.z, but not always.", + examples=["5.5.58", "5.6.38", "5.7.20", "8.0.3-rc-log"], + ), + "connection_id": zgrab2.DebugOnly( + Unsigned32BitInteger( + doc="The server's internal identifier for this client's connection, sent in the initial HandshakePacket." + ) + ), + "auth_plugin_data": zgrab2.DebugOnly( + Binary( + doc="Optional plugin-specific data, whose meaning depends on the value of auth_plugin_name. Returned in the initial HandshakePacket." + ) + ), + "capability_flags": mysql_capability_flags, + "character_set": zgrab2.DebugOnly( + Unsigned8BitInteger( + doc="The identifier for the character set the server is using. Returned in the initial HandshakePacket." + ) + ), + "status_flags": mysql_server_status_flags, + "auth_plugin_name": zgrab2.DebugOnly( + WhitespaceAnalyzedString( + doc="The name of the authentication plugin, returned in the initial HandshakePacket." + ) + ), + "error_code": Signed32BitInteger( + doc="Only set if there is an error returned by the server, for example if the scanner is not on the allowed hosts list." + ), + # error_ids could be an Enum(values=mysql_errors.mysql_error_code_to_id), but that would be brittle to changes. + "error_id": WhitespaceAnalyzedString( + doc="The friendly name for the error code as defined at https://dev.mysql.com/doc/refman/8.0/en/error-messages-server.html, or UNKNOWN." + ), + "error_message": WhitespaceAnalyzedString( + doc="Optional string describing the error. Only set if there is an error." + ), + "raw_packets": ListOf( + Binary(), + doc="The base64 encoding of all packets sent and received during the scan.", + ), + "tls": zgrab2.tls_log, + } + ) + }, + extends=zgrab2.base_scan_response, +) -def generate_mysql_errors(root='.'): + +def generate_mysql_errors(root="."): """ Fetch the error code -> error #define mappings from dev.mysql.com and write the mappings out to the generated source files: @@ -82,15 +125,18 @@ def generate_mysql_errors(root='.'): """ from requests import get import re - li_pat = re.compile(']*>(.*?)', re.DOTALL) + + li_pat = re.compile("]*>(.*?)", re.DOTALL) urls = [ - 'https://dev.mysql.com/doc/refman/5.5/en/error-messages-server.html', - 'https://dev.mysql.com/doc/refman/5.6/en/error-messages-server.html', - 'https://dev.mysql.com/doc/refman/5.7/en/error-messages-server.html', - 'https://dev.mysql.com/doc/refman/8.0/en/error-messages-server.html' + "https://dev.mysql.com/doc/refman/5.5/en/error-messages-server.html", + "https://dev.mysql.com/doc/refman/5.6/en/error-messages-server.html", + "https://dev.mysql.com/doc/refman/5.7/en/error-messages-server.html", + "https://dev.mysql.com/doc/refman/8.0/en/error-messages-server.html", ] code_pat = re.compile('Error: ([0-9]+)') - id_pat = re.compile('SQLSTATE: .*?[\r\n ]*\\(]+>(.*?)') + id_pat = re.compile( + 'SQLSTATE: .*?[\r\n ]*\\(]+>(.*?)' + ) codes = {} for url in urls: html = get(url).content @@ -104,33 +150,36 @@ def generate_mysql_errors(root='.'): codes[code] = id import os.path from datetime import datetime + timestamp = datetime.now().strftime("%Y/%m/%d %H:%M:%S") with open(os.path.join(root, "zgrab2_schemas/zgrab2/mysql_errors.py"), "w") as fp: - fp.write('# Auto-generated at %s using data aggregated from:\n' % timestamp) + fp.write("# Auto-generated at %s using data aggregated from:\n" % timestamp) for url in urls: - fp.write('# %s\n' % url) + fp.write("# %s\n" % url) - fp.write('mysql_error_code_to_id = {\n') + fp.write("mysql_error_code_to_id = {\n") for code in sorted(codes): id = codes[code] fp.write(' 0x%04x: "%s",\n' % (code, id)) - fp.write('}\n') + fp.write("}\n") with open(os.path.join(root, "lib/mysql/errors.go"), "w") as fp: - fp.write('package mysql\n\n') - fp.write('// Auto-generated at %s using data aggregated from:\n' % timestamp) + fp.write("package mysql\n\n") + fp.write("// Auto-generated at %s using data aggregated from:\n" % timestamp) for url in urls: - fp.write('// %s\n' % url) + fp.write("// %s\n" % url) - fp.write('\n') - fp.write('// ErrorCodes maps the 16-bit error codes to the "ErrorID"s defined in the docs.\n') - fp.write('var ErrorCodes = map[uint16]string {\n') + fp.write("\n") + fp.write( + '// ErrorCodes maps the 16-bit error codes to the "ErrorID"s defined in the docs.\n' + ) + fp.write("var ErrorCodes = map[uint16]string {\n") for code in sorted(codes): id = codes[code] fp.write(' 0x%04x: "%s",\n' % (code, id)) - fp.write('}\n') + fp.write("}\n") zschema.registry.register_schema("zgrab2-mysql", mysql_scan_response) -zgrab2.register_scan_response_type('mysql', mysql_scan_response) +zgrab2.register_scan_response_type("mysql", mysql_scan_response) diff --git a/zgrab2_schemas/zgrab2/mysql_errors.py b/zgrab2_schemas/zgrab2/mysql_errors.py index f7713f0e3..485fea512 100644 --- a/zgrab2_schemas/zgrab2/mysql_errors.py +++ b/zgrab2_schemas/zgrab2/mysql_errors.py @@ -4,30 +4,30 @@ # https://dev.mysql.com/doc/refman/5.7/en/error-messages-server.html # https://dev.mysql.com/doc/refman/8.0/en/error-messages-server.html mysql_error_code_to_id = { - 0x03e8: "ER_HASHCHK", - 0x03e9: "ER_NISAMCHK", - 0x03ea: "ER_NO", - 0x03eb: "ER_YES", - 0x03ec: "ER_CANT_CREATE_FILE", - 0x03ed: "ER_CANT_CREATE_TABLE", - 0x03ee: "ER_CANT_CREATE_DB", - 0x03ef: "ER_DB_CREATE_EXISTS", - 0x03f0: "ER_DB_DROP_EXISTS", - 0x03f1: "ER_DB_DROP_DELETE", - 0x03f2: "ER_DB_DROP_RMDIR", - 0x03f3: "ER_CANT_DELETE_FILE", - 0x03f4: "ER_CANT_FIND_SYSTEM_REC", - 0x03f5: "ER_CANT_GET_STAT", - 0x03f6: "ER_CANT_GET_WD", - 0x03f7: "ER_CANT_LOCK", - 0x03f8: "ER_CANT_OPEN_FILE", - 0x03f9: "ER_FILE_NOT_FOUND", - 0x03fa: "ER_CANT_READ_DIR", - 0x03fb: "ER_CANT_SET_WD", - 0x03fc: "ER_CHECKREAD", - 0x03fd: "ER_DISK_FULL", - 0x03fe: "ER_DUP_KEY", - 0x03ff: "ER_ERROR_ON_CLOSE", + 0x03E8: "ER_HASHCHK", + 0x03E9: "ER_NISAMCHK", + 0x03EA: "ER_NO", + 0x03EB: "ER_YES", + 0x03EC: "ER_CANT_CREATE_FILE", + 0x03ED: "ER_CANT_CREATE_TABLE", + 0x03EE: "ER_CANT_CREATE_DB", + 0x03EF: "ER_DB_CREATE_EXISTS", + 0x03F0: "ER_DB_DROP_EXISTS", + 0x03F1: "ER_DB_DROP_DELETE", + 0x03F2: "ER_DB_DROP_RMDIR", + 0x03F3: "ER_CANT_DELETE_FILE", + 0x03F4: "ER_CANT_FIND_SYSTEM_REC", + 0x03F5: "ER_CANT_GET_STAT", + 0x03F6: "ER_CANT_GET_WD", + 0x03F7: "ER_CANT_LOCK", + 0x03F8: "ER_CANT_OPEN_FILE", + 0x03F9: "ER_FILE_NOT_FOUND", + 0x03FA: "ER_CANT_READ_DIR", + 0x03FB: "ER_CANT_SET_WD", + 0x03FC: "ER_CHECKREAD", + 0x03FD: "ER_DISK_FULL", + 0x03FE: "ER_DUP_KEY", + 0x03FF: "ER_ERROR_ON_CLOSE", 0x0400: "ER_ERROR_ON_READ", 0x0401: "ER_ERROR_ON_RENAME", 0x0402: "ER_ERROR_ON_WRITE", @@ -38,12 +38,12 @@ 0x0407: "ER_ILLEGAL_HA", 0x0408: "ER_KEY_NOT_FOUND", 0x0409: "ER_NOT_FORM_FILE", - 0x040a: "ER_NOT_KEYFILE", - 0x040b: "ER_OLD_KEYFILE", - 0x040c: "ER_OPEN_AS_READONLY", - 0x040d: "ER_OUTOFMEMORY", - 0x040e: "ER_OUT_OF_SORTMEMORY", - 0x040f: "ER_UNEXPECTED_EOF", + 0x040A: "ER_NOT_KEYFILE", + 0x040B: "ER_OLD_KEYFILE", + 0x040C: "ER_OPEN_AS_READONLY", + 0x040D: "ER_OUTOFMEMORY", + 0x040E: "ER_OUT_OF_SORTMEMORY", + 0x040F: "ER_UNEXPECTED_EOF", 0x0410: "ER_CON_COUNT_ERROR", 0x0411: "ER_OUT_OF_RESOURCES", 0x0412: "ER_BAD_HOST_ERROR", @@ -54,12 +54,12 @@ 0x0417: "ER_UNKNOWN_COM_ERROR", 0x0418: "ER_BAD_NULL_ERROR", 0x0419: "ER_BAD_DB_ERROR", - 0x041a: "ER_TABLE_EXISTS_ERROR", - 0x041b: "ER_BAD_TABLE_ERROR", - 0x041c: "ER_NON_UNIQ_ERROR", - 0x041d: "ER_SERVER_SHUTDOWN", - 0x041e: "ER_BAD_FIELD_ERROR", - 0x041f: "ER_WRONG_FIELD_WITH_GROUP", + 0x041A: "ER_TABLE_EXISTS_ERROR", + 0x041B: "ER_BAD_TABLE_ERROR", + 0x041C: "ER_NON_UNIQ_ERROR", + 0x041D: "ER_SERVER_SHUTDOWN", + 0x041E: "ER_BAD_FIELD_ERROR", + 0x041F: "ER_WRONG_FIELD_WITH_GROUP", 0x0420: "ER_WRONG_GROUP_FIELD", 0x0421: "ER_WRONG_SUM_SELECT", 0x0422: "ER_WRONG_VALUE_COUNT", @@ -70,12 +70,12 @@ 0x0427: "ER_WRONG_FIELD_SPEC", 0x0428: "ER_PARSE_ERROR", 0x0429: "ER_EMPTY_QUERY", - 0x042a: "ER_NONUNIQ_TABLE", - 0x042b: "ER_INVALID_DEFAULT", - 0x042c: "ER_MULTIPLE_PRI_KEY", - 0x042d: "ER_TOO_MANY_KEYS", - 0x042e: "ER_TOO_MANY_KEY_PARTS", - 0x042f: "ER_TOO_LONG_KEY", + 0x042A: "ER_NONUNIQ_TABLE", + 0x042B: "ER_INVALID_DEFAULT", + 0x042C: "ER_MULTIPLE_PRI_KEY", + 0x042D: "ER_TOO_MANY_KEYS", + 0x042E: "ER_TOO_MANY_KEY_PARTS", + 0x042F: "ER_TOO_LONG_KEY", 0x0430: "ER_KEY_COLUMN_DOES_NOT_EXITS", 0x0431: "ER_BLOB_USED_AS_KEY", 0x0432: "ER_TOO_BIG_FIELDLENGTH", @@ -86,12 +86,12 @@ 0x0437: "ER_SHUTDOWN_COMPLETE", 0x0438: "ER_FORCING_CLOSE", 0x0439: "ER_IPSOCK_ERROR", - 0x043a: "ER_NO_SUCH_INDEX", - 0x043b: "ER_WRONG_FIELD_TERMINATORS", - 0x043c: "ER_BLOBS_AND_NO_TERMINATED", - 0x043d: "ER_TEXTFILE_NOT_READABLE", - 0x043e: "ER_FILE_EXISTS_ERROR", - 0x043f: "ER_LOAD_INFO", + 0x043A: "ER_NO_SUCH_INDEX", + 0x043B: "ER_WRONG_FIELD_TERMINATORS", + 0x043C: "ER_BLOBS_AND_NO_TERMINATED", + 0x043D: "ER_TEXTFILE_NOT_READABLE", + 0x043E: "ER_FILE_EXISTS_ERROR", + 0x043F: "ER_LOAD_INFO", 0x0440: "ER_ALTER_INFO", 0x0441: "ER_WRONG_SUB_KEY", 0x0442: "ER_CANT_REMOVE_ALL_FIELDS", @@ -102,12 +102,12 @@ 0x0447: "ER_KILL_DENIED_ERROR", 0x0448: "ER_NO_TABLES_USED", 0x0449: "ER_TOO_BIG_SET", - 0x044a: "ER_NO_UNIQUE_LOGFILE", - 0x044b: "ER_TABLE_NOT_LOCKED_FOR_WRITE", - 0x044c: "ER_TABLE_NOT_LOCKED", - 0x044d: "ER_BLOB_CANT_HAVE_DEFAULT", - 0x044e: "ER_WRONG_DB_NAME", - 0x044f: "ER_WRONG_TABLE_NAME", + 0x044A: "ER_NO_UNIQUE_LOGFILE", + 0x044B: "ER_TABLE_NOT_LOCKED_FOR_WRITE", + 0x044C: "ER_TABLE_NOT_LOCKED", + 0x044D: "ER_BLOB_CANT_HAVE_DEFAULT", + 0x044E: "ER_WRONG_DB_NAME", + 0x044F: "ER_WRONG_TABLE_NAME", 0x0450: "ER_TOO_BIG_SELECT", 0x0451: "ER_UNKNOWN_ERROR", 0x0452: "ER_UNKNOWN_PROCEDURE", @@ -118,12 +118,12 @@ 0x0457: "ER_INVALID_GROUP_FUNC_USE", 0x0458: "ER_UNSUPPORTED_EXTENSION", 0x0459: "ER_TABLE_MUST_HAVE_COLUMNS", - 0x045a: "ER_RECORD_FILE_FULL", - 0x045b: "ER_UNKNOWN_CHARACTER_SET", - 0x045c: "ER_TOO_MANY_TABLES", - 0x045d: "ER_TOO_MANY_FIELDS", - 0x045e: "ER_TOO_BIG_ROWSIZE", - 0x045f: "ER_STACK_OVERRUN", + 0x045A: "ER_RECORD_FILE_FULL", + 0x045B: "ER_UNKNOWN_CHARACTER_SET", + 0x045C: "ER_TOO_MANY_TABLES", + 0x045D: "ER_TOO_MANY_FIELDS", + 0x045E: "ER_TOO_BIG_ROWSIZE", + 0x045F: "ER_STACK_OVERRUN", 0x0460: "ER_WRONG_OUTER_JOIN_UNUSED", 0x0461: "ER_NULL_COLUMN_IN_INDEX", 0x0462: "ER_CANT_FIND_UDF", @@ -134,12 +134,12 @@ 0x0467: "ER_CANT_FIND_DL_ENTRY", 0x0468: "ER_FUNCTION_NOT_DEFINED", 0x0469: "ER_HOST_IS_BLOCKED", - 0x046a: "ER_HOST_NOT_PRIVILEGED", - 0x046b: "ER_PASSWORD_ANONYMOUS_USER", - 0x046c: "ER_PASSWORD_NOT_ALLOWED", - 0x046d: "ER_PASSWORD_NO_MATCH", - 0x046e: "ER_UPDATE_INFO", - 0x046f: "ER_CANT_CREATE_THREAD", + 0x046A: "ER_HOST_NOT_PRIVILEGED", + 0x046B: "ER_PASSWORD_ANONYMOUS_USER", + 0x046C: "ER_PASSWORD_NOT_ALLOWED", + 0x046D: "ER_PASSWORD_NO_MATCH", + 0x046E: "ER_UPDATE_INFO", + 0x046F: "ER_CANT_CREATE_THREAD", 0x0470: "ER_WRONG_VALUE_COUNT_ON_ROW", 0x0471: "ER_CANT_REOPEN_TABLE", 0x0472: "ER_INVALID_USE_OF_NULL", @@ -150,12 +150,12 @@ 0x0477: "ER_COLUMNACCESS_DENIED_ERROR", 0x0478: "ER_ILLEGAL_GRANT_FOR_TABLE", 0x0479: "ER_GRANT_WRONG_HOST_OR_USER", - 0x047a: "ER_NO_SUCH_TABLE", - 0x047b: "ER_NONEXISTING_TABLE_GRANT", - 0x047c: "ER_NOT_ALLOWED_COMMAND", - 0x047d: "ER_SYNTAX_ERROR", - 0x047e: "ER_UNUSED1", - 0x047f: "ER_UNUSED2", + 0x047A: "ER_NO_SUCH_TABLE", + 0x047B: "ER_NONEXISTING_TABLE_GRANT", + 0x047C: "ER_NOT_ALLOWED_COMMAND", + 0x047D: "ER_SYNTAX_ERROR", + 0x047E: "ER_UNUSED1", + 0x047F: "ER_UNUSED2", 0x0480: "ER_ABORTING_CONNECTION", 0x0481: "ER_NET_PACKET_TOO_LARGE", 0x0482: "ER_NET_READ_ERROR_FROM_PIPE", @@ -166,12 +166,12 @@ 0x0487: "ER_NET_READ_INTERRUPTED", 0x0488: "ER_NET_ERROR_ON_WRITE", 0x0489: "ER_NET_WRITE_INTERRUPTED", - 0x048a: "ER_TOO_LONG_STRING", - 0x048b: "ER_TABLE_CANT_HANDLE_BLOB", - 0x048c: "ER_TABLE_CANT_HANDLE_AUTO_INCREMENT", - 0x048d: "ER_UNUSED3", - 0x048e: "ER_WRONG_COLUMN_NAME", - 0x048f: "ER_WRONG_KEY_COLUMN", + 0x048A: "ER_TOO_LONG_STRING", + 0x048B: "ER_TABLE_CANT_HANDLE_BLOB", + 0x048C: "ER_TABLE_CANT_HANDLE_AUTO_INCREMENT", + 0x048D: "ER_UNUSED3", + 0x048E: "ER_WRONG_COLUMN_NAME", + 0x048F: "ER_WRONG_KEY_COLUMN", 0x0490: "ER_WRONG_MRG_TABLE", 0x0491: "ER_DUP_UNIQUE", 0x0492: "ER_BLOB_KEY_WITHOUT_LENGTH", @@ -182,108 +182,108 @@ 0x0497: "ER_UPDATE_WITHOUT_KEY_IN_SAFE_MODE", 0x0498: "ER_KEY_DOES_NOT_EXITS", 0x0499: "ER_CHECK_NO_SUCH_TABLE", - 0x049a: "ER_CHECK_NOT_IMPLEMENTED", - 0x049b: "ER_CANT_DO_THIS_DURING_AN_TRANSACTION", - 0x049c: "ER_ERROR_DURING_COMMIT", - 0x049d: "ER_ERROR_DURING_ROLLBACK", - 0x049e: "ER_ERROR_DURING_FLUSH_LOGS", - 0x049f: "ER_ERROR_DURING_CHECKPOINT", - 0x04a0: "ER_NEW_ABORTING_CONNECTION", - 0x04a1: "ER_DUMP_NOT_IMPLEMENTED", - 0x04a2: "ER_FLUSH_MASTER_BINLOG_CLOSED", - 0x04a3: "ER_INDEX_REBUILD", - 0x04a4: "ER_MASTER", - 0x04a5: "ER_MASTER_NET_READ", - 0x04a6: "ER_MASTER_NET_WRITE", - 0x04a7: "ER_FT_MATCHING_KEY_NOT_FOUND", - 0x04a8: "ER_LOCK_OR_ACTIVE_TRANSACTION", - 0x04a9: "ER_UNKNOWN_SYSTEM_VARIABLE", - 0x04aa: "ER_CRASHED_ON_USAGE", - 0x04ab: "ER_CRASHED_ON_REPAIR", - 0x04ac: "ER_WARNING_NOT_COMPLETE_ROLLBACK", - 0x04ad: "ER_TRANS_CACHE_FULL", - 0x04ae: "ER_SLAVE_MUST_STOP", - 0x04af: "ER_SLAVE_NOT_RUNNING", - 0x04b0: "ER_BAD_SLAVE", - 0x04b1: "ER_MASTER_INFO", - 0x04b2: "ER_SLAVE_THREAD", - 0x04b3: "ER_TOO_MANY_USER_CONNECTIONS", - 0x04b4: "ER_SET_CONSTANTS_ONLY", - 0x04b5: "ER_LOCK_WAIT_TIMEOUT", - 0x04b6: "ER_LOCK_TABLE_FULL", - 0x04b7: "ER_READ_ONLY_TRANSACTION", - 0x04b8: "ER_DROP_DB_WITH_READ_LOCK", - 0x04b9: "ER_CREATE_DB_WITH_READ_LOCK", - 0x04ba: "ER_WRONG_ARGUMENTS", - 0x04bb: "ER_NO_PERMISSION_TO_CREATE_USER", - 0x04bc: "ER_UNION_TABLES_IN_DIFFERENT_DIR", - 0x04bd: "ER_LOCK_DEADLOCK", - 0x04be: "ER_TABLE_CANT_HANDLE_FT", - 0x04bf: "ER_CANNOT_ADD_FOREIGN", - 0x04c0: "ER_NO_REFERENCED_ROW", - 0x04c1: "ER_ROW_IS_REFERENCED", - 0x04c2: "ER_CONNECT_TO_MASTER", - 0x04c3: "ER_QUERY_ON_MASTER", - 0x04c4: "ER_ERROR_WHEN_EXECUTING_COMMAND", - 0x04c5: "ER_WRONG_USAGE", - 0x04c6: "ER_WRONG_NUMBER_OF_COLUMNS_IN_SELECT", - 0x04c7: "ER_CANT_UPDATE_WITH_READLOCK", - 0x04c8: "ER_MIXING_NOT_ALLOWED", - 0x04c9: "ER_DUP_ARGUMENT", - 0x04ca: "ER_USER_LIMIT_REACHED", - 0x04cb: "ER_SPECIFIC_ACCESS_DENIED_ERROR", - 0x04cc: "ER_LOCAL_VARIABLE", - 0x04cd: "ER_GLOBAL_VARIABLE", - 0x04ce: "ER_NO_DEFAULT", - 0x04cf: "ER_WRONG_VALUE_FOR_VAR", - 0x04d0: "ER_WRONG_TYPE_FOR_VAR", - 0x04d1: "ER_VAR_CANT_BE_READ", - 0x04d2: "ER_CANT_USE_OPTION_HERE", - 0x04d3: "ER_NOT_SUPPORTED_YET", - 0x04d4: "ER_MASTER_FATAL_ERROR_READING_BINLOG", - 0x04d5: "ER_SLAVE_IGNORED_TABLE", - 0x04d6: "ER_INCORRECT_GLOBAL_LOCAL_VAR", - 0x04d7: "ER_WRONG_FK_DEF", - 0x04d8: "ER_KEY_REF_DO_NOT_MATCH_TABLE_REF", - 0x04d9: "ER_OPERAND_COLUMNS", - 0x04da: "ER_SUBQUERY_NO_1_ROW", - 0x04db: "ER_UNKNOWN_STMT_HANDLER", - 0x04dc: "ER_CORRUPT_HELP_DB", - 0x04dd: "ER_CYCLIC_REFERENCE", - 0x04de: "ER_AUTO_CONVERT", - 0x04df: "ER_ILLEGAL_REFERENCE", - 0x04e0: "ER_DERIVED_MUST_HAVE_ALIAS", - 0x04e1: "ER_SELECT_REDUCED", - 0x04e2: "ER_TABLENAME_NOT_ALLOWED_HERE", - 0x04e3: "ER_NOT_SUPPORTED_AUTH_MODE", - 0x04e4: "ER_SPATIAL_CANT_HAVE_NULL", - 0x04e5: "ER_COLLATION_CHARSET_MISMATCH", - 0x04e6: "ER_SLAVE_WAS_RUNNING", - 0x04e7: "ER_SLAVE_WAS_NOT_RUNNING", - 0x04e8: "ER_TOO_BIG_FOR_UNCOMPRESS", - 0x04e9: "ER_ZLIB_Z_MEM_ERROR", - 0x04ea: "ER_ZLIB_Z_BUF_ERROR", - 0x04eb: "ER_ZLIB_Z_DATA_ERROR", - 0x04ec: "ER_CUT_VALUE_GROUP_CONCAT", - 0x04ed: "ER_WARN_TOO_FEW_RECORDS", - 0x04ee: "ER_WARN_TOO_MANY_RECORDS", - 0x04ef: "ER_WARN_NULL_TO_NOTNULL", - 0x04f0: "ER_WARN_DATA_OUT_OF_RANGE", - 0x04f1: "WARN_DATA_TRUNCATED", - 0x04f2: "ER_WARN_USING_OTHER_HANDLER", - 0x04f3: "ER_CANT_AGGREGATE_2COLLATIONS", - 0x04f4: "ER_DROP_USER", - 0x04f5: "ER_REVOKE_GRANTS", - 0x04f6: "ER_CANT_AGGREGATE_3COLLATIONS", - 0x04f7: "ER_CANT_AGGREGATE_NCOLLATIONS", - 0x04f8: "ER_VARIABLE_IS_NOT_STRUCT", - 0x04f9: "ER_UNKNOWN_COLLATION", - 0x04fa: "ER_SLAVE_IGNORED_SSL_PARAMS", - 0x04fb: "ER_SERVER_IS_IN_SECURE_AUTH_MODE", - 0x04fc: "ER_WARN_FIELD_RESOLVED", - 0x04fd: "ER_BAD_SLAVE_UNTIL_COND", - 0x04fe: "ER_MISSING_SKIP_SLAVE", - 0x04ff: "ER_UNTIL_COND_IGNORED", + 0x049A: "ER_CHECK_NOT_IMPLEMENTED", + 0x049B: "ER_CANT_DO_THIS_DURING_AN_TRANSACTION", + 0x049C: "ER_ERROR_DURING_COMMIT", + 0x049D: "ER_ERROR_DURING_ROLLBACK", + 0x049E: "ER_ERROR_DURING_FLUSH_LOGS", + 0x049F: "ER_ERROR_DURING_CHECKPOINT", + 0x04A0: "ER_NEW_ABORTING_CONNECTION", + 0x04A1: "ER_DUMP_NOT_IMPLEMENTED", + 0x04A2: "ER_FLUSH_MASTER_BINLOG_CLOSED", + 0x04A3: "ER_INDEX_REBUILD", + 0x04A4: "ER_MASTER", + 0x04A5: "ER_MASTER_NET_READ", + 0x04A6: "ER_MASTER_NET_WRITE", + 0x04A7: "ER_FT_MATCHING_KEY_NOT_FOUND", + 0x04A8: "ER_LOCK_OR_ACTIVE_TRANSACTION", + 0x04A9: "ER_UNKNOWN_SYSTEM_VARIABLE", + 0x04AA: "ER_CRASHED_ON_USAGE", + 0x04AB: "ER_CRASHED_ON_REPAIR", + 0x04AC: "ER_WARNING_NOT_COMPLETE_ROLLBACK", + 0x04AD: "ER_TRANS_CACHE_FULL", + 0x04AE: "ER_SLAVE_MUST_STOP", + 0x04AF: "ER_SLAVE_NOT_RUNNING", + 0x04B0: "ER_BAD_SLAVE", + 0x04B1: "ER_MASTER_INFO", + 0x04B2: "ER_SLAVE_THREAD", + 0x04B3: "ER_TOO_MANY_USER_CONNECTIONS", + 0x04B4: "ER_SET_CONSTANTS_ONLY", + 0x04B5: "ER_LOCK_WAIT_TIMEOUT", + 0x04B6: "ER_LOCK_TABLE_FULL", + 0x04B7: "ER_READ_ONLY_TRANSACTION", + 0x04B8: "ER_DROP_DB_WITH_READ_LOCK", + 0x04B9: "ER_CREATE_DB_WITH_READ_LOCK", + 0x04BA: "ER_WRONG_ARGUMENTS", + 0x04BB: "ER_NO_PERMISSION_TO_CREATE_USER", + 0x04BC: "ER_UNION_TABLES_IN_DIFFERENT_DIR", + 0x04BD: "ER_LOCK_DEADLOCK", + 0x04BE: "ER_TABLE_CANT_HANDLE_FT", + 0x04BF: "ER_CANNOT_ADD_FOREIGN", + 0x04C0: "ER_NO_REFERENCED_ROW", + 0x04C1: "ER_ROW_IS_REFERENCED", + 0x04C2: "ER_CONNECT_TO_MASTER", + 0x04C3: "ER_QUERY_ON_MASTER", + 0x04C4: "ER_ERROR_WHEN_EXECUTING_COMMAND", + 0x04C5: "ER_WRONG_USAGE", + 0x04C6: "ER_WRONG_NUMBER_OF_COLUMNS_IN_SELECT", + 0x04C7: "ER_CANT_UPDATE_WITH_READLOCK", + 0x04C8: "ER_MIXING_NOT_ALLOWED", + 0x04C9: "ER_DUP_ARGUMENT", + 0x04CA: "ER_USER_LIMIT_REACHED", + 0x04CB: "ER_SPECIFIC_ACCESS_DENIED_ERROR", + 0x04CC: "ER_LOCAL_VARIABLE", + 0x04CD: "ER_GLOBAL_VARIABLE", + 0x04CE: "ER_NO_DEFAULT", + 0x04CF: "ER_WRONG_VALUE_FOR_VAR", + 0x04D0: "ER_WRONG_TYPE_FOR_VAR", + 0x04D1: "ER_VAR_CANT_BE_READ", + 0x04D2: "ER_CANT_USE_OPTION_HERE", + 0x04D3: "ER_NOT_SUPPORTED_YET", + 0x04D4: "ER_MASTER_FATAL_ERROR_READING_BINLOG", + 0x04D5: "ER_SLAVE_IGNORED_TABLE", + 0x04D6: "ER_INCORRECT_GLOBAL_LOCAL_VAR", + 0x04D7: "ER_WRONG_FK_DEF", + 0x04D8: "ER_KEY_REF_DO_NOT_MATCH_TABLE_REF", + 0x04D9: "ER_OPERAND_COLUMNS", + 0x04DA: "ER_SUBQUERY_NO_1_ROW", + 0x04DB: "ER_UNKNOWN_STMT_HANDLER", + 0x04DC: "ER_CORRUPT_HELP_DB", + 0x04DD: "ER_CYCLIC_REFERENCE", + 0x04DE: "ER_AUTO_CONVERT", + 0x04DF: "ER_ILLEGAL_REFERENCE", + 0x04E0: "ER_DERIVED_MUST_HAVE_ALIAS", + 0x04E1: "ER_SELECT_REDUCED", + 0x04E2: "ER_TABLENAME_NOT_ALLOWED_HERE", + 0x04E3: "ER_NOT_SUPPORTED_AUTH_MODE", + 0x04E4: "ER_SPATIAL_CANT_HAVE_NULL", + 0x04E5: "ER_COLLATION_CHARSET_MISMATCH", + 0x04E6: "ER_SLAVE_WAS_RUNNING", + 0x04E7: "ER_SLAVE_WAS_NOT_RUNNING", + 0x04E8: "ER_TOO_BIG_FOR_UNCOMPRESS", + 0x04E9: "ER_ZLIB_Z_MEM_ERROR", + 0x04EA: "ER_ZLIB_Z_BUF_ERROR", + 0x04EB: "ER_ZLIB_Z_DATA_ERROR", + 0x04EC: "ER_CUT_VALUE_GROUP_CONCAT", + 0x04ED: "ER_WARN_TOO_FEW_RECORDS", + 0x04EE: "ER_WARN_TOO_MANY_RECORDS", + 0x04EF: "ER_WARN_NULL_TO_NOTNULL", + 0x04F0: "ER_WARN_DATA_OUT_OF_RANGE", + 0x04F1: "WARN_DATA_TRUNCATED", + 0x04F2: "ER_WARN_USING_OTHER_HANDLER", + 0x04F3: "ER_CANT_AGGREGATE_2COLLATIONS", + 0x04F4: "ER_DROP_USER", + 0x04F5: "ER_REVOKE_GRANTS", + 0x04F6: "ER_CANT_AGGREGATE_3COLLATIONS", + 0x04F7: "ER_CANT_AGGREGATE_NCOLLATIONS", + 0x04F8: "ER_VARIABLE_IS_NOT_STRUCT", + 0x04F9: "ER_UNKNOWN_COLLATION", + 0x04FA: "ER_SLAVE_IGNORED_SSL_PARAMS", + 0x04FB: "ER_SERVER_IS_IN_SECURE_AUTH_MODE", + 0x04FC: "ER_WARN_FIELD_RESOLVED", + 0x04FD: "ER_BAD_SLAVE_UNTIL_COND", + 0x04FE: "ER_MISSING_SKIP_SLAVE", + 0x04FF: "ER_UNTIL_COND_IGNORED", 0x0500: "ER_WRONG_NAME_FOR_INDEX", 0x0501: "ER_WRONG_NAME_FOR_CATALOG", 0x0502: "ER_WARN_QC_RESIZE", @@ -294,12 +294,12 @@ 0x0507: "ER_WARN_DEPRECATED_SYNTAX", 0x0508: "ER_NON_UPDATABLE_TABLE", 0x0509: "ER_FEATURE_DISABLED", - 0x050a: "ER_OPTION_PREVENTS_STATEMENT", - 0x050b: "ER_DUPLICATED_VALUE_IN_TYPE", - 0x050c: "ER_TRUNCATED_WRONG_VALUE", - 0x050d: "ER_TOO_MUCH_AUTO_TIMESTAMP_COLS", - 0x050e: "ER_INVALID_ON_UPDATE", - 0x050f: "ER_UNSUPPORTED_PS", + 0x050A: "ER_OPTION_PREVENTS_STATEMENT", + 0x050B: "ER_DUPLICATED_VALUE_IN_TYPE", + 0x050C: "ER_TRUNCATED_WRONG_VALUE", + 0x050D: "ER_TOO_MUCH_AUTO_TIMESTAMP_COLS", + 0x050E: "ER_INVALID_ON_UPDATE", + 0x050F: "ER_UNSUPPORTED_PS", 0x0510: "ER_GET_ERRMSG", 0x0511: "ER_GET_TEMPORARY_ERRMSG", 0x0512: "ER_UNKNOWN_TIME_ZONE", @@ -310,12 +310,12 @@ 0x0517: "ER_SP_NO_RECURSIVE_CREATE", 0x0518: "ER_SP_ALREADY_EXISTS", 0x0519: "ER_SP_DOES_NOT_EXIST", - 0x051a: "ER_SP_DROP_FAILED", - 0x051b: "ER_SP_STORE_FAILED", - 0x051c: "ER_SP_LILABEL_MISMATCH", - 0x051d: "ER_SP_LABEL_REDEFINE", - 0x051e: "ER_SP_LABEL_MISMATCH", - 0x051f: "ER_SP_UNINIT_VAR", + 0x051A: "ER_SP_DROP_FAILED", + 0x051B: "ER_SP_STORE_FAILED", + 0x051C: "ER_SP_LILABEL_MISMATCH", + 0x051D: "ER_SP_LABEL_REDEFINE", + 0x051E: "ER_SP_LABEL_MISMATCH", + 0x051F: "ER_SP_UNINIT_VAR", 0x0520: "ER_SP_BADSELECT", 0x0521: "ER_SP_BADRETURN", 0x0522: "ER_SP_BADSTATEMENT", @@ -326,12 +326,12 @@ 0x0527: "ER_SP_COND_MISMATCH", 0x0528: "ER_SP_NORETURN", 0x0529: "ER_SP_NORETURNEND", - 0x052a: "ER_SP_BAD_CURSOR_QUERY", - 0x052b: "ER_SP_BAD_CURSOR_SELECT", - 0x052c: "ER_SP_CURSOR_MISMATCH", - 0x052d: "ER_SP_CURSOR_ALREADY_OPEN", - 0x052e: "ER_SP_CURSOR_NOT_OPEN", - 0x052f: "ER_SP_UNDECLARED_VAR", + 0x052A: "ER_SP_BAD_CURSOR_QUERY", + 0x052B: "ER_SP_BAD_CURSOR_SELECT", + 0x052C: "ER_SP_CURSOR_MISMATCH", + 0x052D: "ER_SP_CURSOR_ALREADY_OPEN", + 0x052E: "ER_SP_CURSOR_NOT_OPEN", + 0x052F: "ER_SP_UNDECLARED_VAR", 0x0530: "ER_SP_WRONG_NO_OF_FETCH_ARGS", 0x0531: "ER_SP_FETCH_NO_DATA", 0x0532: "ER_SP_DUP_PARAM", @@ -342,12 +342,12 @@ 0x0537: "ER_SP_SUBSELECT_NYI", 0x0538: "ER_STMT_NOT_ALLOWED_IN_SF_OR_TRG", 0x0539: "ER_SP_VARCOND_AFTER_CURSHNDLR", - 0x053a: "ER_SP_CURSOR_AFTER_HANDLER", - 0x053b: "ER_SP_CASE_NOT_FOUND", - 0x053c: "ER_FPARSER_TOO_BIG_FILE", - 0x053d: "ER_FPARSER_BAD_HEADER", - 0x053e: "ER_FPARSER_EOF_IN_COMMENT", - 0x053f: "ER_FPARSER_ERROR_IN_PARAMETER", + 0x053A: "ER_SP_CURSOR_AFTER_HANDLER", + 0x053B: "ER_SP_CASE_NOT_FOUND", + 0x053C: "ER_FPARSER_TOO_BIG_FILE", + 0x053D: "ER_FPARSER_BAD_HEADER", + 0x053E: "ER_FPARSER_EOF_IN_COMMENT", + 0x053F: "ER_FPARSER_ERROR_IN_PARAMETER", 0x0540: "ER_FPARSER_EOF_IN_UNKNOWN_PARAMETER", 0x0541: "ER_VIEW_NO_EXPLAIN", 0x0542: "ER_FRM_UNKNOWN_TYPE", @@ -358,12 +358,12 @@ 0x0547: "ER_VIEW_SELECT_VARIABLE", 0x0548: "ER_VIEW_SELECT_TMPTABLE", 0x0549: "ER_VIEW_WRONG_LIST", - 0x054a: "ER_WARN_VIEW_MERGE", - 0x054b: "ER_WARN_VIEW_WITHOUT_KEY", - 0x054c: "ER_VIEW_INVALID", - 0x054d: "ER_SP_NO_DROP_SP", - 0x054e: "ER_SP_GOTO_IN_HNDLR", - 0x054f: "ER_TRG_ALREADY_EXISTS", + 0x054A: "ER_WARN_VIEW_MERGE", + 0x054B: "ER_WARN_VIEW_WITHOUT_KEY", + 0x054C: "ER_VIEW_INVALID", + 0x054D: "ER_SP_NO_DROP_SP", + 0x054E: "ER_SP_GOTO_IN_HNDLR", + 0x054F: "ER_TRG_ALREADY_EXISTS", 0x0550: "ER_TRG_DOES_NOT_EXIST", 0x0551: "ER_TRG_ON_VIEW_OR_TEMP_TABLE", 0x0552: "ER_TRG_CANT_CHANGE_ROW", @@ -374,12 +374,12 @@ 0x0557: "ER_ILLEGAL_VALUE_FOR_TYPE", 0x0558: "ER_VIEW_NONUPD_CHECK", 0x0559: "ER_VIEW_CHECK_FAILED", - 0x055a: "ER_PROCACCESS_DENIED_ERROR", - 0x055b: "ER_RELAY_LOG_FAIL", - 0x055c: "ER_PASSWD_LENGTH", - 0x055d: "ER_UNKNOWN_TARGET_BINLOG", - 0x055e: "ER_IO_ERR_LOG_INDEX_READ", - 0x055f: "ER_BINLOG_PURGE_PROHIBITED", + 0x055A: "ER_PROCACCESS_DENIED_ERROR", + 0x055B: "ER_RELAY_LOG_FAIL", + 0x055C: "ER_PASSWD_LENGTH", + 0x055D: "ER_UNKNOWN_TARGET_BINLOG", + 0x055E: "ER_IO_ERR_LOG_INDEX_READ", + 0x055F: "ER_BINLOG_PURGE_PROHIBITED", 0x0560: "ER_FSEEK_FAIL", 0x0561: "ER_BINLOG_PURGE_FATAL_ERR", 0x0562: "ER_LOG_IN_USE", @@ -390,12 +390,12 @@ 0x0567: "ER_WSAS_FAILED", 0x0568: "ER_DIFF_GROUPS_PROC", 0x0569: "ER_NO_GROUP_FOR_PROC", - 0x056a: "ER_ORDER_WITH_PROC", - 0x056b: "ER_LOGGING_PROHIBIT_CHANGING_OF", - 0x056c: "ER_NO_FILE_MAPPING", - 0x056d: "ER_WRONG_MAGIC", - 0x056e: "ER_PS_MANY_PARAM", - 0x056f: "ER_KEY_PART_0", + 0x056A: "ER_ORDER_WITH_PROC", + 0x056B: "ER_LOGGING_PROHIBIT_CHANGING_OF", + 0x056C: "ER_NO_FILE_MAPPING", + 0x056D: "ER_WRONG_MAGIC", + 0x056E: "ER_PS_MANY_PARAM", + 0x056F: "ER_KEY_PART_0", 0x0570: "ER_VIEW_CHECKSUM", 0x0571: "ER_VIEW_MULTIUPDATE", 0x0572: "ER_VIEW_NO_INSERT_FIELD_LIST", @@ -406,12 +406,12 @@ 0x0577: "ER_XAER_RMFAIL", 0x0578: "ER_XAER_OUTSIDE", 0x0579: "ER_XAER_RMERR", - 0x057a: "ER_XA_RBROLLBACK", - 0x057b: "ER_NONEXISTING_PROC_GRANT", - 0x057c: "ER_PROC_AUTO_GRANT_FAIL", - 0x057d: "ER_PROC_AUTO_REVOKE_FAIL", - 0x057e: "ER_DATA_TOO_LONG", - 0x057f: "ER_SP_BAD_SQLSTATE", + 0x057A: "ER_XA_RBROLLBACK", + 0x057B: "ER_NONEXISTING_PROC_GRANT", + 0x057C: "ER_PROC_AUTO_GRANT_FAIL", + 0x057D: "ER_PROC_AUTO_REVOKE_FAIL", + 0x057E: "ER_DATA_TOO_LONG", + 0x057F: "ER_SP_BAD_SQLSTATE", 0x0580: "ER_STARTUP", 0x0581: "ER_LOAD_FROM_FIXED_SIZE_ROWS_TO_VAR", 0x0582: "ER_CANT_CREATE_USER_WITH_GRANT", @@ -422,12 +422,12 @@ 0x0587: "ER_SP_NO_RETSET", 0x0588: "ER_CANT_CREATE_GEOMETRY_OBJECT", 0x0589: "ER_FAILED_ROUTINE_BREAK_BINLOG", - 0x058a: "ER_BINLOG_UNSAFE_ROUTINE", - 0x058b: "ER_BINLOG_CREATE_ROUTINE_NEED_SUPER", - 0x058c: "ER_EXEC_STMT_WITH_OPEN_CURSOR", - 0x058d: "ER_STMT_HAS_NO_OPEN_CURSOR", - 0x058e: "ER_COMMIT_NOT_ALLOWED_IN_SF_OR_TRG", - 0x058f: "ER_NO_DEFAULT_FOR_VIEW_FIELD", + 0x058A: "ER_BINLOG_UNSAFE_ROUTINE", + 0x058B: "ER_BINLOG_CREATE_ROUTINE_NEED_SUPER", + 0x058C: "ER_EXEC_STMT_WITH_OPEN_CURSOR", + 0x058D: "ER_STMT_HAS_NO_OPEN_CURSOR", + 0x058E: "ER_COMMIT_NOT_ALLOWED_IN_SF_OR_TRG", + 0x058F: "ER_NO_DEFAULT_FOR_VIEW_FIELD", 0x0590: "ER_SP_NO_RECURSION", 0x0591: "ER_TOO_BIG_SCALE", 0x0592: "ER_TOO_BIG_PRECISION", @@ -438,108 +438,108 @@ 0x0597: "ER_FOREIGN_DATA_SOURCE_DOESNT_EXIST", 0x0598: "ER_FOREIGN_DATA_STRING_INVALID_CANT_CREATE", 0x0599: "ER_FOREIGN_DATA_STRING_INVALID", - 0x059a: "ER_CANT_CREATE_FEDERATED_TABLE", - 0x059b: "ER_TRG_IN_WRONG_SCHEMA", - 0x059c: "ER_STACK_OVERRUN_NEED_MORE", - 0x059d: "ER_TOO_LONG_BODY", - 0x059e: "ER_WARN_CANT_DROP_DEFAULT_KEYCACHE", - 0x059f: "ER_TOO_BIG_DISPLAYWIDTH", - 0x05a0: "ER_XAER_DUPID", - 0x05a1: "ER_DATETIME_FUNCTION_OVERFLOW", - 0x05a2: "ER_CANT_UPDATE_USED_TABLE_IN_SF_OR_TRG", - 0x05a3: "ER_VIEW_PREVENT_UPDATE", - 0x05a4: "ER_PS_NO_RECURSION", - 0x05a5: "ER_SP_CANT_SET_AUTOCOMMIT", - 0x05a6: "ER_MALFORMED_DEFINER", - 0x05a7: "ER_VIEW_FRM_NO_USER", - 0x05a8: "ER_VIEW_OTHER_USER", - 0x05a9: "ER_NO_SUCH_USER", - 0x05aa: "ER_FORBID_SCHEMA_CHANGE", - 0x05ab: "ER_ROW_IS_REFERENCED_2", - 0x05ac: "ER_NO_REFERENCED_ROW_2", - 0x05ad: "ER_SP_BAD_VAR_SHADOW", - 0x05ae: "ER_TRG_NO_DEFINER", - 0x05af: "ER_OLD_FILE_FORMAT", - 0x05b0: "ER_SP_RECURSION_LIMIT", - 0x05b1: "ER_SP_PROC_TABLE_CORRUPT", - 0x05b2: "ER_SP_WRONG_NAME", - 0x05b3: "ER_TABLE_NEEDS_UPGRADE", - 0x05b4: "ER_SP_NO_AGGREGATE", - 0x05b5: "ER_MAX_PREPARED_STMT_COUNT_REACHED", - 0x05b6: "ER_VIEW_RECURSIVE", - 0x05b7: "ER_NON_GROUPING_FIELD_USED", - 0x05b8: "ER_TABLE_CANT_HANDLE_SPKEYS", - 0x05b9: "ER_NO_TRIGGERS_ON_SYSTEM_SCHEMA", - 0x05ba: "ER_REMOVED_SPACES", - 0x05bb: "ER_AUTOINC_READ_FAILED", - 0x05bc: "ER_USERNAME", - 0x05bd: "ER_HOSTNAME", - 0x05be: "ER_WRONG_STRING_LENGTH", - 0x05bf: "ER_NON_INSERTABLE_TABLE", - 0x05c0: "ER_ADMIN_WRONG_MRG_TABLE", - 0x05c1: "ER_TOO_HIGH_LEVEL_OF_NESTING_FOR_SELECT", - 0x05c2: "ER_NAME_BECOMES_EMPTY", - 0x05c3: "ER_AMBIGUOUS_FIELD_TERM", - 0x05c4: "ER_FOREIGN_SERVER_EXISTS", - 0x05c5: "ER_FOREIGN_SERVER_DOESNT_EXIST", - 0x05c6: "ER_ILLEGAL_HA_CREATE_OPTION", - 0x05c7: "ER_PARTITION_REQUIRES_VALUES_ERROR", - 0x05c8: "ER_PARTITION_WRONG_VALUES_ERROR", - 0x05c9: "ER_PARTITION_MAXVALUE_ERROR", - 0x05ca: "ER_PARTITION_SUBPARTITION_ERROR", - 0x05cb: "ER_PARTITION_SUBPART_MIX_ERROR", - 0x05cc: "ER_PARTITION_WRONG_NO_PART_ERROR", - 0x05cd: "ER_PARTITION_WRONG_NO_SUBPART_ERROR", - 0x05ce: "ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR", - 0x05cf: "ER_NO_CONST_EXPR_IN_RANGE_OR_LIST_ERROR", - 0x05d0: "ER_FIELD_NOT_FOUND_PART_ERROR", - 0x05d1: "ER_LIST_OF_FIELDS_ONLY_IN_HASH_ERROR", - 0x05d2: "ER_INCONSISTENT_PARTITION_INFO_ERROR", - 0x05d3: "ER_PARTITION_FUNC_NOT_ALLOWED_ERROR", - 0x05d4: "ER_PARTITIONS_MUST_BE_DEFINED_ERROR", - 0x05d5: "ER_RANGE_NOT_INCREASING_ERROR", - 0x05d6: "ER_INCONSISTENT_TYPE_OF_FUNCTIONS_ERROR", - 0x05d7: "ER_MULTIPLE_DEF_CONST_IN_LIST_PART_ERROR", - 0x05d8: "ER_PARTITION_ENTRY_ERROR", - 0x05d9: "ER_MIX_HANDLER_ERROR", - 0x05da: "ER_PARTITION_NOT_DEFINED_ERROR", - 0x05db: "ER_TOO_MANY_PARTITIONS_ERROR", - 0x05dc: "ER_SUBPARTITION_ERROR", - 0x05dd: "ER_CANT_CREATE_HANDLER_FILE", - 0x05de: "ER_BLOB_FIELD_IN_PART_FUNC_ERROR", - 0x05df: "ER_UNIQUE_KEY_NEED_ALL_FIELDS_IN_PF", - 0x05e0: "ER_NO_PARTS_ERROR", - 0x05e1: "ER_PARTITION_MGMT_ON_NONPARTITIONED", - 0x05e2: "ER_FOREIGN_KEY_ON_PARTITIONED", - 0x05e3: "ER_DROP_PARTITION_NON_EXISTENT", - 0x05e4: "ER_DROP_LAST_PARTITION", - 0x05e5: "ER_COALESCE_ONLY_ON_HASH_PARTITION", - 0x05e6: "ER_REORG_HASH_ONLY_ON_SAME_NO", - 0x05e7: "ER_REORG_NO_PARAM_ERROR", - 0x05e8: "ER_ONLY_ON_RANGE_LIST_PARTITION", - 0x05e9: "ER_ADD_PARTITION_SUBPART_ERROR", - 0x05ea: "ER_ADD_PARTITION_NO_NEW_PARTITION", - 0x05eb: "ER_COALESCE_PARTITION_NO_PARTITION", - 0x05ec: "ER_REORG_PARTITION_NOT_EXIST", - 0x05ed: "ER_SAME_NAME_PARTITION", - 0x05ee: "ER_NO_BINLOG_ERROR", - 0x05ef: "ER_CONSECUTIVE_REORG_PARTITIONS", - 0x05f0: "ER_REORG_OUTSIDE_RANGE", - 0x05f1: "ER_PARTITION_FUNCTION_FAILURE", - 0x05f2: "ER_PART_STATE_ERROR", - 0x05f3: "ER_LIMITED_PART_RANGE", - 0x05f4: "ER_PLUGIN_IS_NOT_LOADED", - 0x05f5: "ER_WRONG_VALUE", - 0x05f6: "ER_NO_PARTITION_FOR_GIVEN_VALUE", - 0x05f7: "ER_FILEGROUP_OPTION_ONLY_ONCE", - 0x05f8: "ER_CREATE_FILEGROUP_FAILED", - 0x05f9: "ER_DROP_FILEGROUP_FAILED", - 0x05fa: "ER_TABLESPACE_AUTO_EXTEND_ERROR", - 0x05fb: "ER_WRONG_SIZE_NUMBER", - 0x05fc: "ER_SIZE_OVERFLOW_ERROR", - 0x05fd: "ER_ALTER_FILEGROUP_FAILED", - 0x05fe: "ER_BINLOG_ROW_LOGGING_FAILED", - 0x05ff: "ER_BINLOG_ROW_WRONG_TABLE_DEF", + 0x059A: "ER_CANT_CREATE_FEDERATED_TABLE", + 0x059B: "ER_TRG_IN_WRONG_SCHEMA", + 0x059C: "ER_STACK_OVERRUN_NEED_MORE", + 0x059D: "ER_TOO_LONG_BODY", + 0x059E: "ER_WARN_CANT_DROP_DEFAULT_KEYCACHE", + 0x059F: "ER_TOO_BIG_DISPLAYWIDTH", + 0x05A0: "ER_XAER_DUPID", + 0x05A1: "ER_DATETIME_FUNCTION_OVERFLOW", + 0x05A2: "ER_CANT_UPDATE_USED_TABLE_IN_SF_OR_TRG", + 0x05A3: "ER_VIEW_PREVENT_UPDATE", + 0x05A4: "ER_PS_NO_RECURSION", + 0x05A5: "ER_SP_CANT_SET_AUTOCOMMIT", + 0x05A6: "ER_MALFORMED_DEFINER", + 0x05A7: "ER_VIEW_FRM_NO_USER", + 0x05A8: "ER_VIEW_OTHER_USER", + 0x05A9: "ER_NO_SUCH_USER", + 0x05AA: "ER_FORBID_SCHEMA_CHANGE", + 0x05AB: "ER_ROW_IS_REFERENCED_2", + 0x05AC: "ER_NO_REFERENCED_ROW_2", + 0x05AD: "ER_SP_BAD_VAR_SHADOW", + 0x05AE: "ER_TRG_NO_DEFINER", + 0x05AF: "ER_OLD_FILE_FORMAT", + 0x05B0: "ER_SP_RECURSION_LIMIT", + 0x05B1: "ER_SP_PROC_TABLE_CORRUPT", + 0x05B2: "ER_SP_WRONG_NAME", + 0x05B3: "ER_TABLE_NEEDS_UPGRADE", + 0x05B4: "ER_SP_NO_AGGREGATE", + 0x05B5: "ER_MAX_PREPARED_STMT_COUNT_REACHED", + 0x05B6: "ER_VIEW_RECURSIVE", + 0x05B7: "ER_NON_GROUPING_FIELD_USED", + 0x05B8: "ER_TABLE_CANT_HANDLE_SPKEYS", + 0x05B9: "ER_NO_TRIGGERS_ON_SYSTEM_SCHEMA", + 0x05BA: "ER_REMOVED_SPACES", + 0x05BB: "ER_AUTOINC_READ_FAILED", + 0x05BC: "ER_USERNAME", + 0x05BD: "ER_HOSTNAME", + 0x05BE: "ER_WRONG_STRING_LENGTH", + 0x05BF: "ER_NON_INSERTABLE_TABLE", + 0x05C0: "ER_ADMIN_WRONG_MRG_TABLE", + 0x05C1: "ER_TOO_HIGH_LEVEL_OF_NESTING_FOR_SELECT", + 0x05C2: "ER_NAME_BECOMES_EMPTY", + 0x05C3: "ER_AMBIGUOUS_FIELD_TERM", + 0x05C4: "ER_FOREIGN_SERVER_EXISTS", + 0x05C5: "ER_FOREIGN_SERVER_DOESNT_EXIST", + 0x05C6: "ER_ILLEGAL_HA_CREATE_OPTION", + 0x05C7: "ER_PARTITION_REQUIRES_VALUES_ERROR", + 0x05C8: "ER_PARTITION_WRONG_VALUES_ERROR", + 0x05C9: "ER_PARTITION_MAXVALUE_ERROR", + 0x05CA: "ER_PARTITION_SUBPARTITION_ERROR", + 0x05CB: "ER_PARTITION_SUBPART_MIX_ERROR", + 0x05CC: "ER_PARTITION_WRONG_NO_PART_ERROR", + 0x05CD: "ER_PARTITION_WRONG_NO_SUBPART_ERROR", + 0x05CE: "ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR", + 0x05CF: "ER_NO_CONST_EXPR_IN_RANGE_OR_LIST_ERROR", + 0x05D0: "ER_FIELD_NOT_FOUND_PART_ERROR", + 0x05D1: "ER_LIST_OF_FIELDS_ONLY_IN_HASH_ERROR", + 0x05D2: "ER_INCONSISTENT_PARTITION_INFO_ERROR", + 0x05D3: "ER_PARTITION_FUNC_NOT_ALLOWED_ERROR", + 0x05D4: "ER_PARTITIONS_MUST_BE_DEFINED_ERROR", + 0x05D5: "ER_RANGE_NOT_INCREASING_ERROR", + 0x05D6: "ER_INCONSISTENT_TYPE_OF_FUNCTIONS_ERROR", + 0x05D7: "ER_MULTIPLE_DEF_CONST_IN_LIST_PART_ERROR", + 0x05D8: "ER_PARTITION_ENTRY_ERROR", + 0x05D9: "ER_MIX_HANDLER_ERROR", + 0x05DA: "ER_PARTITION_NOT_DEFINED_ERROR", + 0x05DB: "ER_TOO_MANY_PARTITIONS_ERROR", + 0x05DC: "ER_SUBPARTITION_ERROR", + 0x05DD: "ER_CANT_CREATE_HANDLER_FILE", + 0x05DE: "ER_BLOB_FIELD_IN_PART_FUNC_ERROR", + 0x05DF: "ER_UNIQUE_KEY_NEED_ALL_FIELDS_IN_PF", + 0x05E0: "ER_NO_PARTS_ERROR", + 0x05E1: "ER_PARTITION_MGMT_ON_NONPARTITIONED", + 0x05E2: "ER_FOREIGN_KEY_ON_PARTITIONED", + 0x05E3: "ER_DROP_PARTITION_NON_EXISTENT", + 0x05E4: "ER_DROP_LAST_PARTITION", + 0x05E5: "ER_COALESCE_ONLY_ON_HASH_PARTITION", + 0x05E6: "ER_REORG_HASH_ONLY_ON_SAME_NO", + 0x05E7: "ER_REORG_NO_PARAM_ERROR", + 0x05E8: "ER_ONLY_ON_RANGE_LIST_PARTITION", + 0x05E9: "ER_ADD_PARTITION_SUBPART_ERROR", + 0x05EA: "ER_ADD_PARTITION_NO_NEW_PARTITION", + 0x05EB: "ER_COALESCE_PARTITION_NO_PARTITION", + 0x05EC: "ER_REORG_PARTITION_NOT_EXIST", + 0x05ED: "ER_SAME_NAME_PARTITION", + 0x05EE: "ER_NO_BINLOG_ERROR", + 0x05EF: "ER_CONSECUTIVE_REORG_PARTITIONS", + 0x05F0: "ER_REORG_OUTSIDE_RANGE", + 0x05F1: "ER_PARTITION_FUNCTION_FAILURE", + 0x05F2: "ER_PART_STATE_ERROR", + 0x05F3: "ER_LIMITED_PART_RANGE", + 0x05F4: "ER_PLUGIN_IS_NOT_LOADED", + 0x05F5: "ER_WRONG_VALUE", + 0x05F6: "ER_NO_PARTITION_FOR_GIVEN_VALUE", + 0x05F7: "ER_FILEGROUP_OPTION_ONLY_ONCE", + 0x05F8: "ER_CREATE_FILEGROUP_FAILED", + 0x05F9: "ER_DROP_FILEGROUP_FAILED", + 0x05FA: "ER_TABLESPACE_AUTO_EXTEND_ERROR", + 0x05FB: "ER_WRONG_SIZE_NUMBER", + 0x05FC: "ER_SIZE_OVERFLOW_ERROR", + 0x05FD: "ER_ALTER_FILEGROUP_FAILED", + 0x05FE: "ER_BINLOG_ROW_LOGGING_FAILED", + 0x05FF: "ER_BINLOG_ROW_WRONG_TABLE_DEF", 0x0600: "ER_BINLOG_ROW_RBR_TO_SBR", 0x0601: "ER_EVENT_ALREADY_EXISTS", 0x0602: "ER_EVENT_STORE_FAILED", @@ -550,12 +550,12 @@ 0x0607: "ER_EVENT_ENDS_BEFORE_STARTS", 0x0608: "ER_EVENT_EXEC_TIME_IN_THE_PAST", 0x0609: "ER_EVENT_OPEN_TABLE_FAILED", - 0x060a: "ER_EVENT_NEITHER_M_EXPR_NOR_M_AT", - 0x060b: "ER_OBSOLETE_COL_COUNT_DOESNT_MATCH_CORRUPTED", - 0x060c: "ER_OBSOLETE_CANNOT_LOAD_FROM_TABLE", - 0x060d: "ER_EVENT_CANNOT_DELETE", - 0x060e: "ER_EVENT_COMPILE_ERROR", - 0x060f: "ER_EVENT_SAME_NAME", + 0x060A: "ER_EVENT_NEITHER_M_EXPR_NOR_M_AT", + 0x060B: "ER_OBSOLETE_COL_COUNT_DOESNT_MATCH_CORRUPTED", + 0x060C: "ER_OBSOLETE_CANNOT_LOAD_FROM_TABLE", + 0x060D: "ER_EVENT_CANNOT_DELETE", + 0x060E: "ER_EVENT_COMPILE_ERROR", + 0x060F: "ER_EVENT_SAME_NAME", 0x0610: "ER_EVENT_DATA_TOO_LONG", 0x0611: "ER_DROP_INDEX_FK", 0x0612: "ER_WARN_DEPRECATED_SYNTAX_WITH_VER", @@ -566,12 +566,12 @@ 0x0617: "ER_TEMP_TABLE_PREVENTS_SWITCH_OUT_OF_RBR", 0x0618: "ER_STORED_FUNCTION_PREVENTS_SWITCH_BINLOG_FORMAT", 0x0619: "ER_NDB_CANT_SWITCH_BINLOG_FORMAT", - 0x061a: "ER_PARTITION_NO_TEMPORARY", - 0x061b: "ER_PARTITION_CONST_DOMAIN_ERROR", - 0x061c: "ER_PARTITION_FUNCTION_IS_NOT_ALLOWED", - 0x061d: "ER_DDL_LOG_ERROR", - 0x061e: "ER_NULL_IN_VALUES_LESS_THAN", - 0x061f: "ER_WRONG_PARTITION_NAME", + 0x061A: "ER_PARTITION_NO_TEMPORARY", + 0x061B: "ER_PARTITION_CONST_DOMAIN_ERROR", + 0x061C: "ER_PARTITION_FUNCTION_IS_NOT_ALLOWED", + 0x061D: "ER_DDL_LOG_ERROR", + 0x061E: "ER_NULL_IN_VALUES_LESS_THAN", + 0x061F: "ER_WRONG_PARTITION_NAME", 0x0620: "ER_CANT_CHANGE_TX_CHARACTERISTICS", 0x0621: "ER_DUP_ENTRY_AUTOINCREMENT_CASE", 0x0622: "ER_EVENT_MODIFY_QUEUE_ERROR", @@ -582,12 +582,12 @@ 0x0627: "ER_BASE64_DECODE_ERROR", 0x0628: "ER_EVENT_RECURSION_FORBIDDEN", 0x0629: "ER_EVENTS_DB_ERROR", - 0x062a: "ER_ONLY_INTEGERS_ALLOWED", - 0x062b: "ER_UNSUPORTED_LOG_ENGINE", - 0x062c: "ER_BAD_LOG_STATEMENT", - 0x062d: "ER_CANT_RENAME_LOG_TABLE", - 0x062e: "ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT", - 0x062f: "ER_WRONG_PARAMETERS_TO_NATIVE_FCT", + 0x062A: "ER_ONLY_INTEGERS_ALLOWED", + 0x062B: "ER_UNSUPORTED_LOG_ENGINE", + 0x062C: "ER_BAD_LOG_STATEMENT", + 0x062D: "ER_CANT_RENAME_LOG_TABLE", + 0x062E: "ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT", + 0x062F: "ER_WRONG_PARAMETERS_TO_NATIVE_FCT", 0x0630: "ER_WRONG_PARAMETERS_TO_STORED_FCT", 0x0631: "ER_NATIVE_FCT_NAME_COLLISION", 0x0632: "ER_DUP_ENTRY_WITH_KEY_NAME", @@ -598,12 +598,12 @@ 0x0637: "ER_NO_PARTITION_FOR_GIVEN_VALUE_SILENT", 0x0638: "ER_BINLOG_UNSAFE_STATEMENT", 0x0639: "ER_BINLOG_FATAL_ERROR", - 0x063a: "ER_SLAVE_RELAY_LOG_READ_FAILURE", - 0x063b: "ER_SLAVE_RELAY_LOG_WRITE_FAILURE", - 0x063c: "ER_SLAVE_CREATE_EVENT_FAILURE", - 0x063d: "ER_SLAVE_MASTER_COM_FAILURE", - 0x063e: "ER_BINLOG_LOGGING_IMPOSSIBLE", - 0x063f: "ER_VIEW_NO_CREATION_CTX", + 0x063A: "ER_SLAVE_RELAY_LOG_READ_FAILURE", + 0x063B: "ER_SLAVE_RELAY_LOG_WRITE_FAILURE", + 0x063C: "ER_SLAVE_CREATE_EVENT_FAILURE", + 0x063D: "ER_SLAVE_MASTER_COM_FAILURE", + 0x063E: "ER_BINLOG_LOGGING_IMPOSSIBLE", + 0x063F: "ER_VIEW_NO_CREATION_CTX", 0x0640: "ER_VIEW_INVALID_CREATION_CTX", 0x0641: "ER_SR_INVALID_CREATION_CTX", 0x0642: "ER_TRG_CORRUPTED_FILE", @@ -614,12 +614,12 @@ 0x0647: "ER_CANT_CREATE_SROUTINE", 0x0648: "ER_NEVER_USED", 0x0649: "ER_NO_FORMAT_DESCRIPTION_EVENT_BEFORE_BINLOG_STATEMENT", - 0x064a: "ER_SLAVE_CORRUPT_EVENT", - 0x064b: "ER_LOAD_DATA_INVALID_COLUMN_UNUSED", - 0x064c: "ER_LOG_PURGE_NO_FILE", - 0x064d: "ER_XA_RBTIMEOUT", - 0x064e: "ER_XA_RBDEADLOCK", - 0x064f: "ER_NEED_REPREPARE", + 0x064A: "ER_SLAVE_CORRUPT_EVENT", + 0x064B: "ER_LOAD_DATA_INVALID_COLUMN_UNUSED", + 0x064C: "ER_LOG_PURGE_NO_FILE", + 0x064D: "ER_XA_RBTIMEOUT", + 0x064E: "ER_XA_RBDEADLOCK", + 0x064F: "ER_NEED_REPREPARE", 0x0650: "ER_DELAYED_NOT_SUPPORTED", 0x0651: "WARN_NO_MASTER_INFO", 0x0652: "WARN_OPTION_IGNORED", @@ -630,12 +630,12 @@ 0x0657: "ER_SLAVE_HEARTBEAT_FAILURE", 0x0658: "ER_SLAVE_HEARTBEAT_VALUE_OUT_OF_RANGE", 0x0659: "ER_NDB_REPLICATION_SCHEMA_ERROR", - 0x065a: "ER_CONFLICT_FN_PARSE_ERROR", - 0x065b: "ER_EXCEPTIONS_WRITE_ERROR", - 0x065c: "ER_TOO_LONG_TABLE_COMMENT", - 0x065d: "ER_TOO_LONG_FIELD_COMMENT", - 0x065e: "ER_FUNC_INEXISTENT_NAME_COLLISION", - 0x065f: "ER_DATABASE_NAME", + 0x065A: "ER_CONFLICT_FN_PARSE_ERROR", + 0x065B: "ER_EXCEPTIONS_WRITE_ERROR", + 0x065C: "ER_TOO_LONG_TABLE_COMMENT", + 0x065D: "ER_TOO_LONG_FIELD_COMMENT", + 0x065E: "ER_FUNC_INEXISTENT_NAME_COLLISION", + 0x065F: "ER_DATABASE_NAME", 0x0660: "ER_TABLE_NAME", 0x0661: "ER_PARTITION_NAME", 0x0662: "ER_SUBPARTITION_NAME", @@ -646,12 +646,12 @@ 0x0667: "ER_DEBUG_SYNC_TIMEOUT", 0x0668: "ER_DEBUG_SYNC_HIT_LIMIT", 0x0669: "ER_DUP_SIGNAL_SET", - 0x066a: "ER_SIGNAL_WARN", - 0x066b: "ER_SIGNAL_NOT_FOUND", - 0x066c: "ER_SIGNAL_EXCEPTION", - 0x066d: "ER_RESIGNAL_WITHOUT_ACTIVE_HANDLER", - 0x066e: "ER_SIGNAL_BAD_CONDITION_TYPE", - 0x066f: "WARN_COND_ITEM_TRUNCATED", + 0x066A: "ER_SIGNAL_WARN", + 0x066B: "ER_SIGNAL_NOT_FOUND", + 0x066C: "ER_SIGNAL_EXCEPTION", + 0x066D: "ER_RESIGNAL_WITHOUT_ACTIVE_HANDLER", + 0x066E: "ER_SIGNAL_BAD_CONDITION_TYPE", + 0x066F: "WARN_COND_ITEM_TRUNCATED", 0x0670: "ER_COND_ITEM_TOO_LONG", 0x0671: "ER_UNKNOWN_LOCALE", 0x0672: "ER_SLAVE_IGNORE_SERVER_IDS", @@ -662,12 +662,12 @@ 0x0677: "ER_TOO_MANY_PARTITION_FUNC_FIELDS_ERROR", 0x0678: "ER_MAXVALUE_IN_VALUES_IN", 0x0679: "ER_TOO_MANY_VALUES_ERROR", - 0x067a: "ER_ROW_SINGLE_PARTITION_FIELD_ERROR", - 0x067b: "ER_FIELD_TYPE_NOT_ALLOWED_AS_PARTITION_FIELD", - 0x067c: "ER_PARTITION_FIELDS_TOO_LONG", - 0x067d: "ER_BINLOG_ROW_ENGINE_AND_STMT_ENGINE", - 0x067e: "ER_BINLOG_ROW_MODE_AND_STMT_ENGINE", - 0x067f: "ER_BINLOG_UNSAFE_AND_STMT_ENGINE", + 0x067A: "ER_ROW_SINGLE_PARTITION_FIELD_ERROR", + 0x067B: "ER_FIELD_TYPE_NOT_ALLOWED_AS_PARTITION_FIELD", + 0x067C: "ER_PARTITION_FIELDS_TOO_LONG", + 0x067D: "ER_BINLOG_ROW_ENGINE_AND_STMT_ENGINE", + 0x067E: "ER_BINLOG_ROW_MODE_AND_STMT_ENGINE", + 0x067F: "ER_BINLOG_UNSAFE_AND_STMT_ENGINE", 0x0680: "ER_BINLOG_ROW_INJECTION_AND_STMT_ENGINE", 0x0681: "ER_BINLOG_STMT_MODE_AND_ROW_ENGINE", 0x0682: "ER_BINLOG_ROW_INJECTION_AND_STMT_MODE", @@ -678,12 +678,12 @@ 0x0687: "ER_BINLOG_UNSAFE_AUTOINC_COLUMNS", 0x0688: "ER_BINLOG_UNSAFE_UDF", 0x0689: "ER_BINLOG_UNSAFE_SYSTEM_VARIABLE", - 0x068a: "ER_BINLOG_UNSAFE_SYSTEM_FUNCTION", - 0x068b: "ER_BINLOG_UNSAFE_NONTRANS_AFTER_TRANS", - 0x068c: "ER_MESSAGE_AND_STATEMENT", - 0x068d: "ER_SLAVE_CONVERSION_FAILED", - 0x068e: "ER_SLAVE_CANT_CREATE_CONVERSION", - 0x068f: "ER_INSIDE_TRANSACTION_PREVENTS_SWITCH_BINLOG_FORMAT", + 0x068A: "ER_BINLOG_UNSAFE_SYSTEM_FUNCTION", + 0x068B: "ER_BINLOG_UNSAFE_NONTRANS_AFTER_TRANS", + 0x068C: "ER_MESSAGE_AND_STATEMENT", + 0x068D: "ER_SLAVE_CONVERSION_FAILED", + 0x068E: "ER_SLAVE_CANT_CREATE_CONVERSION", + 0x068F: "ER_INSIDE_TRANSACTION_PREVENTS_SWITCH_BINLOG_FORMAT", 0x0690: "ER_PATH_LENGTH", 0x0691: "ER_WARN_DEPRECATED_SYNTAX_NO_REPLACEMENT", 0x0692: "ER_WRONG_NATIVE_TABLE_STRUCTURE", @@ -694,108 +694,108 @@ 0x0697: "ER_SPATIAL_MUST_HAVE_GEOM_COL", 0x0698: "ER_TOO_LONG_INDEX_COMMENT", 0x0699: "ER_LOCK_ABORTED", - 0x069a: "ER_DATA_OUT_OF_RANGE", - 0x069b: "ER_WRONG_SPVAR_TYPE_IN_LIMIT", - 0x069c: "ER_BINLOG_UNSAFE_MULTIPLE_ENGINES_AND_SELF_LOGGING_ENGINE", - 0x069d: "ER_BINLOG_UNSAFE_MIXED_STATEMENT", - 0x069e: "ER_INSIDE_TRANSACTION_PREVENTS_SWITCH_SQL_LOG_BIN", - 0x069f: "ER_STORED_FUNCTION_PREVENTS_SWITCH_SQL_LOG_BIN", - 0x06a0: "ER_FAILED_READ_FROM_PAR_FILE", - 0x06a1: "ER_VALUES_IS_NOT_INT_TYPE_ERROR", - 0x06a2: "ER_ACCESS_DENIED_NO_PASSWORD_ERROR", - 0x06a3: "ER_SET_PASSWORD_AUTH_PLUGIN", - 0x06a4: "ER_GRANT_PLUGIN_USER_EXISTS", - 0x06a5: "ER_TRUNCATE_ILLEGAL_FK", - 0x06a6: "ER_PLUGIN_IS_PERMANENT", - 0x06a7: "ER_SLAVE_HEARTBEAT_VALUE_OUT_OF_RANGE_MIN", - 0x06a8: "ER_SLAVE_HEARTBEAT_VALUE_OUT_OF_RANGE_MAX", - 0x06a9: "ER_STMT_CACHE_FULL", - 0x06aa: "ER_MULTI_UPDATE_KEY_CONFLICT", - 0x06ab: "ER_TABLE_NEEDS_REBUILD", - 0x06ac: "WARN_OPTION_BELOW_LIMIT", - 0x06ad: "ER_INDEX_COLUMN_TOO_LONG", - 0x06ae: "ER_ERROR_IN_TRIGGER_BODY", - 0x06af: "ER_ERROR_IN_UNKNOWN_TRIGGER_BODY", - 0x06b0: "ER_INDEX_CORRUPT", - 0x06b1: "ER_UNDO_RECORD_TOO_BIG", - 0x06b2: "ER_BINLOG_UNSAFE_INSERT_IGNORE_SELECT", - 0x06b3: "ER_BINLOG_UNSAFE_INSERT_SELECT_UPDATE", - 0x06b4: "ER_BINLOG_UNSAFE_REPLACE_SELECT", - 0x06b5: "ER_BINLOG_UNSAFE_CREATE_IGNORE_SELECT", - 0x06b6: "ER_BINLOG_UNSAFE_CREATE_REPLACE_SELECT", - 0x06b7: "ER_BINLOG_UNSAFE_UPDATE_IGNORE", - 0x06b8: "ER_PLUGIN_NO_UNINSTALL", - 0x06b9: "ER_PLUGIN_NO_INSTALL", - 0x06ba: "ER_BINLOG_UNSAFE_WRITE_AUTOINC_SELECT", - 0x06bb: "ER_BINLOG_UNSAFE_CREATE_SELECT_AUTOINC", - 0x06bc: "ER_BINLOG_UNSAFE_INSERT_TWO_KEYS", - 0x06bd: "ER_TABLE_IN_FK_CHECK", - 0x06be: "ER_UNSUPPORTED_ENGINE", - 0x06bf: "ER_BINLOG_UNSAFE_AUTOINC_NOT_FIRST", - 0x06c0: "ER_CANNOT_LOAD_FROM_TABLE_V2", - 0x06c1: "ER_MASTER_DELAY_VALUE_OUT_OF_RANGE", - 0x06c2: "ER_ONLY_FD_AND_RBR_EVENTS_ALLOWED_IN_BINLOG_STATEMENT", - 0x06c3: "ER_PARTITION_EXCHANGE_DIFFERENT_OPTION", - 0x06c4: "ER_PARTITION_EXCHANGE_PART_TABLE", - 0x06c5: "ER_PARTITION_EXCHANGE_TEMP_TABLE", - 0x06c6: "ER_PARTITION_INSTEAD_OF_SUBPARTITION", - 0x06c7: "ER_UNKNOWN_PARTITION", - 0x06c8: "ER_TABLES_DIFFERENT_METADATA", - 0x06c9: "ER_ROW_DOES_NOT_MATCH_PARTITION", - 0x06ca: "ER_BINLOG_CACHE_SIZE_GREATER_THAN_MAX", - 0x06cb: "ER_WARN_INDEX_NOT_APPLICABLE", - 0x06cc: "ER_PARTITION_EXCHANGE_FOREIGN_KEY", - 0x06cd: "ER_NO_SUCH_KEY_VALUE", - 0x06ce: "ER_RPL_INFO_DATA_TOO_LONG", - 0x06cf: "ER_NETWORK_READ_EVENT_CHECKSUM_FAILURE", - 0x06d0: "ER_BINLOG_READ_EVENT_CHECKSUM_FAILURE", - 0x06d1: "ER_BINLOG_STMT_CACHE_SIZE_GREATER_THAN_MAX", - 0x06d2: "ER_CANT_UPDATE_TABLE_IN_CREATE_TABLE_SELECT", - 0x06d3: "ER_PARTITION_CLAUSE_ON_NONPARTITIONED", - 0x06d4: "ER_ROW_DOES_NOT_MATCH_GIVEN_PARTITION_SET", - 0x06d5: "ER_NO_SUCH_PARTITION__UNUSED", - 0x06d6: "ER_CHANGE_RPL_INFO_REPOSITORY_FAILURE", - 0x06d7: "ER_WARNING_NOT_COMPLETE_ROLLBACK_WITH_CREATED_TEMP_TABLE", - 0x06d8: "ER_WARNING_NOT_COMPLETE_ROLLBACK_WITH_DROPPED_TEMP_TABLE", - 0x06d9: "ER_MTS_FEATURE_IS_NOT_SUPPORTED", - 0x06da: "ER_MTS_UPDATED_DBS_GREATER_MAX", - 0x06db: "ER_MTS_CANT_PARALLEL", - 0x06dc: "ER_MTS_INCONSISTENT_DATA", - 0x06dd: "ER_FULLTEXT_NOT_SUPPORTED_WITH_PARTITIONING", - 0x06de: "ER_DA_INVALID_CONDITION_NUMBER", - 0x06df: "ER_INSECURE_PLAIN_TEXT", - 0x06e0: "ER_INSECURE_CHANGE_MASTER", - 0x06e1: "ER_FOREIGN_DUPLICATE_KEY_WITH_CHILD_INFO", - 0x06e2: "ER_FOREIGN_DUPLICATE_KEY_WITHOUT_CHILD_INFO", - 0x06e3: "ER_SQLTHREAD_WITH_SECURE_SLAVE", - 0x06e4: "ER_TABLE_HAS_NO_FT", - 0x06e5: "ER_VARIABLE_NOT_SETTABLE_IN_SF_OR_TRIGGER", - 0x06e6: "ER_VARIABLE_NOT_SETTABLE_IN_TRANSACTION", - 0x06e7: "ER_GTID_NEXT_IS_NOT_IN_GTID_NEXT_LIST", - 0x06e8: "ER_CANT_CHANGE_GTID_NEXT_IN_TRANSACTION", - 0x06e9: "ER_SET_STATEMENT_CANNOT_INVOKE_FUNCTION", - 0x06ea: "ER_GTID_NEXT_CANT_BE_AUTOMATIC_IF_GTID_NEXT_LIST_IS_NON_NULL", - 0x06eb: "ER_SKIPPING_LOGGED_TRANSACTION", - 0x06ec: "ER_MALFORMED_GTID_SET_SPECIFICATION", - 0x06ed: "ER_MALFORMED_GTID_SET_ENCODING", - 0x06ee: "ER_MALFORMED_GTID_SPECIFICATION", - 0x06ef: "ER_GNO_EXHAUSTED", - 0x06f0: "ER_BAD_SLAVE_AUTO_POSITION", - 0x06f1: "ER_AUTO_POSITION_REQUIRES_GTID_MODE_NOT_OFF", - 0x06f2: "ER_CANT_DO_IMPLICIT_COMMIT_IN_TRX_WHEN_GTID_NEXT_IS_SET", - 0x06f3: "ER_GTID_MODE_ON_REQUIRES_ENFORCE_GTID_CONSISTENCY_ON", - 0x06f4: "ER_GTID_MODE_REQUIRES_BINLOG", - 0x06f5: "ER_CANT_SET_GTID_NEXT_TO_GTID_WHEN_GTID_MODE_IS_OFF", - 0x06f6: "ER_CANT_SET_GTID_NEXT_TO_ANONYMOUS_WHEN_GTID_MODE_IS_ON", - 0x06f7: "ER_CANT_SET_GTID_NEXT_LIST_TO_NON_NULL_WHEN_GTID_MODE_IS_OFF", - 0x06f8: "ER_FOUND_GTID_EVENT_WHEN_GTID_MODE_IS_OFF__UNUSED", - 0x06f9: "ER_GTID_UNSAFE_NON_TRANSACTIONAL_TABLE", - 0x06fa: "ER_GTID_UNSAFE_CREATE_SELECT", - 0x06fb: "ER_GTID_UNSAFE_CREATE_DROP_TEMPORARY_TABLE_IN_TRANSACTION", - 0x06fc: "ER_GTID_MODE_CAN_ONLY_CHANGE_ONE_STEP_AT_A_TIME", - 0x06fd: "ER_MASTER_HAS_PURGED_REQUIRED_GTIDS", - 0x06fe: "ER_CANT_SET_GTID_NEXT_WHEN_OWNING_GTID", - 0x06ff: "ER_UNKNOWN_EXPLAIN_FORMAT", + 0x069A: "ER_DATA_OUT_OF_RANGE", + 0x069B: "ER_WRONG_SPVAR_TYPE_IN_LIMIT", + 0x069C: "ER_BINLOG_UNSAFE_MULTIPLE_ENGINES_AND_SELF_LOGGING_ENGINE", + 0x069D: "ER_BINLOG_UNSAFE_MIXED_STATEMENT", + 0x069E: "ER_INSIDE_TRANSACTION_PREVENTS_SWITCH_SQL_LOG_BIN", + 0x069F: "ER_STORED_FUNCTION_PREVENTS_SWITCH_SQL_LOG_BIN", + 0x06A0: "ER_FAILED_READ_FROM_PAR_FILE", + 0x06A1: "ER_VALUES_IS_NOT_INT_TYPE_ERROR", + 0x06A2: "ER_ACCESS_DENIED_NO_PASSWORD_ERROR", + 0x06A3: "ER_SET_PASSWORD_AUTH_PLUGIN", + 0x06A4: "ER_GRANT_PLUGIN_USER_EXISTS", + 0x06A5: "ER_TRUNCATE_ILLEGAL_FK", + 0x06A6: "ER_PLUGIN_IS_PERMANENT", + 0x06A7: "ER_SLAVE_HEARTBEAT_VALUE_OUT_OF_RANGE_MIN", + 0x06A8: "ER_SLAVE_HEARTBEAT_VALUE_OUT_OF_RANGE_MAX", + 0x06A9: "ER_STMT_CACHE_FULL", + 0x06AA: "ER_MULTI_UPDATE_KEY_CONFLICT", + 0x06AB: "ER_TABLE_NEEDS_REBUILD", + 0x06AC: "WARN_OPTION_BELOW_LIMIT", + 0x06AD: "ER_INDEX_COLUMN_TOO_LONG", + 0x06AE: "ER_ERROR_IN_TRIGGER_BODY", + 0x06AF: "ER_ERROR_IN_UNKNOWN_TRIGGER_BODY", + 0x06B0: "ER_INDEX_CORRUPT", + 0x06B1: "ER_UNDO_RECORD_TOO_BIG", + 0x06B2: "ER_BINLOG_UNSAFE_INSERT_IGNORE_SELECT", + 0x06B3: "ER_BINLOG_UNSAFE_INSERT_SELECT_UPDATE", + 0x06B4: "ER_BINLOG_UNSAFE_REPLACE_SELECT", + 0x06B5: "ER_BINLOG_UNSAFE_CREATE_IGNORE_SELECT", + 0x06B6: "ER_BINLOG_UNSAFE_CREATE_REPLACE_SELECT", + 0x06B7: "ER_BINLOG_UNSAFE_UPDATE_IGNORE", + 0x06B8: "ER_PLUGIN_NO_UNINSTALL", + 0x06B9: "ER_PLUGIN_NO_INSTALL", + 0x06BA: "ER_BINLOG_UNSAFE_WRITE_AUTOINC_SELECT", + 0x06BB: "ER_BINLOG_UNSAFE_CREATE_SELECT_AUTOINC", + 0x06BC: "ER_BINLOG_UNSAFE_INSERT_TWO_KEYS", + 0x06BD: "ER_TABLE_IN_FK_CHECK", + 0x06BE: "ER_UNSUPPORTED_ENGINE", + 0x06BF: "ER_BINLOG_UNSAFE_AUTOINC_NOT_FIRST", + 0x06C0: "ER_CANNOT_LOAD_FROM_TABLE_V2", + 0x06C1: "ER_MASTER_DELAY_VALUE_OUT_OF_RANGE", + 0x06C2: "ER_ONLY_FD_AND_RBR_EVENTS_ALLOWED_IN_BINLOG_STATEMENT", + 0x06C3: "ER_PARTITION_EXCHANGE_DIFFERENT_OPTION", + 0x06C4: "ER_PARTITION_EXCHANGE_PART_TABLE", + 0x06C5: "ER_PARTITION_EXCHANGE_TEMP_TABLE", + 0x06C6: "ER_PARTITION_INSTEAD_OF_SUBPARTITION", + 0x06C7: "ER_UNKNOWN_PARTITION", + 0x06C8: "ER_TABLES_DIFFERENT_METADATA", + 0x06C9: "ER_ROW_DOES_NOT_MATCH_PARTITION", + 0x06CA: "ER_BINLOG_CACHE_SIZE_GREATER_THAN_MAX", + 0x06CB: "ER_WARN_INDEX_NOT_APPLICABLE", + 0x06CC: "ER_PARTITION_EXCHANGE_FOREIGN_KEY", + 0x06CD: "ER_NO_SUCH_KEY_VALUE", + 0x06CE: "ER_RPL_INFO_DATA_TOO_LONG", + 0x06CF: "ER_NETWORK_READ_EVENT_CHECKSUM_FAILURE", + 0x06D0: "ER_BINLOG_READ_EVENT_CHECKSUM_FAILURE", + 0x06D1: "ER_BINLOG_STMT_CACHE_SIZE_GREATER_THAN_MAX", + 0x06D2: "ER_CANT_UPDATE_TABLE_IN_CREATE_TABLE_SELECT", + 0x06D3: "ER_PARTITION_CLAUSE_ON_NONPARTITIONED", + 0x06D4: "ER_ROW_DOES_NOT_MATCH_GIVEN_PARTITION_SET", + 0x06D5: "ER_NO_SUCH_PARTITION__UNUSED", + 0x06D6: "ER_CHANGE_RPL_INFO_REPOSITORY_FAILURE", + 0x06D7: "ER_WARNING_NOT_COMPLETE_ROLLBACK_WITH_CREATED_TEMP_TABLE", + 0x06D8: "ER_WARNING_NOT_COMPLETE_ROLLBACK_WITH_DROPPED_TEMP_TABLE", + 0x06D9: "ER_MTS_FEATURE_IS_NOT_SUPPORTED", + 0x06DA: "ER_MTS_UPDATED_DBS_GREATER_MAX", + 0x06DB: "ER_MTS_CANT_PARALLEL", + 0x06DC: "ER_MTS_INCONSISTENT_DATA", + 0x06DD: "ER_FULLTEXT_NOT_SUPPORTED_WITH_PARTITIONING", + 0x06DE: "ER_DA_INVALID_CONDITION_NUMBER", + 0x06DF: "ER_INSECURE_PLAIN_TEXT", + 0x06E0: "ER_INSECURE_CHANGE_MASTER", + 0x06E1: "ER_FOREIGN_DUPLICATE_KEY_WITH_CHILD_INFO", + 0x06E2: "ER_FOREIGN_DUPLICATE_KEY_WITHOUT_CHILD_INFO", + 0x06E3: "ER_SQLTHREAD_WITH_SECURE_SLAVE", + 0x06E4: "ER_TABLE_HAS_NO_FT", + 0x06E5: "ER_VARIABLE_NOT_SETTABLE_IN_SF_OR_TRIGGER", + 0x06E6: "ER_VARIABLE_NOT_SETTABLE_IN_TRANSACTION", + 0x06E7: "ER_GTID_NEXT_IS_NOT_IN_GTID_NEXT_LIST", + 0x06E8: "ER_CANT_CHANGE_GTID_NEXT_IN_TRANSACTION", + 0x06E9: "ER_SET_STATEMENT_CANNOT_INVOKE_FUNCTION", + 0x06EA: "ER_GTID_NEXT_CANT_BE_AUTOMATIC_IF_GTID_NEXT_LIST_IS_NON_NULL", + 0x06EB: "ER_SKIPPING_LOGGED_TRANSACTION", + 0x06EC: "ER_MALFORMED_GTID_SET_SPECIFICATION", + 0x06ED: "ER_MALFORMED_GTID_SET_ENCODING", + 0x06EE: "ER_MALFORMED_GTID_SPECIFICATION", + 0x06EF: "ER_GNO_EXHAUSTED", + 0x06F0: "ER_BAD_SLAVE_AUTO_POSITION", + 0x06F1: "ER_AUTO_POSITION_REQUIRES_GTID_MODE_NOT_OFF", + 0x06F2: "ER_CANT_DO_IMPLICIT_COMMIT_IN_TRX_WHEN_GTID_NEXT_IS_SET", + 0x06F3: "ER_GTID_MODE_ON_REQUIRES_ENFORCE_GTID_CONSISTENCY_ON", + 0x06F4: "ER_GTID_MODE_REQUIRES_BINLOG", + 0x06F5: "ER_CANT_SET_GTID_NEXT_TO_GTID_WHEN_GTID_MODE_IS_OFF", + 0x06F6: "ER_CANT_SET_GTID_NEXT_TO_ANONYMOUS_WHEN_GTID_MODE_IS_ON", + 0x06F7: "ER_CANT_SET_GTID_NEXT_LIST_TO_NON_NULL_WHEN_GTID_MODE_IS_OFF", + 0x06F8: "ER_FOUND_GTID_EVENT_WHEN_GTID_MODE_IS_OFF__UNUSED", + 0x06F9: "ER_GTID_UNSAFE_NON_TRANSACTIONAL_TABLE", + 0x06FA: "ER_GTID_UNSAFE_CREATE_SELECT", + 0x06FB: "ER_GTID_UNSAFE_CREATE_DROP_TEMPORARY_TABLE_IN_TRANSACTION", + 0x06FC: "ER_GTID_MODE_CAN_ONLY_CHANGE_ONE_STEP_AT_A_TIME", + 0x06FD: "ER_MASTER_HAS_PURGED_REQUIRED_GTIDS", + 0x06FE: "ER_CANT_SET_GTID_NEXT_WHEN_OWNING_GTID", + 0x06FF: "ER_UNKNOWN_EXPLAIN_FORMAT", 0x0700: "ER_CANT_EXECUTE_IN_READ_ONLY_TRANSACTION", 0x0701: "ER_TOO_LONG_TABLE_PARTITION_COMMENT", 0x0702: "ER_SLAVE_CONFIGURATION", @@ -806,12 +806,12 @@ 0x0707: "ER_INNODB_ONLINE_LOG_TOO_BIG", 0x0708: "ER_UNKNOWN_ALTER_ALGORITHM", 0x0709: "ER_UNKNOWN_ALTER_LOCK", - 0x070a: "ER_MTS_CHANGE_MASTER_CANT_RUN_WITH_GAPS", - 0x070b: "ER_MTS_RECOVERY_FAILURE", - 0x070c: "ER_MTS_RESET_WORKERS", - 0x070d: "ER_COL_COUNT_DOESNT_MATCH_CORRUPTED_V2", - 0x070e: "ER_SLAVE_SILENT_RETRY_TRANSACTION", - 0x070f: "ER_DISCARD_FK_CHECKS_RUNNING", + 0x070A: "ER_MTS_CHANGE_MASTER_CANT_RUN_WITH_GAPS", + 0x070B: "ER_MTS_RECOVERY_FAILURE", + 0x070C: "ER_MTS_RESET_WORKERS", + 0x070D: "ER_COL_COUNT_DOESNT_MATCH_CORRUPTED_V2", + 0x070E: "ER_SLAVE_SILENT_RETRY_TRANSACTION", + 0x070F: "ER_DISCARD_FK_CHECKS_RUNNING", 0x0710: "ER_TABLE_SCHEMA_MISMATCH", 0x0711: "ER_TABLE_IN_SYSTEM_TABLESPACE", 0x0712: "ER_IO_READ_ERROR", @@ -822,12 +822,12 @@ 0x0717: "ER_INTERNAL_ERROR", 0x0718: "ER_INNODB_IMPORT_ERROR", 0x0719: "ER_INNODB_INDEX_CORRUPT", - 0x071a: "ER_INVALID_YEAR_COLUMN_LENGTH", - 0x071b: "ER_NOT_VALID_PASSWORD", - 0x071c: "ER_MUST_CHANGE_PASSWORD", - 0x071d: "ER_FK_NO_INDEX_CHILD", - 0x071e: "ER_FK_NO_INDEX_PARENT", - 0x071f: "ER_FK_FAIL_ADD_SYSTEM", + 0x071A: "ER_INVALID_YEAR_COLUMN_LENGTH", + 0x071B: "ER_NOT_VALID_PASSWORD", + 0x071C: "ER_MUST_CHANGE_PASSWORD", + 0x071D: "ER_FK_NO_INDEX_CHILD", + 0x071E: "ER_FK_NO_INDEX_PARENT", + 0x071F: "ER_FK_FAIL_ADD_SYSTEM", 0x0720: "ER_FK_CANNOT_OPEN_PARENT", 0x0721: "ER_FK_INCORRECT_OPTION", 0x0722: "ER_FK_DUP_NAME", @@ -838,12 +838,12 @@ 0x0727: "ER_DUP_INDEX", 0x0728: "ER_FK_COLUMN_CANNOT_CHANGE", 0x0729: "ER_FK_COLUMN_CANNOT_CHANGE_CHILD", - 0x072a: "ER_UNUSED5", - 0x072b: "ER_MALFORMED_PACKET", - 0x072c: "ER_READ_ONLY_MODE", - 0x072d: "ER_GTID_NEXT_TYPE_UNDEFINED_GTID", - 0x072e: "ER_VARIABLE_NOT_SETTABLE_IN_SP", - 0x072f: "ER_CANT_SET_GTID_PURGED_WHEN_GTID_MODE_IS_OFF", + 0x072A: "ER_UNUSED5", + 0x072B: "ER_MALFORMED_PACKET", + 0x072C: "ER_READ_ONLY_MODE", + 0x072D: "ER_GTID_NEXT_TYPE_UNDEFINED_GTID", + 0x072E: "ER_VARIABLE_NOT_SETTABLE_IN_SP", + 0x072F: "ER_CANT_SET_GTID_PURGED_WHEN_GTID_MODE_IS_OFF", 0x0730: "ER_CANT_SET_GTID_PURGED_WHEN_GTID_EXECUTED_IS_NOT_EMPTY", 0x0731: "ER_CANT_SET_GTID_PURGED_WHEN_OWNED_GTIDS_IS_NOT_EMPTY", 0x0732: "ER_GTID_PURGED_WAS_CHANGED", @@ -854,12 +854,12 @@ 0x0737: "ER_ALTER_OPERATION_NOT_SUPPORTED_REASON_COPY", 0x0738: "ER_ALTER_OPERATION_NOT_SUPPORTED_REASON_PARTITION", 0x0739: "ER_ALTER_OPERATION_NOT_SUPPORTED_REASON_FK_RENAME", - 0x073a: "ER_ALTER_OPERATION_NOT_SUPPORTED_REASON_COLUMN_TYPE", - 0x073b: "ER_ALTER_OPERATION_NOT_SUPPORTED_REASON_FK_CHECK", - 0x073c: "ER_UNUSED6", - 0x073d: "ER_ALTER_OPERATION_NOT_SUPPORTED_REASON_NOPK", - 0x073e: "ER_ALTER_OPERATION_NOT_SUPPORTED_REASON_AUTOINC", - 0x073f: "ER_ALTER_OPERATION_NOT_SUPPORTED_REASON_HIDDEN_FTS", + 0x073A: "ER_ALTER_OPERATION_NOT_SUPPORTED_REASON_COLUMN_TYPE", + 0x073B: "ER_ALTER_OPERATION_NOT_SUPPORTED_REASON_FK_CHECK", + 0x073C: "ER_UNUSED6", + 0x073D: "ER_ALTER_OPERATION_NOT_SUPPORTED_REASON_NOPK", + 0x073E: "ER_ALTER_OPERATION_NOT_SUPPORTED_REASON_AUTOINC", + 0x073F: "ER_ALTER_OPERATION_NOT_SUPPORTED_REASON_HIDDEN_FTS", 0x0740: "ER_ALTER_OPERATION_NOT_SUPPORTED_REASON_CHANGE_FTS", 0x0741: "ER_ALTER_OPERATION_NOT_SUPPORTED_REASON_FTS", 0x0742: "ER_SQL_SLAVE_SKIP_COUNTER_NOT_SETTABLE_IN_GTID_MODE", @@ -870,12 +870,12 @@ 0x0747: "ER_ROW_IN_WRONG_PARTITION", 0x0748: "ER_MTS_EVENT_BIGGER_PENDING_JOBS_SIZE_MAX", 0x0749: "ER_INNODB_NO_FT_USES_PARSER", - 0x074a: "ER_BINLOG_LOGICAL_CORRUPTION", - 0x074b: "ER_WARN_PURGE_LOG_IN_USE", - 0x074c: "ER_WARN_PURGE_LOG_IS_ACTIVE", - 0x074d: "ER_AUTO_INCREMENT_CONFLICT", - 0x074e: "WARN_ON_BLOCKHOLE_IN_RBR", - 0x074f: "ER_SLAVE_MI_INIT_REPOSITORY", + 0x074A: "ER_BINLOG_LOGICAL_CORRUPTION", + 0x074B: "ER_WARN_PURGE_LOG_IN_USE", + 0x074C: "ER_WARN_PURGE_LOG_IS_ACTIVE", + 0x074D: "ER_AUTO_INCREMENT_CONFLICT", + 0x074E: "WARN_ON_BLOCKHOLE_IN_RBR", + 0x074F: "ER_SLAVE_MI_INIT_REPOSITORY", 0x0750: "ER_SLAVE_RLI_INIT_REPOSITORY", 0x0751: "ER_ACCESS_DENIED_CHANGE_USER_ERROR", 0x0752: "ER_INNODB_READ_ONLY", @@ -886,477 +886,477 @@ 0x0757: "ER_INNODB_FT_AUX_NOT_HEX_ID", 0x0758: "ER_OLD_TEMPORALS_UPGRADED", 0x0759: "ER_INNODB_FORCED_RECOVERY", - 0x075a: "ER_AES_INVALID_IV", - 0x075b: "ER_PLUGIN_CANNOT_BE_UNINSTALLED", - 0x075c: "ER_GTID_UNSAFE_BINLOG_SPLITTABLE_STATEMENT_AND_ASSIGNED_GTID", - 0x075d: "ER_SLAVE_HAS_MORE_GTIDS_THAN_MASTER", - 0x075e: "ER_MISSING_KEY", + 0x075A: "ER_AES_INVALID_IV", + 0x075B: "ER_PLUGIN_CANNOT_BE_UNINSTALLED", + 0x075C: "ER_GTID_UNSAFE_BINLOG_SPLITTABLE_STATEMENT_AND_ASSIGNED_GTID", + 0x075D: "ER_SLAVE_HAS_MORE_GTIDS_THAN_MASTER", + 0x075E: "ER_MISSING_KEY", 0x0772: "ER_SLAVE_IO_THREAD_MUST_STOP", - 0x0bb8: "ER_FILE_CORRUPT", - 0x0bb9: "ER_ERROR_ON_MASTER", - 0x0bba: "ER_INCONSISTENT_ERROR", - 0x0bbb: "ER_STORAGE_ENGINE_NOT_LOADED", - 0x0bbc: "ER_GET_STACKED_DA_WITHOUT_ACTIVE_HANDLER", - 0x0bbd: "ER_WARN_LEGACY_SYNTAX_CONVERTED", - 0x0bbe: "ER_BINLOG_UNSAFE_FULLTEXT_PLUGIN", - 0x0bbf: "ER_CANNOT_DISCARD_TEMPORARY_TABLE", - 0x0bc0: "ER_FK_DEPTH_EXCEEDED", - 0x0bc1: "ER_COL_COUNT_DOESNT_MATCH_PLEASE_UPDATE_V2", - 0x0bc2: "ER_WARN_TRIGGER_DOESNT_HAVE_CREATED", - 0x0bc3: "ER_REFERENCED_TRG_DOES_NOT_EXIST", - 0x0bc4: "ER_EXPLAIN_NOT_SUPPORTED", - 0x0bc5: "ER_INVALID_FIELD_SIZE", - 0x0bc6: "ER_MISSING_HA_CREATE_OPTION", - 0x0bc7: "ER_ENGINE_OUT_OF_MEMORY", - 0x0bc8: "ER_PASSWORD_EXPIRE_ANONYMOUS_USER", - 0x0bc9: "ER_SLAVE_SQL_THREAD_MUST_STOP", - 0x0bca: "ER_NO_FT_MATERIALIZED_SUBQUERY", - 0x0bcb: "ER_INNODB_UNDO_LOG_FULL", - 0x0bcc: "ER_INVALID_ARGUMENT_FOR_LOGARITHM", - 0x0bcd: "ER_SLAVE_CHANNEL_IO_THREAD_MUST_STOP", - 0x0bce: "ER_WARN_OPEN_TEMP_TABLES_MUST_BE_ZERO", - 0x0bcf: "ER_WARN_ONLY_MASTER_LOG_FILE_NO_POS", - 0x0bd0: "ER_QUERY_TIMEOUT", - 0x0bd1: "ER_NON_RO_SELECT_DISABLE_TIMER", - 0x0bd2: "ER_DUP_LIST_ENTRY", - 0x0bd3: "ER_SQL_MODE_NO_EFFECT", - 0x0bd4: "ER_AGGREGATE_ORDER_FOR_UNION", - 0x0bd5: "ER_AGGREGATE_ORDER_NON_AGG_QUERY", - 0x0bd6: "ER_SLAVE_WORKER_STOPPED_PREVIOUS_THD_ERROR", - 0x0bd7: "ER_DONT_SUPPORT_SLAVE_PRESERVE_COMMIT_ORDER", - 0x0bd8: "ER_SERVER_OFFLINE_MODE", - 0x0bd9: "ER_GIS_DIFFERENT_SRIDS", - 0x0bda: "ER_GIS_UNSUPPORTED_ARGUMENT", - 0x0bdb: "ER_GIS_UNKNOWN_ERROR", - 0x0bdc: "ER_GIS_UNKNOWN_EXCEPTION", - 0x0bdd: "ER_GIS_INVALID_DATA", - 0x0bde: "ER_BOOST_GEOMETRY_EMPTY_INPUT_EXCEPTION", - 0x0bdf: "ER_BOOST_GEOMETRY_CENTROID_EXCEPTION", - 0x0be0: "ER_BOOST_GEOMETRY_OVERLAY_INVALID_INPUT_EXCEPTION", - 0x0be1: "ER_BOOST_GEOMETRY_TURN_INFO_EXCEPTION", - 0x0be2: "ER_BOOST_GEOMETRY_SELF_INTERSECTION_POINT_EXCEPTION", - 0x0be3: "ER_BOOST_GEOMETRY_UNKNOWN_EXCEPTION", - 0x0be4: "ER_STD_BAD_ALLOC_ERROR", - 0x0be5: "ER_STD_DOMAIN_ERROR", - 0x0be6: "ER_STD_LENGTH_ERROR", - 0x0be7: "ER_STD_INVALID_ARGUMENT", - 0x0be8: "ER_STD_OUT_OF_RANGE_ERROR", - 0x0be9: "ER_STD_OVERFLOW_ERROR", - 0x0bea: "ER_STD_RANGE_ERROR", - 0x0beb: "ER_STD_UNDERFLOW_ERROR", - 0x0bec: "ER_STD_LOGIC_ERROR", - 0x0bed: "ER_STD_RUNTIME_ERROR", - 0x0bee: "ER_STD_UNKNOWN_EXCEPTION", - 0x0bef: "ER_GIS_DATA_WRONG_ENDIANESS", - 0x0bf0: "ER_CHANGE_MASTER_PASSWORD_LENGTH", - 0x0bf1: "ER_USER_LOCK_WRONG_NAME", - 0x0bf2: "ER_USER_LOCK_DEADLOCK", - 0x0bf3: "ER_REPLACE_INACCESSIBLE_ROWS", - 0x0bf4: "ER_ALTER_OPERATION_NOT_SUPPORTED_REASON_GIS", - 0x0bf5: "ER_ILLEGAL_USER_VAR", - 0x0bf6: "ER_GTID_MODE_OFF", - 0x0bf7: "ER_UNSUPPORTED_BY_REPLICATION_THREAD", - 0x0bf8: "ER_INCORRECT_TYPE", - 0x0bf9: "ER_FIELD_IN_ORDER_NOT_SELECT", - 0x0bfa: "ER_AGGREGATE_IN_ORDER_NOT_SELECT", - 0x0bfb: "ER_INVALID_RPL_WILD_TABLE_FILTER_PATTERN", - 0x0bfc: "ER_NET_OK_PACKET_TOO_LARGE", - 0x0bfd: "ER_INVALID_JSON_DATA", - 0x0bfe: "ER_INVALID_GEOJSON_MISSING_MEMBER", - 0x0bff: "ER_INVALID_GEOJSON_WRONG_TYPE", - 0x0c00: "ER_INVALID_GEOJSON_UNSPECIFIED", - 0x0c01: "ER_DIMENSION_UNSUPPORTED", - 0x0c02: "ER_SLAVE_CHANNEL_DOES_NOT_EXIST", - 0x0c03: "ER_SLAVE_MULTIPLE_CHANNELS_HOST_PORT", - 0x0c04: "ER_SLAVE_CHANNEL_NAME_INVALID_OR_TOO_LONG", - 0x0c05: "ER_SLAVE_NEW_CHANNEL_WRONG_REPOSITORY", - 0x0c06: "ER_SLAVE_CHANNEL_DELETE", - 0x0c07: "ER_SLAVE_MULTIPLE_CHANNELS_CMD", - 0x0c08: "ER_SLAVE_MAX_CHANNELS_EXCEEDED", - 0x0c09: "ER_SLAVE_CHANNEL_MUST_STOP", - 0x0c0a: "ER_SLAVE_CHANNEL_NOT_RUNNING", - 0x0c0b: "ER_SLAVE_CHANNEL_WAS_RUNNING", - 0x0c0c: "ER_SLAVE_CHANNEL_WAS_NOT_RUNNING", - 0x0c0d: "ER_SLAVE_CHANNEL_SQL_THREAD_MUST_STOP", - 0x0c0e: "ER_SLAVE_CHANNEL_SQL_SKIP_COUNTER", - 0x0c0f: "ER_WRONG_FIELD_WITH_GROUP_V2", - 0x0c10: "ER_MIX_OF_GROUP_FUNC_AND_FIELDS_V2", - 0x0c11: "ER_WARN_DEPRECATED_SYSVAR_UPDATE", - 0x0c12: "ER_WARN_DEPRECATED_SQLMODE", - 0x0c13: "ER_CANNOT_LOG_PARTIAL_DROP_DATABASE_WITH_GTID", - 0x0c14: "ER_GROUP_REPLICATION_CONFIGURATION", - 0x0c15: "ER_GROUP_REPLICATION_RUNNING", - 0x0c16: "ER_GROUP_REPLICATION_APPLIER_INIT_ERROR", - 0x0c17: "ER_GROUP_REPLICATION_STOP_APPLIER_THREAD_TIMEOUT", - 0x0c18: "ER_GROUP_REPLICATION_COMMUNICATION_LAYER_SESSION_ERROR", - 0x0c19: "ER_GROUP_REPLICATION_COMMUNICATION_LAYER_JOIN_ERROR", - 0x0c1a: "ER_BEFORE_DML_VALIDATION_ERROR", - 0x0c1b: "ER_PREVENTS_VARIABLE_WITHOUT_RBR", - 0x0c1c: "ER_RUN_HOOK_ERROR", - 0x0c1d: "ER_TRANSACTION_ROLLBACK_DURING_COMMIT", - 0x0c1e: "ER_GENERATED_COLUMN_FUNCTION_IS_NOT_ALLOWED", - 0x0c1f: "ER_UNSUPPORTED_ALTER_INPLACE_ON_VIRTUAL_COLUMN", - 0x0c20: "ER_WRONG_FK_OPTION_FOR_GENERATED_COLUMN", - 0x0c21: "ER_NON_DEFAULT_VALUE_FOR_GENERATED_COLUMN", - 0x0c22: "ER_UNSUPPORTED_ACTION_ON_GENERATED_COLUMN", - 0x0c23: "ER_GENERATED_COLUMN_NON_PRIOR", - 0x0c24: "ER_DEPENDENT_BY_GENERATED_COLUMN", - 0x0c25: "ER_GENERATED_COLUMN_REF_AUTO_INC", - 0x0c26: "ER_FEATURE_NOT_AVAILABLE", - 0x0c27: "ER_CANT_SET_GTID_MODE", - 0x0c28: "ER_CANT_USE_AUTO_POSITION_WITH_GTID_MODE_OFF", - 0x0c29: "ER_CANT_REPLICATE_ANONYMOUS_WITH_AUTO_POSITION", - 0x0c2a: "ER_CANT_REPLICATE_ANONYMOUS_WITH_GTID_MODE_ON", - 0x0c2b: "ER_CANT_REPLICATE_GTID_WITH_GTID_MODE_OFF", - 0x0c2c: "ER_CANT_ENFORCE_GTID_CONSISTENCY_WITH_ONGOING_GTID_VIOLATING_TX", - 0x0c2d: "ER_ENFORCE_GTID_CONSISTENCY_WARN_WITH_ONGOING_GTID_VIOLATING_TX", - 0x0c2e: "ER_ACCOUNT_HAS_BEEN_LOCKED", - 0x0c2f: "ER_WRONG_TABLESPACE_NAME", - 0x0c30: "ER_TABLESPACE_IS_NOT_EMPTY", - 0x0c31: "ER_WRONG_FILE_NAME", - 0x0c32: "ER_BOOST_GEOMETRY_INCONSISTENT_TURNS_EXCEPTION", - 0x0c33: "ER_WARN_OPTIMIZER_HINT_SYNTAX_ERROR", - 0x0c34: "ER_WARN_BAD_MAX_EXECUTION_TIME", - 0x0c35: "ER_WARN_UNSUPPORTED_MAX_EXECUTION_TIME", - 0x0c36: "ER_WARN_CONFLICTING_HINT", - 0x0c37: "ER_WARN_UNKNOWN_QB_NAME", - 0x0c38: "ER_UNRESOLVED_HINT_NAME", - 0x0c39: "ER_WARN_ON_MODIFYING_GTID_EXECUTED_TABLE", - 0x0c3a: "ER_PLUGGABLE_PROTOCOL_COMMAND_NOT_SUPPORTED", - 0x0c3b: "ER_LOCKING_SERVICE_WRONG_NAME", - 0x0c3c: "ER_LOCKING_SERVICE_DEADLOCK", - 0x0c3d: "ER_LOCKING_SERVICE_TIMEOUT", - 0x0c3e: "ER_GIS_MAX_POINTS_IN_GEOMETRY_OVERFLOWED", - 0x0c3f: "ER_SQL_MODE_MERGED", - 0x0c40: "ER_VTOKEN_PLUGIN_TOKEN_MISMATCH", - 0x0c41: "ER_VTOKEN_PLUGIN_TOKEN_NOT_FOUND", - 0x0c42: "ER_CANT_SET_VARIABLE_WHEN_OWNING_GTID", - 0x0c43: "ER_SLAVE_CHANNEL_OPERATION_NOT_ALLOWED", - 0x0c44: "ER_INVALID_JSON_TEXT", - 0x0c45: "ER_INVALID_JSON_TEXT_IN_PARAM", - 0x0c46: "ER_INVALID_JSON_BINARY_DATA", - 0x0c47: "ER_INVALID_JSON_PATH", - 0x0c48: "ER_INVALID_JSON_CHARSET", - 0x0c49: "ER_INVALID_JSON_CHARSET_IN_FUNCTION", - 0x0c4a: "ER_INVALID_TYPE_FOR_JSON", - 0x0c4b: "ER_INVALID_CAST_TO_JSON", - 0x0c4c: "ER_INVALID_JSON_PATH_CHARSET", - 0x0c4d: "ER_INVALID_JSON_PATH_WILDCARD", - 0x0c4e: "ER_JSON_VALUE_TOO_BIG", - 0x0c4f: "ER_JSON_KEY_TOO_BIG", - 0x0c50: "ER_JSON_USED_AS_KEY", - 0x0c51: "ER_JSON_VACUOUS_PATH", - 0x0c52: "ER_JSON_BAD_ONE_OR_ALL_ARG", - 0x0c53: "ER_NUMERIC_JSON_VALUE_OUT_OF_RANGE", - 0x0c54: "ER_INVALID_JSON_VALUE_FOR_CAST", - 0x0c55: "ER_JSON_DOCUMENT_TOO_DEEP", - 0x0c56: "ER_JSON_DOCUMENT_NULL_KEY", - 0x0c57: "ER_SECURE_TRANSPORT_REQUIRED", - 0x0c58: "ER_NO_SECURE_TRANSPORTS_CONFIGURED", - 0x0c59: "ER_DISABLED_STORAGE_ENGINE", - 0x0c5a: "ER_USER_DOES_NOT_EXIST", - 0x0c5b: "ER_USER_ALREADY_EXISTS", - 0x0c5c: "ER_AUDIT_API_ABORT", - 0x0c5d: "ER_INVALID_JSON_PATH_ARRAY_CELL", - 0x0c5e: "ER_BUFPOOL_RESIZE_INPROGRESS", - 0x0c5f: "ER_FEATURE_DISABLED_SEE_DOC", - 0x0c60: "ER_SERVER_ISNT_AVAILABLE", - 0x0c61: "ER_SESSION_WAS_KILLED", - 0x0c62: "ER_CAPACITY_EXCEEDED", - 0x0c63: "ER_CAPACITY_EXCEEDED_IN_RANGE_OPTIMIZER", - 0x0c64: "ER_TABLE_NEEDS_UPG_PART", - 0x0c65: "ER_CANT_WAIT_FOR_EXECUTED_GTID_SET_WHILE_OWNING_A_GTID", - 0x0c66: "ER_CANNOT_ADD_FOREIGN_BASE_COL_VIRTUAL", - 0x0c67: "ER_CANNOT_CREATE_VIRTUAL_INDEX_CONSTRAINT", - 0x0c68: "ER_ERROR_ON_MODIFYING_GTID_EXECUTED_TABLE", - 0x0c69: "ER_LOCK_REFUSED_BY_ENGINE", - 0x0c6a: "ER_UNSUPPORTED_ALTER_ONLINE_ON_VIRTUAL_COLUMN", - 0x0c6b: "ER_MASTER_KEY_ROTATION_NOT_SUPPORTED_BY_SE", - 0x0c6c: "ER_MASTER_KEY_ROTATION_ERROR_BY_SE", - 0x0c6d: "ER_MASTER_KEY_ROTATION_BINLOG_FAILED", - 0x0c6e: "ER_MASTER_KEY_ROTATION_SE_UNAVAILABLE", - 0x0c6f: "ER_TABLESPACE_CANNOT_ENCRYPT", - 0x0c70: "ER_INVALID_ENCRYPTION_OPTION", - 0x0c71: "ER_CANNOT_FIND_KEY_IN_KEYRING", - 0x0c72: "ER_CAPACITY_EXCEEDED_IN_PARSER", - 0x0c73: "ER_UNSUPPORTED_ALTER_ENCRYPTION_INPLACE", - 0x0c74: "ER_KEYRING_UDF_KEYRING_SERVICE_ERROR", - 0x0c75: "ER_USER_COLUMN_OLD_LENGTH", - 0x0c76: "ER_CANT_RESET_MASTER", - 0x0c77: "ER_GROUP_REPLICATION_MAX_GROUP_SIZE", - 0x0c78: "ER_CANNOT_ADD_FOREIGN_BASE_COL_STORED", - 0x0c79: "ER_TABLE_REFERENCED", - 0x0c7a: "ER_PARTITION_ENGINE_DEPRECATED_FOR_TABLE", - 0x0c7b: "ER_WARN_USING_GEOMFROMWKB_TO_SET_SRID_ZERO", - 0x0c7c: "ER_WARN_USING_GEOMFROMWKB_TO_SET_SRID", - 0x0c7d: "ER_XA_RETRY", - 0x0c7e: "ER_KEYRING_AWS_UDF_AWS_KMS_ERROR", - 0x0c7f: "ER_BINLOG_UNSAFE_XA", - 0x0c80: "ER_UDF_ERROR", - 0x0c81: "ER_KEYRING_MIGRATION_FAILURE", - 0x0c82: "ER_KEYRING_ACCESS_DENIED_ERROR", - 0x0c83: "ER_KEYRING_MIGRATION_STATUS", - 0x0c84: "ER_PLUGIN_FAILED_TO_OPEN_TABLES", - 0x0c85: "ER_PLUGIN_FAILED_TO_OPEN_TABLE", - 0x0c86: "ER_AUDIT_LOG_NO_KEYRING_PLUGIN_INSTALLED", - 0x0c87: "ER_AUDIT_LOG_ENCRYPTION_PASSWORD_HAS_NOT_BEEN_SET", - 0x0c88: "ER_AUDIT_LOG_COULD_NOT_CREATE_AES_KEY", - 0x0c89: "ER_AUDIT_LOG_ENCRYPTION_PASSWORD_CANNOT_BE_FETCHED", - 0x0c8a: "ER_AUDIT_LOG_JSON_FILTERING_NOT_ENABLED", - 0x0c8b: "ER_AUDIT_LOG_UDF_INSUFFICIENT_PRIVILEGE", - 0x0c8c: "ER_AUDIT_LOG_SUPER_PRIVILEGE_REQUIRED", - 0x0c8d: "ER_COULD_NOT_REINITIALIZE_AUDIT_LOG_FILTERS", - 0x0c8e: "ER_AUDIT_LOG_UDF_INVALID_ARGUMENT_TYPE", - 0x0c8f: "ER_AUDIT_LOG_UDF_INVALID_ARGUMENT_COUNT", - 0x0c90: "ER_AUDIT_LOG_HAS_NOT_BEEN_INSTALLED", - 0x0c91: "ER_AUDIT_LOG_UDF_READ_INVALID_MAX_ARRAY_LENGTH_ARG_TYPE", - 0x0c92: "ER_AUDIT_LOG_UDF_READ_INVALID_MAX_ARRAY_LENGTH_ARG_VALUE", - 0x0c93: "ER_AUDIT_LOG_JSON_FILTER_PARSING_ERROR", - 0x0c94: "ER_AUDIT_LOG_JSON_FILTER_NAME_CANNOT_BE_EMPTY", - 0x0c95: "ER_AUDIT_LOG_JSON_USER_NAME_CANNOT_BE_EMPTY", - 0x0c96: "ER_AUDIT_LOG_JSON_FILTER_DOES_NOT_EXISTS", - 0x0c97: "ER_AUDIT_LOG_USER_FIRST_CHARACTER_MUST_BE_ALPHANUMERIC", - 0x0c98: "ER_AUDIT_LOG_USER_NAME_INVALID_CHARACTER", - 0x0c99: "ER_AUDIT_LOG_HOST_NAME_INVALID_CHARACTER", - 0x0c9a: "WARN_DEPRECATED_MAXDB_SQL_MODE_FOR_TIMESTAMP", - 0x0c9b: "ER_XA_REPLICATION_FILTERS", - 0x0dac: "ER_UNSUPPORT_COMPRESSED_TEMPORARY_TABLE", - 0x0dad: "ER_ACL_OPERATION_FAILED", - 0x0dae: "ER_UNSUPPORTED_INDEX_ALGORITHM", - 0x0daf: "ER_NO_SUCH_DB", - 0x0db0: "ER_TOO_BIG_ENUM", - 0x0db1: "ER_TOO_LONG_SET_ENUM_VALUE", - 0x0db2: "ER_INVALID_DD_OBJECT", - 0x0db3: "ER_UPDATING_DD_TABLE", - 0x0db4: "ER_INVALID_DD_OBJECT_ID", - 0x0db5: "ER_INVALID_DD_OBJECT_NAME", - 0x0db6: "ER_TABLESPACE_MISSING_WITH_NAME", - 0x0db7: "ER_TOO_LONG_ROUTINE_COMMENT", - 0x0db8: "ER_SP_LOAD_FAILED", - 0x0db9: "ER_INVALID_BITWISE_OPERANDS_SIZE", - 0x0dba: "ER_INVALID_BITWISE_AGGREGATE_OPERANDS_SIZE", - 0x0dbb: "ER_WARN_UNSUPPORTED_HINT", - 0x0dbc: "ER_UNEXPECTED_GEOMETRY_TYPE", - 0x0dbd: "ER_SRS_PARSE_ERROR", - 0x0dbe: "ER_SRS_PROJ_PARAMETER_MISSING", - 0x0dbf: "ER_WARN_SRS_NOT_FOUND", - 0x0dc0: "ER_SRS_NOT_CARTESIAN", - 0x0dc1: "ER_SRS_NOT_CARTESIAN_UNDEFINED", - 0x0dc2: "ER_PK_INDEX_CANT_BE_INVISIBLE", - 0x0dc3: "ER_UNKNOWN_AUTHID", - 0x0dc4: "ER_FAILED_ROLE_GRANT", - 0x0dc5: "ER_OPEN_ROLE_TABLES", - 0x0dc6: "ER_FAILED_DEFAULT_ROLES", - 0x0dc7: "ER_COMPONENTS_NO_SCHEME", - 0x0dc8: "ER_COMPONENTS_NO_SCHEME_SERVICE", - 0x0dc9: "ER_COMPONENTS_CANT_LOAD", - 0x0dca: "ER_ROLE_NOT_GRANTED", - 0x0dcb: "ER_FAILED_REVOKE_ROLE", - 0x0dcc: "ER_RENAME_ROLE", - 0x0dcd: "ER_COMPONENTS_CANT_ACQUIRE_SERVICE_IMPLEMENTATION", - 0x0dce: "ER_COMPONENTS_CANT_SATISFY_DEPENDENCY", - 0x0dcf: "ER_COMPONENTS_LOAD_CANT_REGISTER_SERVICE_IMPLEMENTATION", - 0x0dd0: "ER_COMPONENTS_LOAD_CANT_INITIALIZE", - 0x0dd1: "ER_COMPONENTS_UNLOAD_NOT_LOADED", - 0x0dd2: "ER_COMPONENTS_UNLOAD_CANT_DEINITIALIZE", - 0x0dd3: "ER_COMPONENTS_CANT_RELEASE_SERVICE", - 0x0dd4: "ER_COMPONENTS_UNLOAD_CANT_UNREGISTER_SERVICE", - 0x0dd5: "ER_COMPONENTS_CANT_UNLOAD", - 0x0dd6: "ER_WARN_UNLOAD_THE_NOT_PERSISTED", - 0x0dd7: "ER_COMPONENT_TABLE_INCORRECT", - 0x0dd8: "ER_COMPONENT_MANIPULATE_ROW_FAILED", - 0x0dd9: "ER_COMPONENTS_UNLOAD_DUPLICATE_IN_GROUP", - 0x0dda: "ER_CANT_SET_GTID_PURGED_DUE_SETS_CONSTRAINTS", - 0x0ddb: "ER_CANNOT_LOCK_USER_MANAGEMENT_CACHES", - 0x0ddc: "ER_SRS_NOT_FOUND", - 0x0ddd: "ER_VARIABLE_NOT_PERSISTED", - 0x0dde: "ER_IS_QUERY_INVALID_CLAUSE", - 0x0ddf: "ER_UNABLE_TO_STORE_STATISTICS", - 0x0de0: "ER_NO_SYSTEM_SCHEMA_ACCESS", - 0x0de1: "ER_NO_SYSTEM_TABLESPACE_ACCESS", - 0x0de2: "ER_NO_SYSTEM_TABLE_ACCESS", - 0x0de3: "ER_NO_SYSTEM_TABLE_ACCESS_FOR_DICTIONARY_TABLE", - 0x0de4: "ER_NO_SYSTEM_TABLE_ACCESS_FOR_SYSTEM_TABLE", - 0x0de5: "ER_NO_SYSTEM_TABLE_ACCESS_FOR_TABLE", - 0x0de6: "ER_INVALID_OPTION_KEY", - 0x0de7: "ER_INVALID_OPTION_VALUE", - 0x0de8: "ER_INVALID_OPTION_KEY_VALUE_PAIR", - 0x0de9: "ER_INVALID_OPTION_START_CHARACTER", - 0x0dea: "ER_INVALID_OPTION_END_CHARACTER", - 0x0deb: "ER_INVALID_OPTION_CHARACTERS", - 0x0dec: "ER_DUPLICATE_OPTION_KEY", - 0x0ded: "ER_WARN_SRS_NOT_FOUND_AXIS_ORDER", - 0x0dee: "ER_NO_ACCESS_TO_NATIVE_FCT", - 0x0def: "ER_RESET_MASTER_TO_VALUE_OUT_OF_RANGE", - 0x0df0: "ER_UNRESOLVED_TABLE_LOCK", - 0x0df1: "ER_DUPLICATE_TABLE_LOCK", - 0x0df2: "ER_BINLOG_UNSAFE_SKIP_LOCKED", - 0x0df3: "ER_BINLOG_UNSAFE_NOWAIT", - 0x0df4: "ER_LOCK_NOWAIT", - 0x0df5: "ER_CTE_RECURSIVE_REQUIRES_UNION", - 0x0df6: "ER_CTE_RECURSIVE_REQUIRES_NONRECURSIVE_FIRST", - 0x0df7: "ER_CTE_RECURSIVE_FORBIDS_AGGREGATION", - 0x0df8: "ER_CTE_RECURSIVE_FORBIDDEN_JOIN_ORDER", - 0x0df9: "ER_CTE_RECURSIVE_REQUIRES_SINGLE_REFERENCE", - 0x0dfa: "ER_SWITCH_TMP_ENGINE", - 0x0dfb: "ER_WINDOW_NO_SUCH_WINDOW", - 0x0dfc: "ER_WINDOW_CIRCULARITY_IN_WINDOW_GRAPH", - 0x0dfd: "ER_WINDOW_NO_CHILD_PARTITIONING", - 0x0dfe: "ER_WINDOW_NO_INHERIT_FRAME", - 0x0dff: "ER_WINDOW_NO_REDEFINE_ORDER_BY", - 0x0e00: "ER_WINDOW_FRAME_START_ILLEGAL", - 0x0e01: "ER_WINDOW_FRAME_END_ILLEGAL", - 0x0e02: "ER_WINDOW_FRAME_ILLEGAL", - 0x0e03: "ER_WINDOW_RANGE_FRAME_ORDER_TYPE", - 0x0e04: "ER_WINDOW_RANGE_FRAME_TEMPORAL_TYPE", - 0x0e05: "ER_WINDOW_RANGE_FRAME_NUMERIC_TYPE", - 0x0e06: "ER_WINDOW_RANGE_BOUND_NOT_CONSTANT", - 0x0e07: "ER_WINDOW_DUPLICATE_NAME", - 0x0e08: "ER_WINDOW_ILLEGAL_ORDER_BY", - 0x0e09: "ER_WINDOW_INVALID_WINDOW_FUNC_USE", - 0x0e0a: "ER_WINDOW_INVALID_WINDOW_FUNC_ALIAS_USE", - 0x0e0b: "ER_WINDOW_NESTED_WINDOW_FUNC_USE_IN_WINDOW_SPEC", - 0x0e0c: "ER_WINDOW_ROWS_INTERVAL_USE", - 0x0e0d: "ER_WINDOW_NO_GROUP_ORDER", - 0x0e0e: "ER_WINDOW_EXPLAIN_JSON", - 0x0e0f: "ER_WINDOW_FUNCTION_IGNORES_FRAME", - 0x0e10: "ER_WL9236_NOW_UNUSED", - 0x0e11: "ER_INVALID_NO_OF_ARGS", - 0x0e12: "ER_FIELD_IN_GROUPING_NOT_GROUP_BY", - 0x0e13: "ER_TOO_LONG_TABLESPACE_COMMENT", - 0x0e14: "ER_ENGINE_CANT_DROP_TABLE", - 0x0e15: "ER_ENGINE_CANT_DROP_MISSING_TABLE", - 0x0e16: "ER_TABLESPACE_DUP_FILENAME", - 0x0e17: "ER_DB_DROP_RMDIR2", - 0x0e18: "ER_IMP_NO_FILES_MATCHED", - 0x0e19: "ER_IMP_SCHEMA_DOES_NOT_EXIST", - 0x0e1a: "ER_IMP_TABLE_ALREADY_EXISTS", - 0x0e1b: "ER_IMP_INCOMPATIBLE_MYSQLD_VERSION", - 0x0e1c: "ER_IMP_INCOMPATIBLE_DD_VERSION", - 0x0e1d: "ER_IMP_INCOMPATIBLE_SDI_VERSION", - 0x0e1e: "ER_WARN_INVALID_HINT", - 0x0e1f: "ER_VAR_DOES_NOT_EXIST", - 0x0e20: "ER_LONGITUDE_OUT_OF_RANGE", - 0x0e21: "ER_LATITUDE_OUT_OF_RANGE", - 0x0e22: "ER_NOT_IMPLEMENTED_FOR_GEOGRAPHIC_SRS", - 0x0e23: "ER_ILLEGAL_PRIVILEGE_LEVEL", - 0x0e24: "ER_NO_SYSTEM_VIEW_ACCESS", - 0x0e25: "ER_COMPONENT_FILTER_FLABBERGASTED", - 0x0e26: "ER_PART_EXPR_TOO_LONG", - 0x0e27: "ER_UDF_DROP_DYNAMICALLY_REGISTERED", - 0x0e28: "ER_UNABLE_TO_STORE_COLUMN_STATISTICS", - 0x0e29: "ER_UNABLE_TO_UPDATE_COLUMN_STATISTICS", - 0x0e2a: "ER_UNABLE_TO_DROP_COLUMN_STATISTICS", - 0x0e2b: "ER_UNABLE_TO_BUILD_HISTOGRAM", - 0x0e2c: "ER_MANDATORY_ROLE", - 0x0e2d: "ER_MISSING_TABLESPACE_FILE", - 0x0e2e: "ER_PERSIST_ONLY_ACCESS_DENIED_ERROR", - 0x0e2f: "ER_CMD_NEED_SUPER", - 0x0e30: "ER_PATH_IN_DATADIR", - 0x0e31: "ER_DDL_IN_PROGRESS", - 0x0e32: "ER_TOO_MANY_CONCURRENT_CLONES", - 0x0e33: "ER_APPLIER_LOG_EVENT_VALIDATION_ERROR", - 0x0e34: "ER_CTE_MAX_RECURSION_DEPTH", - 0x0e35: "ER_NOT_HINT_UPDATABLE_VARIABLE", - 0x0e36: "ER_CREDENTIALS_CONTRADICT_TO_HISTORY", - 0x0e37: "ER_WARNING_PASSWORD_HISTORY_CLAUSES_VOID", - 0x0e38: "ER_CLIENT_DOES_NOT_SUPPORT", - 0x0e39: "ER_I_S_SKIPPED_TABLESPACE", - 0x0e3a: "ER_TABLESPACE_ENGINE_MISMATCH", - 0x0e3b: "ER_WRONG_SRID_FOR_COLUMN", - 0x0e3c: "ER_CANNOT_ALTER_SRID_DUE_TO_INDEX", - 0x0e3d: "ER_WARN_BINLOG_PARTIAL_UPDATES_DISABLED", - 0x0e3e: "ER_WARN_BINLOG_V1_ROW_EVENTS_DISABLED", - 0x0e3f: "ER_WARN_BINLOG_PARTIAL_UPDATES_SUGGESTS_PARTIAL_IMAGES", - 0x0e40: "ER_COULD_NOT_APPLY_JSON_DIFF", - 0x0e41: "ER_CORRUPTED_JSON_DIFF", - 0x0e42: "ER_RESOURCE_GROUP_EXISTS", - 0x0e43: "ER_RESOURCE_GROUP_NOT_EXISTS", - 0x0e44: "ER_INVALID_VCPU_ID", - 0x0e45: "ER_INVALID_VCPU_RANGE", - 0x0e46: "ER_INVALID_THREAD_PRIORITY", - 0x0e47: "ER_DISALLOWED_OPERATION", - 0x0e48: "ER_RESOURCE_GROUP_BUSY", - 0x0e49: "ER_RESOURCE_GROUP_DISABLED", - 0x0e4a: "ER_FEATURE_UNSUPPORTED", - 0x0e4b: "ER_ATTRIBUTE_IGNORED", - 0x0e4c: "ER_INVALID_THREAD_ID", - 0x0e4d: "ER_RESOURCE_GROUP_BIND_FAILED", - 0x0e4e: "ER_INVALID_USE_OF_FORCE_OPTION", - 0x0e4f: "ER_GROUP_REPLICATION_COMMAND_FAILURE", - 0x0e50: "ER_SDI_OPERATION_FAILED", - 0x0e51: "ER_MISSING_JSON_TABLE_VALUE", - 0x0e52: "ER_WRONG_JSON_TABLE_VALUE", - 0x0e53: "ER_TF_MUST_HAVE_ALIAS", - 0x0e54: "ER_TF_FORBIDDEN_JOIN_TYPE", - 0x0e55: "ER_JT_VALUE_OUT_OF_RANGE", - 0x0e56: "ER_JT_MAX_NESTED_PATH", - 0x0e57: "ER_PASSWORD_EXPIRATION_NOT_SUPPORTED_BY_AUTH_METHOD", - 0x0e58: "ER_INVALID_GEOJSON_CRS_NOT_TOP_LEVEL", - 0x0e59: "ER_BAD_NULL_ERROR_NOT_IGNORED", - 0x0e5a: "WARN_USELESS_SPATIAL_INDEX", - 0x0e5b: "ER_DISK_FULL_NOWAIT", - 0x0e5c: "ER_PARSE_ERROR_IN_DIGEST_FN", - 0x0e5d: "ER_UNDISCLOSED_PARSE_ERROR_IN_DIGEST_FN", - 0x0e5e: "ER_SCHEMA_DIR_EXISTS", - 0x0e5f: "ER_SCHEMA_DIR_MISSING", - 0x0e60: "ER_SCHEMA_DIR_CREATE_FAILED", - 0x0e61: "ER_SCHEMA_DIR_UNKNOWN", - 0x0e62: "ER_ONLY_IMPLEMENTED_FOR_SRID_0_AND_4326", - 0x0e63: "ER_BINLOG_EXPIRE_LOG_DAYS_AND_SECS_USED_TOGETHER", - 0x0e64: "ER_REGEXP_BUFFER_OVERFLOW", - 0x0e65: "ER_REGEXP_ILLEGAL_ARGUMENT", - 0x0e66: "ER_REGEXP_INDEX_OUTOFBOUNDS_ERROR", - 0x0e67: "ER_REGEXP_INTERNAL_ERROR", - 0x0e68: "ER_REGEXP_RULE_SYNTAX", - 0x0e69: "ER_REGEXP_BAD_ESCAPE_SEQUENCE", - 0x0e6a: "ER_REGEXP_UNIMPLEMENTED", - 0x0e6b: "ER_REGEXP_MISMATCHED_PAREN", - 0x0e6c: "ER_REGEXP_BAD_INTERVAL", - 0x0e6d: "ER_REGEXP_MAX_LT_MIN", - 0x0e6e: "ER_REGEXP_INVALID_BACK_REF", - 0x0e6f: "ER_REGEXP_LOOK_BEHIND_LIMIT", - 0x0e70: "ER_REGEXP_MISSING_CLOSE_BRACKET", - 0x0e71: "ER_REGEXP_INVALID_RANGE", - 0x0e72: "ER_REGEXP_STACK_OVERFLOW", - 0x0e73: "ER_REGEXP_TIME_OUT", - 0x0e74: "ER_REGEXP_PATTERN_TOO_BIG", - 0x0e75: "ER_CANT_SET_ERROR_LOG_SERVICE", - 0x0e76: "ER_EMPTY_PIPELINE_FOR_ERROR_LOG_SERVICE", - 0x0e77: "ER_COMPONENT_FILTER_DIAGNOSTICS", - 0x0e78: "ER_NOT_IMPLEMENTED_FOR_CARTESIAN_SRS", - 0x0e79: "ER_NOT_IMPLEMENTED_FOR_PROJECTED_SRS", - 0x0e7a: "ER_NONPOSITIVE_RADIUS", - 0x0e7b: "ER_RESTART_SERVER_FAILED", - 0x0e7c: "ER_SRS_MISSING_MANDATORY_ATTRIBUTE", - 0x0e7d: "ER_SRS_MULTIPLE_ATTRIBUTE_DEFINITIONS", - 0x0e7e: "ER_SRS_NAME_CANT_BE_EMPTY_OR_WHITESPACE", - 0x0e7f: "ER_SRS_ORGANIZATION_CANT_BE_EMPTY_OR_WHITESPACE", - 0x0e80: "ER_SRS_ID_ALREADY_EXISTS", - 0x0e81: "ER_WARN_SRS_ID_ALREADY_EXISTS", - 0x0e82: "ER_CANT_MODIFY_SRID_0", - 0x0e83: "ER_WARN_RESERVED_SRID_RANGE", - 0x0e84: "ER_CANT_MODIFY_SRS_USED_BY_COLUMN", - 0x0e85: "ER_SRS_INVALID_CHARACTER_IN_ATTRIBUTE", - 0x0e86: "ER_SRS_ATTRIBUTE_STRING_TOO_LONG", - 0x0e87: "ER_DEPRECATED_UTF8_ALIAS", - 0x0e88: "ER_DEPRECATED_NATIONAL", - 0x0e89: "ER_INVALID_DEFAULT_UTF8MB4_COLLATION", - 0x0e8a: "ER_UNABLE_TO_COLLECT_LOG_STATUS", - 0x0e8b: "ER_RESERVED_TABLESPACE_NAME", - 0x0e8c: "ER_UNABLE_TO_SET_OPTION", - 0x0e8d: "ER_SLAVE_POSSIBLY_DIVERGED_AFTER_DDL", - 0x0e8e: "ER_SRS_NOT_GEOGRAPHIC", - 0x0e8f: "ER_POLYGON_TOO_LARGE", - 0x0e90: "ER_SPATIAL_UNIQUE_INDEX", - 0x0e91: "ER_INDEX_TYPE_NOT_SUPPORTED_FOR_SPATIAL_INDEX", - 0x0e92: "ER_FK_CANNOT_DROP_PARENT", - 0x0e93: "ER_GEOMETRY_PARAM_LONGITUDE_OUT_OF_RANGE", - 0x0e94: "ER_GEOMETRY_PARAM_LATITUDE_OUT_OF_RANGE", - 0x0e95: "ER_FK_CANNOT_USE_VIRTUAL_COLUMN", - 0x0e96: "ER_FK_NO_COLUMN_PARENT", - 0x0f61: "ER_AUTHCACHE_ROLE_TABLES_DODGY", - 0x11e0: "ER_DISK_FULL", + 0x0BB8: "ER_FILE_CORRUPT", + 0x0BB9: "ER_ERROR_ON_MASTER", + 0x0BBA: "ER_INCONSISTENT_ERROR", + 0x0BBB: "ER_STORAGE_ENGINE_NOT_LOADED", + 0x0BBC: "ER_GET_STACKED_DA_WITHOUT_ACTIVE_HANDLER", + 0x0BBD: "ER_WARN_LEGACY_SYNTAX_CONVERTED", + 0x0BBE: "ER_BINLOG_UNSAFE_FULLTEXT_PLUGIN", + 0x0BBF: "ER_CANNOT_DISCARD_TEMPORARY_TABLE", + 0x0BC0: "ER_FK_DEPTH_EXCEEDED", + 0x0BC1: "ER_COL_COUNT_DOESNT_MATCH_PLEASE_UPDATE_V2", + 0x0BC2: "ER_WARN_TRIGGER_DOESNT_HAVE_CREATED", + 0x0BC3: "ER_REFERENCED_TRG_DOES_NOT_EXIST", + 0x0BC4: "ER_EXPLAIN_NOT_SUPPORTED", + 0x0BC5: "ER_INVALID_FIELD_SIZE", + 0x0BC6: "ER_MISSING_HA_CREATE_OPTION", + 0x0BC7: "ER_ENGINE_OUT_OF_MEMORY", + 0x0BC8: "ER_PASSWORD_EXPIRE_ANONYMOUS_USER", + 0x0BC9: "ER_SLAVE_SQL_THREAD_MUST_STOP", + 0x0BCA: "ER_NO_FT_MATERIALIZED_SUBQUERY", + 0x0BCB: "ER_INNODB_UNDO_LOG_FULL", + 0x0BCC: "ER_INVALID_ARGUMENT_FOR_LOGARITHM", + 0x0BCD: "ER_SLAVE_CHANNEL_IO_THREAD_MUST_STOP", + 0x0BCE: "ER_WARN_OPEN_TEMP_TABLES_MUST_BE_ZERO", + 0x0BCF: "ER_WARN_ONLY_MASTER_LOG_FILE_NO_POS", + 0x0BD0: "ER_QUERY_TIMEOUT", + 0x0BD1: "ER_NON_RO_SELECT_DISABLE_TIMER", + 0x0BD2: "ER_DUP_LIST_ENTRY", + 0x0BD3: "ER_SQL_MODE_NO_EFFECT", + 0x0BD4: "ER_AGGREGATE_ORDER_FOR_UNION", + 0x0BD5: "ER_AGGREGATE_ORDER_NON_AGG_QUERY", + 0x0BD6: "ER_SLAVE_WORKER_STOPPED_PREVIOUS_THD_ERROR", + 0x0BD7: "ER_DONT_SUPPORT_SLAVE_PRESERVE_COMMIT_ORDER", + 0x0BD8: "ER_SERVER_OFFLINE_MODE", + 0x0BD9: "ER_GIS_DIFFERENT_SRIDS", + 0x0BDA: "ER_GIS_UNSUPPORTED_ARGUMENT", + 0x0BDB: "ER_GIS_UNKNOWN_ERROR", + 0x0BDC: "ER_GIS_UNKNOWN_EXCEPTION", + 0x0BDD: "ER_GIS_INVALID_DATA", + 0x0BDE: "ER_BOOST_GEOMETRY_EMPTY_INPUT_EXCEPTION", + 0x0BDF: "ER_BOOST_GEOMETRY_CENTROID_EXCEPTION", + 0x0BE0: "ER_BOOST_GEOMETRY_OVERLAY_INVALID_INPUT_EXCEPTION", + 0x0BE1: "ER_BOOST_GEOMETRY_TURN_INFO_EXCEPTION", + 0x0BE2: "ER_BOOST_GEOMETRY_SELF_INTERSECTION_POINT_EXCEPTION", + 0x0BE3: "ER_BOOST_GEOMETRY_UNKNOWN_EXCEPTION", + 0x0BE4: "ER_STD_BAD_ALLOC_ERROR", + 0x0BE5: "ER_STD_DOMAIN_ERROR", + 0x0BE6: "ER_STD_LENGTH_ERROR", + 0x0BE7: "ER_STD_INVALID_ARGUMENT", + 0x0BE8: "ER_STD_OUT_OF_RANGE_ERROR", + 0x0BE9: "ER_STD_OVERFLOW_ERROR", + 0x0BEA: "ER_STD_RANGE_ERROR", + 0x0BEB: "ER_STD_UNDERFLOW_ERROR", + 0x0BEC: "ER_STD_LOGIC_ERROR", + 0x0BED: "ER_STD_RUNTIME_ERROR", + 0x0BEE: "ER_STD_UNKNOWN_EXCEPTION", + 0x0BEF: "ER_GIS_DATA_WRONG_ENDIANESS", + 0x0BF0: "ER_CHANGE_MASTER_PASSWORD_LENGTH", + 0x0BF1: "ER_USER_LOCK_WRONG_NAME", + 0x0BF2: "ER_USER_LOCK_DEADLOCK", + 0x0BF3: "ER_REPLACE_INACCESSIBLE_ROWS", + 0x0BF4: "ER_ALTER_OPERATION_NOT_SUPPORTED_REASON_GIS", + 0x0BF5: "ER_ILLEGAL_USER_VAR", + 0x0BF6: "ER_GTID_MODE_OFF", + 0x0BF7: "ER_UNSUPPORTED_BY_REPLICATION_THREAD", + 0x0BF8: "ER_INCORRECT_TYPE", + 0x0BF9: "ER_FIELD_IN_ORDER_NOT_SELECT", + 0x0BFA: "ER_AGGREGATE_IN_ORDER_NOT_SELECT", + 0x0BFB: "ER_INVALID_RPL_WILD_TABLE_FILTER_PATTERN", + 0x0BFC: "ER_NET_OK_PACKET_TOO_LARGE", + 0x0BFD: "ER_INVALID_JSON_DATA", + 0x0BFE: "ER_INVALID_GEOJSON_MISSING_MEMBER", + 0x0BFF: "ER_INVALID_GEOJSON_WRONG_TYPE", + 0x0C00: "ER_INVALID_GEOJSON_UNSPECIFIED", + 0x0C01: "ER_DIMENSION_UNSUPPORTED", + 0x0C02: "ER_SLAVE_CHANNEL_DOES_NOT_EXIST", + 0x0C03: "ER_SLAVE_MULTIPLE_CHANNELS_HOST_PORT", + 0x0C04: "ER_SLAVE_CHANNEL_NAME_INVALID_OR_TOO_LONG", + 0x0C05: "ER_SLAVE_NEW_CHANNEL_WRONG_REPOSITORY", + 0x0C06: "ER_SLAVE_CHANNEL_DELETE", + 0x0C07: "ER_SLAVE_MULTIPLE_CHANNELS_CMD", + 0x0C08: "ER_SLAVE_MAX_CHANNELS_EXCEEDED", + 0x0C09: "ER_SLAVE_CHANNEL_MUST_STOP", + 0x0C0A: "ER_SLAVE_CHANNEL_NOT_RUNNING", + 0x0C0B: "ER_SLAVE_CHANNEL_WAS_RUNNING", + 0x0C0C: "ER_SLAVE_CHANNEL_WAS_NOT_RUNNING", + 0x0C0D: "ER_SLAVE_CHANNEL_SQL_THREAD_MUST_STOP", + 0x0C0E: "ER_SLAVE_CHANNEL_SQL_SKIP_COUNTER", + 0x0C0F: "ER_WRONG_FIELD_WITH_GROUP_V2", + 0x0C10: "ER_MIX_OF_GROUP_FUNC_AND_FIELDS_V2", + 0x0C11: "ER_WARN_DEPRECATED_SYSVAR_UPDATE", + 0x0C12: "ER_WARN_DEPRECATED_SQLMODE", + 0x0C13: "ER_CANNOT_LOG_PARTIAL_DROP_DATABASE_WITH_GTID", + 0x0C14: "ER_GROUP_REPLICATION_CONFIGURATION", + 0x0C15: "ER_GROUP_REPLICATION_RUNNING", + 0x0C16: "ER_GROUP_REPLICATION_APPLIER_INIT_ERROR", + 0x0C17: "ER_GROUP_REPLICATION_STOP_APPLIER_THREAD_TIMEOUT", + 0x0C18: "ER_GROUP_REPLICATION_COMMUNICATION_LAYER_SESSION_ERROR", + 0x0C19: "ER_GROUP_REPLICATION_COMMUNICATION_LAYER_JOIN_ERROR", + 0x0C1A: "ER_BEFORE_DML_VALIDATION_ERROR", + 0x0C1B: "ER_PREVENTS_VARIABLE_WITHOUT_RBR", + 0x0C1C: "ER_RUN_HOOK_ERROR", + 0x0C1D: "ER_TRANSACTION_ROLLBACK_DURING_COMMIT", + 0x0C1E: "ER_GENERATED_COLUMN_FUNCTION_IS_NOT_ALLOWED", + 0x0C1F: "ER_UNSUPPORTED_ALTER_INPLACE_ON_VIRTUAL_COLUMN", + 0x0C20: "ER_WRONG_FK_OPTION_FOR_GENERATED_COLUMN", + 0x0C21: "ER_NON_DEFAULT_VALUE_FOR_GENERATED_COLUMN", + 0x0C22: "ER_UNSUPPORTED_ACTION_ON_GENERATED_COLUMN", + 0x0C23: "ER_GENERATED_COLUMN_NON_PRIOR", + 0x0C24: "ER_DEPENDENT_BY_GENERATED_COLUMN", + 0x0C25: "ER_GENERATED_COLUMN_REF_AUTO_INC", + 0x0C26: "ER_FEATURE_NOT_AVAILABLE", + 0x0C27: "ER_CANT_SET_GTID_MODE", + 0x0C28: "ER_CANT_USE_AUTO_POSITION_WITH_GTID_MODE_OFF", + 0x0C29: "ER_CANT_REPLICATE_ANONYMOUS_WITH_AUTO_POSITION", + 0x0C2A: "ER_CANT_REPLICATE_ANONYMOUS_WITH_GTID_MODE_ON", + 0x0C2B: "ER_CANT_REPLICATE_GTID_WITH_GTID_MODE_OFF", + 0x0C2C: "ER_CANT_ENFORCE_GTID_CONSISTENCY_WITH_ONGOING_GTID_VIOLATING_TX", + 0x0C2D: "ER_ENFORCE_GTID_CONSISTENCY_WARN_WITH_ONGOING_GTID_VIOLATING_TX", + 0x0C2E: "ER_ACCOUNT_HAS_BEEN_LOCKED", + 0x0C2F: "ER_WRONG_TABLESPACE_NAME", + 0x0C30: "ER_TABLESPACE_IS_NOT_EMPTY", + 0x0C31: "ER_WRONG_FILE_NAME", + 0x0C32: "ER_BOOST_GEOMETRY_INCONSISTENT_TURNS_EXCEPTION", + 0x0C33: "ER_WARN_OPTIMIZER_HINT_SYNTAX_ERROR", + 0x0C34: "ER_WARN_BAD_MAX_EXECUTION_TIME", + 0x0C35: "ER_WARN_UNSUPPORTED_MAX_EXECUTION_TIME", + 0x0C36: "ER_WARN_CONFLICTING_HINT", + 0x0C37: "ER_WARN_UNKNOWN_QB_NAME", + 0x0C38: "ER_UNRESOLVED_HINT_NAME", + 0x0C39: "ER_WARN_ON_MODIFYING_GTID_EXECUTED_TABLE", + 0x0C3A: "ER_PLUGGABLE_PROTOCOL_COMMAND_NOT_SUPPORTED", + 0x0C3B: "ER_LOCKING_SERVICE_WRONG_NAME", + 0x0C3C: "ER_LOCKING_SERVICE_DEADLOCK", + 0x0C3D: "ER_LOCKING_SERVICE_TIMEOUT", + 0x0C3E: "ER_GIS_MAX_POINTS_IN_GEOMETRY_OVERFLOWED", + 0x0C3F: "ER_SQL_MODE_MERGED", + 0x0C40: "ER_VTOKEN_PLUGIN_TOKEN_MISMATCH", + 0x0C41: "ER_VTOKEN_PLUGIN_TOKEN_NOT_FOUND", + 0x0C42: "ER_CANT_SET_VARIABLE_WHEN_OWNING_GTID", + 0x0C43: "ER_SLAVE_CHANNEL_OPERATION_NOT_ALLOWED", + 0x0C44: "ER_INVALID_JSON_TEXT", + 0x0C45: "ER_INVALID_JSON_TEXT_IN_PARAM", + 0x0C46: "ER_INVALID_JSON_BINARY_DATA", + 0x0C47: "ER_INVALID_JSON_PATH", + 0x0C48: "ER_INVALID_JSON_CHARSET", + 0x0C49: "ER_INVALID_JSON_CHARSET_IN_FUNCTION", + 0x0C4A: "ER_INVALID_TYPE_FOR_JSON", + 0x0C4B: "ER_INVALID_CAST_TO_JSON", + 0x0C4C: "ER_INVALID_JSON_PATH_CHARSET", + 0x0C4D: "ER_INVALID_JSON_PATH_WILDCARD", + 0x0C4E: "ER_JSON_VALUE_TOO_BIG", + 0x0C4F: "ER_JSON_KEY_TOO_BIG", + 0x0C50: "ER_JSON_USED_AS_KEY", + 0x0C51: "ER_JSON_VACUOUS_PATH", + 0x0C52: "ER_JSON_BAD_ONE_OR_ALL_ARG", + 0x0C53: "ER_NUMERIC_JSON_VALUE_OUT_OF_RANGE", + 0x0C54: "ER_INVALID_JSON_VALUE_FOR_CAST", + 0x0C55: "ER_JSON_DOCUMENT_TOO_DEEP", + 0x0C56: "ER_JSON_DOCUMENT_NULL_KEY", + 0x0C57: "ER_SECURE_TRANSPORT_REQUIRED", + 0x0C58: "ER_NO_SECURE_TRANSPORTS_CONFIGURED", + 0x0C59: "ER_DISABLED_STORAGE_ENGINE", + 0x0C5A: "ER_USER_DOES_NOT_EXIST", + 0x0C5B: "ER_USER_ALREADY_EXISTS", + 0x0C5C: "ER_AUDIT_API_ABORT", + 0x0C5D: "ER_INVALID_JSON_PATH_ARRAY_CELL", + 0x0C5E: "ER_BUFPOOL_RESIZE_INPROGRESS", + 0x0C5F: "ER_FEATURE_DISABLED_SEE_DOC", + 0x0C60: "ER_SERVER_ISNT_AVAILABLE", + 0x0C61: "ER_SESSION_WAS_KILLED", + 0x0C62: "ER_CAPACITY_EXCEEDED", + 0x0C63: "ER_CAPACITY_EXCEEDED_IN_RANGE_OPTIMIZER", + 0x0C64: "ER_TABLE_NEEDS_UPG_PART", + 0x0C65: "ER_CANT_WAIT_FOR_EXECUTED_GTID_SET_WHILE_OWNING_A_GTID", + 0x0C66: "ER_CANNOT_ADD_FOREIGN_BASE_COL_VIRTUAL", + 0x0C67: "ER_CANNOT_CREATE_VIRTUAL_INDEX_CONSTRAINT", + 0x0C68: "ER_ERROR_ON_MODIFYING_GTID_EXECUTED_TABLE", + 0x0C69: "ER_LOCK_REFUSED_BY_ENGINE", + 0x0C6A: "ER_UNSUPPORTED_ALTER_ONLINE_ON_VIRTUAL_COLUMN", + 0x0C6B: "ER_MASTER_KEY_ROTATION_NOT_SUPPORTED_BY_SE", + 0x0C6C: "ER_MASTER_KEY_ROTATION_ERROR_BY_SE", + 0x0C6D: "ER_MASTER_KEY_ROTATION_BINLOG_FAILED", + 0x0C6E: "ER_MASTER_KEY_ROTATION_SE_UNAVAILABLE", + 0x0C6F: "ER_TABLESPACE_CANNOT_ENCRYPT", + 0x0C70: "ER_INVALID_ENCRYPTION_OPTION", + 0x0C71: "ER_CANNOT_FIND_KEY_IN_KEYRING", + 0x0C72: "ER_CAPACITY_EXCEEDED_IN_PARSER", + 0x0C73: "ER_UNSUPPORTED_ALTER_ENCRYPTION_INPLACE", + 0x0C74: "ER_KEYRING_UDF_KEYRING_SERVICE_ERROR", + 0x0C75: "ER_USER_COLUMN_OLD_LENGTH", + 0x0C76: "ER_CANT_RESET_MASTER", + 0x0C77: "ER_GROUP_REPLICATION_MAX_GROUP_SIZE", + 0x0C78: "ER_CANNOT_ADD_FOREIGN_BASE_COL_STORED", + 0x0C79: "ER_TABLE_REFERENCED", + 0x0C7A: "ER_PARTITION_ENGINE_DEPRECATED_FOR_TABLE", + 0x0C7B: "ER_WARN_USING_GEOMFROMWKB_TO_SET_SRID_ZERO", + 0x0C7C: "ER_WARN_USING_GEOMFROMWKB_TO_SET_SRID", + 0x0C7D: "ER_XA_RETRY", + 0x0C7E: "ER_KEYRING_AWS_UDF_AWS_KMS_ERROR", + 0x0C7F: "ER_BINLOG_UNSAFE_XA", + 0x0C80: "ER_UDF_ERROR", + 0x0C81: "ER_KEYRING_MIGRATION_FAILURE", + 0x0C82: "ER_KEYRING_ACCESS_DENIED_ERROR", + 0x0C83: "ER_KEYRING_MIGRATION_STATUS", + 0x0C84: "ER_PLUGIN_FAILED_TO_OPEN_TABLES", + 0x0C85: "ER_PLUGIN_FAILED_TO_OPEN_TABLE", + 0x0C86: "ER_AUDIT_LOG_NO_KEYRING_PLUGIN_INSTALLED", + 0x0C87: "ER_AUDIT_LOG_ENCRYPTION_PASSWORD_HAS_NOT_BEEN_SET", + 0x0C88: "ER_AUDIT_LOG_COULD_NOT_CREATE_AES_KEY", + 0x0C89: "ER_AUDIT_LOG_ENCRYPTION_PASSWORD_CANNOT_BE_FETCHED", + 0x0C8A: "ER_AUDIT_LOG_JSON_FILTERING_NOT_ENABLED", + 0x0C8B: "ER_AUDIT_LOG_UDF_INSUFFICIENT_PRIVILEGE", + 0x0C8C: "ER_AUDIT_LOG_SUPER_PRIVILEGE_REQUIRED", + 0x0C8D: "ER_COULD_NOT_REINITIALIZE_AUDIT_LOG_FILTERS", + 0x0C8E: "ER_AUDIT_LOG_UDF_INVALID_ARGUMENT_TYPE", + 0x0C8F: "ER_AUDIT_LOG_UDF_INVALID_ARGUMENT_COUNT", + 0x0C90: "ER_AUDIT_LOG_HAS_NOT_BEEN_INSTALLED", + 0x0C91: "ER_AUDIT_LOG_UDF_READ_INVALID_MAX_ARRAY_LENGTH_ARG_TYPE", + 0x0C92: "ER_AUDIT_LOG_UDF_READ_INVALID_MAX_ARRAY_LENGTH_ARG_VALUE", + 0x0C93: "ER_AUDIT_LOG_JSON_FILTER_PARSING_ERROR", + 0x0C94: "ER_AUDIT_LOG_JSON_FILTER_NAME_CANNOT_BE_EMPTY", + 0x0C95: "ER_AUDIT_LOG_JSON_USER_NAME_CANNOT_BE_EMPTY", + 0x0C96: "ER_AUDIT_LOG_JSON_FILTER_DOES_NOT_EXISTS", + 0x0C97: "ER_AUDIT_LOG_USER_FIRST_CHARACTER_MUST_BE_ALPHANUMERIC", + 0x0C98: "ER_AUDIT_LOG_USER_NAME_INVALID_CHARACTER", + 0x0C99: "ER_AUDIT_LOG_HOST_NAME_INVALID_CHARACTER", + 0x0C9A: "WARN_DEPRECATED_MAXDB_SQL_MODE_FOR_TIMESTAMP", + 0x0C9B: "ER_XA_REPLICATION_FILTERS", + 0x0DAC: "ER_UNSUPPORT_COMPRESSED_TEMPORARY_TABLE", + 0x0DAD: "ER_ACL_OPERATION_FAILED", + 0x0DAE: "ER_UNSUPPORTED_INDEX_ALGORITHM", + 0x0DAF: "ER_NO_SUCH_DB", + 0x0DB0: "ER_TOO_BIG_ENUM", + 0x0DB1: "ER_TOO_LONG_SET_ENUM_VALUE", + 0x0DB2: "ER_INVALID_DD_OBJECT", + 0x0DB3: "ER_UPDATING_DD_TABLE", + 0x0DB4: "ER_INVALID_DD_OBJECT_ID", + 0x0DB5: "ER_INVALID_DD_OBJECT_NAME", + 0x0DB6: "ER_TABLESPACE_MISSING_WITH_NAME", + 0x0DB7: "ER_TOO_LONG_ROUTINE_COMMENT", + 0x0DB8: "ER_SP_LOAD_FAILED", + 0x0DB9: "ER_INVALID_BITWISE_OPERANDS_SIZE", + 0x0DBA: "ER_INVALID_BITWISE_AGGREGATE_OPERANDS_SIZE", + 0x0DBB: "ER_WARN_UNSUPPORTED_HINT", + 0x0DBC: "ER_UNEXPECTED_GEOMETRY_TYPE", + 0x0DBD: "ER_SRS_PARSE_ERROR", + 0x0DBE: "ER_SRS_PROJ_PARAMETER_MISSING", + 0x0DBF: "ER_WARN_SRS_NOT_FOUND", + 0x0DC0: "ER_SRS_NOT_CARTESIAN", + 0x0DC1: "ER_SRS_NOT_CARTESIAN_UNDEFINED", + 0x0DC2: "ER_PK_INDEX_CANT_BE_INVISIBLE", + 0x0DC3: "ER_UNKNOWN_AUTHID", + 0x0DC4: "ER_FAILED_ROLE_GRANT", + 0x0DC5: "ER_OPEN_ROLE_TABLES", + 0x0DC6: "ER_FAILED_DEFAULT_ROLES", + 0x0DC7: "ER_COMPONENTS_NO_SCHEME", + 0x0DC8: "ER_COMPONENTS_NO_SCHEME_SERVICE", + 0x0DC9: "ER_COMPONENTS_CANT_LOAD", + 0x0DCA: "ER_ROLE_NOT_GRANTED", + 0x0DCB: "ER_FAILED_REVOKE_ROLE", + 0x0DCC: "ER_RENAME_ROLE", + 0x0DCD: "ER_COMPONENTS_CANT_ACQUIRE_SERVICE_IMPLEMENTATION", + 0x0DCE: "ER_COMPONENTS_CANT_SATISFY_DEPENDENCY", + 0x0DCF: "ER_COMPONENTS_LOAD_CANT_REGISTER_SERVICE_IMPLEMENTATION", + 0x0DD0: "ER_COMPONENTS_LOAD_CANT_INITIALIZE", + 0x0DD1: "ER_COMPONENTS_UNLOAD_NOT_LOADED", + 0x0DD2: "ER_COMPONENTS_UNLOAD_CANT_DEINITIALIZE", + 0x0DD3: "ER_COMPONENTS_CANT_RELEASE_SERVICE", + 0x0DD4: "ER_COMPONENTS_UNLOAD_CANT_UNREGISTER_SERVICE", + 0x0DD5: "ER_COMPONENTS_CANT_UNLOAD", + 0x0DD6: "ER_WARN_UNLOAD_THE_NOT_PERSISTED", + 0x0DD7: "ER_COMPONENT_TABLE_INCORRECT", + 0x0DD8: "ER_COMPONENT_MANIPULATE_ROW_FAILED", + 0x0DD9: "ER_COMPONENTS_UNLOAD_DUPLICATE_IN_GROUP", + 0x0DDA: "ER_CANT_SET_GTID_PURGED_DUE_SETS_CONSTRAINTS", + 0x0DDB: "ER_CANNOT_LOCK_USER_MANAGEMENT_CACHES", + 0x0DDC: "ER_SRS_NOT_FOUND", + 0x0DDD: "ER_VARIABLE_NOT_PERSISTED", + 0x0DDE: "ER_IS_QUERY_INVALID_CLAUSE", + 0x0DDF: "ER_UNABLE_TO_STORE_STATISTICS", + 0x0DE0: "ER_NO_SYSTEM_SCHEMA_ACCESS", + 0x0DE1: "ER_NO_SYSTEM_TABLESPACE_ACCESS", + 0x0DE2: "ER_NO_SYSTEM_TABLE_ACCESS", + 0x0DE3: "ER_NO_SYSTEM_TABLE_ACCESS_FOR_DICTIONARY_TABLE", + 0x0DE4: "ER_NO_SYSTEM_TABLE_ACCESS_FOR_SYSTEM_TABLE", + 0x0DE5: "ER_NO_SYSTEM_TABLE_ACCESS_FOR_TABLE", + 0x0DE6: "ER_INVALID_OPTION_KEY", + 0x0DE7: "ER_INVALID_OPTION_VALUE", + 0x0DE8: "ER_INVALID_OPTION_KEY_VALUE_PAIR", + 0x0DE9: "ER_INVALID_OPTION_START_CHARACTER", + 0x0DEA: "ER_INVALID_OPTION_END_CHARACTER", + 0x0DEB: "ER_INVALID_OPTION_CHARACTERS", + 0x0DEC: "ER_DUPLICATE_OPTION_KEY", + 0x0DED: "ER_WARN_SRS_NOT_FOUND_AXIS_ORDER", + 0x0DEE: "ER_NO_ACCESS_TO_NATIVE_FCT", + 0x0DEF: "ER_RESET_MASTER_TO_VALUE_OUT_OF_RANGE", + 0x0DF0: "ER_UNRESOLVED_TABLE_LOCK", + 0x0DF1: "ER_DUPLICATE_TABLE_LOCK", + 0x0DF2: "ER_BINLOG_UNSAFE_SKIP_LOCKED", + 0x0DF3: "ER_BINLOG_UNSAFE_NOWAIT", + 0x0DF4: "ER_LOCK_NOWAIT", + 0x0DF5: "ER_CTE_RECURSIVE_REQUIRES_UNION", + 0x0DF6: "ER_CTE_RECURSIVE_REQUIRES_NONRECURSIVE_FIRST", + 0x0DF7: "ER_CTE_RECURSIVE_FORBIDS_AGGREGATION", + 0x0DF8: "ER_CTE_RECURSIVE_FORBIDDEN_JOIN_ORDER", + 0x0DF9: "ER_CTE_RECURSIVE_REQUIRES_SINGLE_REFERENCE", + 0x0DFA: "ER_SWITCH_TMP_ENGINE", + 0x0DFB: "ER_WINDOW_NO_SUCH_WINDOW", + 0x0DFC: "ER_WINDOW_CIRCULARITY_IN_WINDOW_GRAPH", + 0x0DFD: "ER_WINDOW_NO_CHILD_PARTITIONING", + 0x0DFE: "ER_WINDOW_NO_INHERIT_FRAME", + 0x0DFF: "ER_WINDOW_NO_REDEFINE_ORDER_BY", + 0x0E00: "ER_WINDOW_FRAME_START_ILLEGAL", + 0x0E01: "ER_WINDOW_FRAME_END_ILLEGAL", + 0x0E02: "ER_WINDOW_FRAME_ILLEGAL", + 0x0E03: "ER_WINDOW_RANGE_FRAME_ORDER_TYPE", + 0x0E04: "ER_WINDOW_RANGE_FRAME_TEMPORAL_TYPE", + 0x0E05: "ER_WINDOW_RANGE_FRAME_NUMERIC_TYPE", + 0x0E06: "ER_WINDOW_RANGE_BOUND_NOT_CONSTANT", + 0x0E07: "ER_WINDOW_DUPLICATE_NAME", + 0x0E08: "ER_WINDOW_ILLEGAL_ORDER_BY", + 0x0E09: "ER_WINDOW_INVALID_WINDOW_FUNC_USE", + 0x0E0A: "ER_WINDOW_INVALID_WINDOW_FUNC_ALIAS_USE", + 0x0E0B: "ER_WINDOW_NESTED_WINDOW_FUNC_USE_IN_WINDOW_SPEC", + 0x0E0C: "ER_WINDOW_ROWS_INTERVAL_USE", + 0x0E0D: "ER_WINDOW_NO_GROUP_ORDER", + 0x0E0E: "ER_WINDOW_EXPLAIN_JSON", + 0x0E0F: "ER_WINDOW_FUNCTION_IGNORES_FRAME", + 0x0E10: "ER_WL9236_NOW_UNUSED", + 0x0E11: "ER_INVALID_NO_OF_ARGS", + 0x0E12: "ER_FIELD_IN_GROUPING_NOT_GROUP_BY", + 0x0E13: "ER_TOO_LONG_TABLESPACE_COMMENT", + 0x0E14: "ER_ENGINE_CANT_DROP_TABLE", + 0x0E15: "ER_ENGINE_CANT_DROP_MISSING_TABLE", + 0x0E16: "ER_TABLESPACE_DUP_FILENAME", + 0x0E17: "ER_DB_DROP_RMDIR2", + 0x0E18: "ER_IMP_NO_FILES_MATCHED", + 0x0E19: "ER_IMP_SCHEMA_DOES_NOT_EXIST", + 0x0E1A: "ER_IMP_TABLE_ALREADY_EXISTS", + 0x0E1B: "ER_IMP_INCOMPATIBLE_MYSQLD_VERSION", + 0x0E1C: "ER_IMP_INCOMPATIBLE_DD_VERSION", + 0x0E1D: "ER_IMP_INCOMPATIBLE_SDI_VERSION", + 0x0E1E: "ER_WARN_INVALID_HINT", + 0x0E1F: "ER_VAR_DOES_NOT_EXIST", + 0x0E20: "ER_LONGITUDE_OUT_OF_RANGE", + 0x0E21: "ER_LATITUDE_OUT_OF_RANGE", + 0x0E22: "ER_NOT_IMPLEMENTED_FOR_GEOGRAPHIC_SRS", + 0x0E23: "ER_ILLEGAL_PRIVILEGE_LEVEL", + 0x0E24: "ER_NO_SYSTEM_VIEW_ACCESS", + 0x0E25: "ER_COMPONENT_FILTER_FLABBERGASTED", + 0x0E26: "ER_PART_EXPR_TOO_LONG", + 0x0E27: "ER_UDF_DROP_DYNAMICALLY_REGISTERED", + 0x0E28: "ER_UNABLE_TO_STORE_COLUMN_STATISTICS", + 0x0E29: "ER_UNABLE_TO_UPDATE_COLUMN_STATISTICS", + 0x0E2A: "ER_UNABLE_TO_DROP_COLUMN_STATISTICS", + 0x0E2B: "ER_UNABLE_TO_BUILD_HISTOGRAM", + 0x0E2C: "ER_MANDATORY_ROLE", + 0x0E2D: "ER_MISSING_TABLESPACE_FILE", + 0x0E2E: "ER_PERSIST_ONLY_ACCESS_DENIED_ERROR", + 0x0E2F: "ER_CMD_NEED_SUPER", + 0x0E30: "ER_PATH_IN_DATADIR", + 0x0E31: "ER_DDL_IN_PROGRESS", + 0x0E32: "ER_TOO_MANY_CONCURRENT_CLONES", + 0x0E33: "ER_APPLIER_LOG_EVENT_VALIDATION_ERROR", + 0x0E34: "ER_CTE_MAX_RECURSION_DEPTH", + 0x0E35: "ER_NOT_HINT_UPDATABLE_VARIABLE", + 0x0E36: "ER_CREDENTIALS_CONTRADICT_TO_HISTORY", + 0x0E37: "ER_WARNING_PASSWORD_HISTORY_CLAUSES_VOID", + 0x0E38: "ER_CLIENT_DOES_NOT_SUPPORT", + 0x0E39: "ER_I_S_SKIPPED_TABLESPACE", + 0x0E3A: "ER_TABLESPACE_ENGINE_MISMATCH", + 0x0E3B: "ER_WRONG_SRID_FOR_COLUMN", + 0x0E3C: "ER_CANNOT_ALTER_SRID_DUE_TO_INDEX", + 0x0E3D: "ER_WARN_BINLOG_PARTIAL_UPDATES_DISABLED", + 0x0E3E: "ER_WARN_BINLOG_V1_ROW_EVENTS_DISABLED", + 0x0E3F: "ER_WARN_BINLOG_PARTIAL_UPDATES_SUGGESTS_PARTIAL_IMAGES", + 0x0E40: "ER_COULD_NOT_APPLY_JSON_DIFF", + 0x0E41: "ER_CORRUPTED_JSON_DIFF", + 0x0E42: "ER_RESOURCE_GROUP_EXISTS", + 0x0E43: "ER_RESOURCE_GROUP_NOT_EXISTS", + 0x0E44: "ER_INVALID_VCPU_ID", + 0x0E45: "ER_INVALID_VCPU_RANGE", + 0x0E46: "ER_INVALID_THREAD_PRIORITY", + 0x0E47: "ER_DISALLOWED_OPERATION", + 0x0E48: "ER_RESOURCE_GROUP_BUSY", + 0x0E49: "ER_RESOURCE_GROUP_DISABLED", + 0x0E4A: "ER_FEATURE_UNSUPPORTED", + 0x0E4B: "ER_ATTRIBUTE_IGNORED", + 0x0E4C: "ER_INVALID_THREAD_ID", + 0x0E4D: "ER_RESOURCE_GROUP_BIND_FAILED", + 0x0E4E: "ER_INVALID_USE_OF_FORCE_OPTION", + 0x0E4F: "ER_GROUP_REPLICATION_COMMAND_FAILURE", + 0x0E50: "ER_SDI_OPERATION_FAILED", + 0x0E51: "ER_MISSING_JSON_TABLE_VALUE", + 0x0E52: "ER_WRONG_JSON_TABLE_VALUE", + 0x0E53: "ER_TF_MUST_HAVE_ALIAS", + 0x0E54: "ER_TF_FORBIDDEN_JOIN_TYPE", + 0x0E55: "ER_JT_VALUE_OUT_OF_RANGE", + 0x0E56: "ER_JT_MAX_NESTED_PATH", + 0x0E57: "ER_PASSWORD_EXPIRATION_NOT_SUPPORTED_BY_AUTH_METHOD", + 0x0E58: "ER_INVALID_GEOJSON_CRS_NOT_TOP_LEVEL", + 0x0E59: "ER_BAD_NULL_ERROR_NOT_IGNORED", + 0x0E5A: "WARN_USELESS_SPATIAL_INDEX", + 0x0E5B: "ER_DISK_FULL_NOWAIT", + 0x0E5C: "ER_PARSE_ERROR_IN_DIGEST_FN", + 0x0E5D: "ER_UNDISCLOSED_PARSE_ERROR_IN_DIGEST_FN", + 0x0E5E: "ER_SCHEMA_DIR_EXISTS", + 0x0E5F: "ER_SCHEMA_DIR_MISSING", + 0x0E60: "ER_SCHEMA_DIR_CREATE_FAILED", + 0x0E61: "ER_SCHEMA_DIR_UNKNOWN", + 0x0E62: "ER_ONLY_IMPLEMENTED_FOR_SRID_0_AND_4326", + 0x0E63: "ER_BINLOG_EXPIRE_LOG_DAYS_AND_SECS_USED_TOGETHER", + 0x0E64: "ER_REGEXP_BUFFER_OVERFLOW", + 0x0E65: "ER_REGEXP_ILLEGAL_ARGUMENT", + 0x0E66: "ER_REGEXP_INDEX_OUTOFBOUNDS_ERROR", + 0x0E67: "ER_REGEXP_INTERNAL_ERROR", + 0x0E68: "ER_REGEXP_RULE_SYNTAX", + 0x0E69: "ER_REGEXP_BAD_ESCAPE_SEQUENCE", + 0x0E6A: "ER_REGEXP_UNIMPLEMENTED", + 0x0E6B: "ER_REGEXP_MISMATCHED_PAREN", + 0x0E6C: "ER_REGEXP_BAD_INTERVAL", + 0x0E6D: "ER_REGEXP_MAX_LT_MIN", + 0x0E6E: "ER_REGEXP_INVALID_BACK_REF", + 0x0E6F: "ER_REGEXP_LOOK_BEHIND_LIMIT", + 0x0E70: "ER_REGEXP_MISSING_CLOSE_BRACKET", + 0x0E71: "ER_REGEXP_INVALID_RANGE", + 0x0E72: "ER_REGEXP_STACK_OVERFLOW", + 0x0E73: "ER_REGEXP_TIME_OUT", + 0x0E74: "ER_REGEXP_PATTERN_TOO_BIG", + 0x0E75: "ER_CANT_SET_ERROR_LOG_SERVICE", + 0x0E76: "ER_EMPTY_PIPELINE_FOR_ERROR_LOG_SERVICE", + 0x0E77: "ER_COMPONENT_FILTER_DIAGNOSTICS", + 0x0E78: "ER_NOT_IMPLEMENTED_FOR_CARTESIAN_SRS", + 0x0E79: "ER_NOT_IMPLEMENTED_FOR_PROJECTED_SRS", + 0x0E7A: "ER_NONPOSITIVE_RADIUS", + 0x0E7B: "ER_RESTART_SERVER_FAILED", + 0x0E7C: "ER_SRS_MISSING_MANDATORY_ATTRIBUTE", + 0x0E7D: "ER_SRS_MULTIPLE_ATTRIBUTE_DEFINITIONS", + 0x0E7E: "ER_SRS_NAME_CANT_BE_EMPTY_OR_WHITESPACE", + 0x0E7F: "ER_SRS_ORGANIZATION_CANT_BE_EMPTY_OR_WHITESPACE", + 0x0E80: "ER_SRS_ID_ALREADY_EXISTS", + 0x0E81: "ER_WARN_SRS_ID_ALREADY_EXISTS", + 0x0E82: "ER_CANT_MODIFY_SRID_0", + 0x0E83: "ER_WARN_RESERVED_SRID_RANGE", + 0x0E84: "ER_CANT_MODIFY_SRS_USED_BY_COLUMN", + 0x0E85: "ER_SRS_INVALID_CHARACTER_IN_ATTRIBUTE", + 0x0E86: "ER_SRS_ATTRIBUTE_STRING_TOO_LONG", + 0x0E87: "ER_DEPRECATED_UTF8_ALIAS", + 0x0E88: "ER_DEPRECATED_NATIONAL", + 0x0E89: "ER_INVALID_DEFAULT_UTF8MB4_COLLATION", + 0x0E8A: "ER_UNABLE_TO_COLLECT_LOG_STATUS", + 0x0E8B: "ER_RESERVED_TABLESPACE_NAME", + 0x0E8C: "ER_UNABLE_TO_SET_OPTION", + 0x0E8D: "ER_SLAVE_POSSIBLY_DIVERGED_AFTER_DDL", + 0x0E8E: "ER_SRS_NOT_GEOGRAPHIC", + 0x0E8F: "ER_POLYGON_TOO_LARGE", + 0x0E90: "ER_SPATIAL_UNIQUE_INDEX", + 0x0E91: "ER_INDEX_TYPE_NOT_SUPPORTED_FOR_SPATIAL_INDEX", + 0x0E92: "ER_FK_CANNOT_DROP_PARENT", + 0x0E93: "ER_GEOMETRY_PARAM_LONGITUDE_OUT_OF_RANGE", + 0x0E94: "ER_GEOMETRY_PARAM_LATITUDE_OUT_OF_RANGE", + 0x0E95: "ER_FK_CANNOT_USE_VIRTUAL_COLUMN", + 0x0E96: "ER_FK_NO_COLUMN_PARENT", + 0x0F61: "ER_AUTHCACHE_ROLE_TABLES_DODGY", + 0x11E0: "ER_DISK_FULL", 0x2710: "ER_PARSER_TRACE", 0x2711: "ER_BOOTSTRAP_CANT_THREAD", 0x2712: "ER_TRIGGER_INVALID_VALUE", @@ -1367,12 +1367,12 @@ 0x2717: "ER_DD_VERSION_INSTALLED", 0x2718: "ER_DD_VERSION_UNSUPPORTED", 0x2719: "ER_LOG_SYSLOG_FACILITY_FAIL", - 0x271a: "ER_LOG_SYSLOG_CANNOT_OPEN", - 0x271b: "ER_LOG_SLOW_CANNOT_OPEN", - 0x271c: "ER_LOG_GENERAL_CANNOT_OPEN", - 0x271d: "ER_LOG_CANNOT_WRITE", - 0x271e: "ER_RPL_ZOMBIE_ENCOUNTERED", - 0x271f: "ER_RPL_GTID_TABLE_CANNOT_OPEN", + 0x271A: "ER_LOG_SYSLOG_CANNOT_OPEN", + 0x271B: "ER_LOG_SLOW_CANNOT_OPEN", + 0x271C: "ER_LOG_GENERAL_CANNOT_OPEN", + 0x271D: "ER_LOG_CANNOT_WRITE", + 0x271E: "ER_RPL_ZOMBIE_ENCOUNTERED", + 0x271F: "ER_RPL_GTID_TABLE_CANNOT_OPEN", 0x2720: "ER_SYSTEM_SCHEMA_NOT_FOUND", 0x2721: "ER_DD_INIT_UPGRADE_FAILED", 0x2722: "ER_VIEW_UNKNOWN_CHARSET_OR_COLLATION", @@ -1383,12 +1383,12 @@ 0x2727: "ER_DD_VIEW_CANT_CREATE", 0x2728: "ER_DD_METADATA_NOT_FOUND", 0x2729: "ER_DD_CACHE_NOT_EMPTY_AT_SHUTDOWN", - 0x272a: "ER_DD_OBJECT_REMAINS", - 0x272b: "ER_DD_OBJECT_REMAINS_IN_RELEASER", - 0x272c: "ER_DD_OBJECT_RELEASER_REMAINS", - 0x272d: "ER_DD_CANT_GET_OBJECT_KEY", - 0x272e: "ER_DD_CANT_CREATE_OBJECT_KEY", - 0x272f: "ER_CANT_CREATE_HANDLE_MGR_THREAD", + 0x272A: "ER_DD_OBJECT_REMAINS", + 0x272B: "ER_DD_OBJECT_REMAINS_IN_RELEASER", + 0x272C: "ER_DD_OBJECT_RELEASER_REMAINS", + 0x272D: "ER_DD_CANT_GET_OBJECT_KEY", + 0x272E: "ER_DD_CANT_CREATE_OBJECT_KEY", + 0x272F: "ER_CANT_CREATE_HANDLE_MGR_THREAD", 0x2730: "ER_RPL_REPO_HAS_GAPS", 0x2731: "ER_INVALID_VALUE_FOR_ENFORCE_GTID_CONSISTENCY", 0x2732: "ER_CHANGED_ENFORCE_GTID_CONSISTENCY", @@ -1399,12 +1399,12 @@ 0x2737: "ER_DEBUG_SYNC_THREAD_MAX", 0x2738: "ER_DEBUG_SYNC_OOM", 0x2739: "ER_CANT_INIT_TC_LOG", - 0x273a: "ER_EVENT_CANT_INIT_QUEUE", - 0x273b: "ER_EVENT_PURGING_QUEUE", - 0x273c: "ER_EVENT_LAST_EXECUTION", - 0x273d: "ER_EVENT_MESSAGE_STACK", - 0x273e: "ER_EVENT_EXECUTION_FAILED", - 0x273f: "ER_CANT_INIT_SCHEDULER_THREAD", + 0x273A: "ER_EVENT_CANT_INIT_QUEUE", + 0x273B: "ER_EVENT_PURGING_QUEUE", + 0x273C: "ER_EVENT_LAST_EXECUTION", + 0x273D: "ER_EVENT_MESSAGE_STACK", + 0x273E: "ER_EVENT_EXECUTION_FAILED", + 0x273F: "ER_CANT_INIT_SCHEDULER_THREAD", 0x2740: "ER_SCHEDULER_STOPPED", 0x2741: "ER_CANT_CREATE_SCHEDULER_THREAD", 0x2742: "ER_SCHEDULER_WAITING", @@ -1415,12 +1415,12 @@ 0x2747: "ER_UNABLE_TO_RESOLVE_IP", 0x2748: "ER_UNABLE_TO_RESOLVE_HOSTNAME", 0x2749: "ER_HOSTNAME_RESEMBLES_IPV4", - 0x274a: "ER_HOSTNAME_DOESNT_RESOLVE_TO", - 0x274b: "ER_ADDRESSES_FOR_HOSTNAME_HEADER", - 0x274c: "ER_ADDRESSES_FOR_HOSTNAME_LIST_ITEM", - 0x274d: "ER_TRG_WITHOUT_DEFINER", - 0x274e: "ER_TRG_NO_CLIENT_CHARSET", - 0x274f: "ER_PARSING_VIEW", + 0x274A: "ER_HOSTNAME_DOESNT_RESOLVE_TO", + 0x274B: "ER_ADDRESSES_FOR_HOSTNAME_HEADER", + 0x274C: "ER_ADDRESSES_FOR_HOSTNAME_LIST_ITEM", + 0x274D: "ER_TRG_WITHOUT_DEFINER", + 0x274E: "ER_TRG_NO_CLIENT_CHARSET", + 0x274F: "ER_PARSING_VIEW", 0x2750: "ER_COMPONENTS_INFRASTRUCTURE_BOOTSTRAP", 0x2751: "ER_COMPONENTS_INFRASTRUCTURE_SHUTDOWN", 0x2752: "ER_COMPONENTS_PERSIST_LOADER_BOOTSTRAP", @@ -1431,12 +1431,12 @@ 0x2757: "ER_UUID_SALT", 0x2758: "ER_UUID_IS", 0x2759: "ER_UUID_INVALID", - 0x275a: "ER_UUID_SCRUB", - 0x275b: "ER_CREATING_NEW_UUID", - 0x275c: "ER_CANT_CREATE_UUID", - 0x275d: "ER_UNKNOWN_UNSUPPORTED_STORAGE_ENGINE", - 0x275e: "ER_SECURE_AUTH_VALUE_UNSUPPORTED", - 0x275f: "ER_INVALID_INSTRUMENT", + 0x275A: "ER_UUID_SCRUB", + 0x275B: "ER_CREATING_NEW_UUID", + 0x275C: "ER_CANT_CREATE_UUID", + 0x275D: "ER_UNKNOWN_UNSUPPORTED_STORAGE_ENGINE", + 0x275E: "ER_SECURE_AUTH_VALUE_UNSUPPORTED", + 0x275F: "ER_INVALID_INSTRUMENT", 0x2760: "ER_INNODB_MANDATORY", 0x2762: "ER_OLD_PASSWORDS_NO_MIDDLE_GROUND", 0x2763: "ER_VERBOSE_REQUIRES_HELP", @@ -1446,12 +1446,12 @@ 0x2767: "ER_FT_BOOL_SYNTAX_INVALID", 0x2768: "ER_CREDENTIALLESS_AUTO_USER_BAD", 0x2769: "ER_CONNECTION_HANDLING_OOM", - 0x276a: "ER_THREAD_HANDLING_OOM", - 0x276b: "ER_CANT_CREATE_TEST_FILE", - 0x276c: "ER_CANT_CREATE_PID_FILE", - 0x276d: "ER_CANT_REMOVE_PID_FILE", - 0x276e: "ER_CANT_CREATE_SHUTDOWN_THREAD", - 0x276f: "ER_SEC_FILE_PRIV_CANT_ACCESS_DIR", + 0x276A: "ER_THREAD_HANDLING_OOM", + 0x276B: "ER_CANT_CREATE_TEST_FILE", + 0x276C: "ER_CANT_CREATE_PID_FILE", + 0x276D: "ER_CANT_REMOVE_PID_FILE", + 0x276E: "ER_CANT_CREATE_SHUTDOWN_THREAD", + 0x276F: "ER_SEC_FILE_PRIV_CANT_ACCESS_DIR", 0x2770: "ER_SEC_FILE_PRIV_IGNORED", 0x2771: "ER_SEC_FILE_PRIV_EMPTY", 0x2772: "ER_SEC_FILE_PRIV_NULL", @@ -1462,12 +1462,12 @@ 0x2777: "ER_CANT_CREATE_NAMED_PIPES_THREAD", 0x2778: "ER_CANT_CREATE_TCPIP_THREAD", 0x2779: "ER_CANT_CREATE_SHM_THREAD", - 0x277a: "ER_CANT_CREATE_INTERRUPT_THREAD", - 0x277b: "ER_WRITABLE_CONFIG_REMOVED", - 0x277c: "ER_CORE_VALUES", - 0x277d: "ER_WRONG_DATETIME_SPEC", - 0x277e: "ER_RPL_BINLOG_FILTERS_OOM", - 0x277f: "ER_KEYCACHE_OOM", + 0x277A: "ER_CANT_CREATE_INTERRUPT_THREAD", + 0x277B: "ER_WRITABLE_CONFIG_REMOVED", + 0x277C: "ER_CORE_VALUES", + 0x277D: "ER_WRONG_DATETIME_SPEC", + 0x277E: "ER_RPL_BINLOG_FILTERS_OOM", + 0x277F: "ER_KEYCACHE_OOM", 0x2780: "ER_CONFIRMING_THE_FUTURE", 0x2781: "ER_BACK_IN_TIME", 0x2782: "ER_FUTURE_DATE", @@ -1478,12 +1478,12 @@ 0x2787: "ER_ABORTING", 0x2788: "ER_BINLOG_END", 0x2789: "ER_CALL_ME_LOCALHOST", - 0x278a: "ER_USER_REQUIRES_ROOT", - 0x278b: "ER_REALLY_RUN_AS_ROOT", - 0x278c: "ER_USER_WHAT_USER", - 0x278d: "ER_TRANSPORTS_WHAT_TRANSPORTS", - 0x278e: "ER_FAIL_SETGID", - 0x278f: "ER_FAIL_SETUID", + 0x278A: "ER_USER_REQUIRES_ROOT", + 0x278B: "ER_REALLY_RUN_AS_ROOT", + 0x278C: "ER_USER_WHAT_USER", + 0x278D: "ER_TRANSPORTS_WHAT_TRANSPORTS", + 0x278E: "ER_FAIL_SETGID", + 0x278F: "ER_FAIL_SETUID", 0x2790: "ER_FAIL_SETREGID", 0x2791: "ER_FAIL_SETREUID", 0x2792: "ER_FAIL_CHROOT", @@ -1494,108 +1494,108 @@ 0x2797: "ER_FAILED_TO_LOCK_MEM", 0x2798: "ER_MYINIT_FAILED", 0x2799: "ER_BEG_INITFILE", - 0x279a: "ER_END_INITFILE", - 0x279b: "ER_CHANGED_MAX_OPEN_FILES", - 0x279c: "ER_CANT_INCREASE_MAX_OPEN_FILES", - 0x279d: "ER_CHANGED_MAX_CONNECTIONS", - 0x279e: "ER_CHANGED_TABLE_OPEN_CACHE", - 0x279f: "ER_THE_USER_ABIDES", - 0x27a0: "ER_RPL_CANT_ADD_DO_TABLE", - 0x27a1: "ER_RPL_CANT_ADD_IGNORE_TABLE", - 0x27a2: "ER_TRACK_VARIABLES_BOGUS", - 0x27a3: "ER_EXCESS_ARGUMENTS", - 0x27a4: "ER_VERBOSE_HINT", - 0x27a5: "ER_CANT_READ_ERRMSGS", - 0x27a6: "ER_CANT_INIT_DBS", - 0x27a7: "ER_LOG_OUTPUT_CONTRADICTORY", - 0x27a8: "ER_NO_CSV_NO_LOG_TABLES", - 0x27a9: "ER_RPL_REWRITEDB_MISSING_ARROW", - 0x27aa: "ER_RPL_REWRITEDB_EMPTY_FROM", - 0x27ab: "ER_RPL_REWRITEDB_EMPTY_TO", - 0x27ac: "ER_LOG_FILES_GIVEN_LOG_OUTPUT_IS_TABLE", - 0x27ad: "ER_LOG_FILE_INVALID", - 0x27ae: "ER_LOWER_CASE_TABLE_NAMES_CS_DD_ON_CI_FS_UNSUPPORTED", - 0x27af: "ER_LOWER_CASE_TABLE_NAMES_USING_2", - 0x27b0: "ER_LOWER_CASE_TABLE_NAMES_USING_0", - 0x27b1: "ER_NEED_LOG_BIN", - 0x27b2: "ER_NEED_FILE_INSTEAD_OF_DIR", - 0x27b3: "ER_LOG_BIN_BETTER_WITH_NAME", - 0x27b4: "ER_BINLOG_NEEDS_SERVERID", - 0x27b5: "ER_RPL_CANT_MAKE_PATHS", - 0x27b6: "ER_CANT_INITIALIZE_GTID", - 0x27b7: "ER_CANT_INITIALIZE_EARLY_PLUGINS", - 0x27b8: "ER_CANT_INITIALIZE_BUILTIN_PLUGINS", - 0x27b9: "ER_CANT_INITIALIZE_DYNAMIC_PLUGINS", - 0x27ba: "ER_PERFSCHEMA_INIT_FAILED", - 0x27bb: "ER_STACKSIZE_UNEXPECTED", - 0x27bc: "ER_CANT_SET_DATADIR", - 0x27bd: "ER_CANT_STAT_DATADIR", - 0x27be: "ER_CANT_CHOWN_DATADIR", - 0x27bf: "ER_CANT_SET_UP_PERSISTED_VALUES", - 0x27c0: "ER_CANT_SAVE_GTIDS", - 0x27c1: "ER_AUTH_CANT_SET_DEFAULT_PLUGIN", - 0x27c2: "ER_CANT_JOIN_SHUTDOWN_THREAD", - 0x27c3: "ER_CANT_HASH_DO_AND_IGNORE_RULES", - 0x27c4: "ER_CANT_OPEN_CA", - 0x27c5: "ER_CANT_ACCESS_CAPATH", - 0x27c6: "ER_SSL_TRYING_DATADIR_DEFAULTS", - 0x27c7: "ER_AUTO_OPTIONS_FAILED", - 0x27c8: "ER_CANT_INIT_TIMER", - 0x27c9: "ER_SERVERID_TOO_LARGE", - 0x27ca: "ER_DEFAULT_SE_UNAVAILABLE", - 0x27cb: "ER_CANT_OPEN_ERROR_LOG", - 0x27cc: "ER_INVALID_ERROR_LOG_NAME", - 0x27cd: "ER_RPL_INFINITY_DENIED", - 0x27ce: "ER_RPL_INFINITY_IGNORED", - 0x27cf: "ER_NDB_TABLES_NOT_READY", - 0x27d0: "ER_TABLE_CHECK_INTACT", - 0x27d1: "ER_DD_TABLESPACE_NOT_FOUND", - 0x27d2: "ER_DD_TRG_CONNECTION_COLLATION_MISSING", - 0x27d3: "ER_DD_TRG_DB_COLLATION_MISSING", - 0x27d4: "ER_DD_TRG_DEFINER_OOM", - 0x27d5: "ER_DD_TRG_FILE_UNREADABLE", - 0x27d6: "ER_TRG_CANT_PARSE", - 0x27d7: "ER_DD_TRG_CANT_ADD", - 0x27d8: "ER_DD_CANT_RESOLVE_VIEW", - 0x27d9: "ER_DD_VIEW_WITHOUT_DEFINER", - 0x27da: "ER_PLUGIN_INIT_FAILED", - 0x27db: "ER_RPL_TRX_DELEGATES_INIT_FAILED", - 0x27dc: "ER_RPL_BINLOG_STORAGE_DELEGATES_INIT_FAILED", - 0x27dd: "ER_RPL_BINLOG_TRANSMIT_DELEGATES_INIT_FAILED", - 0x27de: "ER_RPL_BINLOG_RELAY_DELEGATES_INIT_FAILED", - 0x27df: "ER_RPL_PLUGIN_FUNCTION_FAILED", - 0x27e0: "ER_SQL_HA_READ_FAILED", - 0x27e1: "ER_SR_BOGUS_VALUE", - 0x27e2: "ER_SR_INVALID_CONTEXT", - 0x27e3: "ER_READING_TABLE_FAILED", - 0x27e4: "ER_DES_FILE_WRONG_KEY", - 0x27e5: "ER_CANT_SET_PERSISTED", - 0x27e6: "ER_JSON_PARSE_ERROR", - 0x27e7: "ER_CONFIG_OPTION_WITHOUT_GROUP", - 0x27e8: "ER_VALGRIND_DO_QUICK_LEAK_CHECK", - 0x27e9: "ER_VALGRIND_COUNT_LEAKS", - 0x27ea: "ER_LOAD_DATA_INFILE_FAILED_IN_UNEXPECTED_WAY", - 0x27eb: "ER_UNKNOWN_ERROR_NUMBER", - 0x27ec: "ER_UDF_CANT_ALLOC_FOR_STRUCTURES", - 0x27ed: "ER_UDF_CANT_ALLOC_FOR_FUNCTION", - 0x27ee: "ER_UDF_INVALID_ROW_IN_FUNCTION_TABLE", - 0x27ef: "ER_UDF_CANT_OPEN_FUNCTION_TABLE", - 0x27f0: "ER_XA_RECOVER_FOUND_TRX_IN_SE", - 0x27f1: "ER_XA_RECOVER_FOUND_XA_TRX", - 0x27f2: "ER_XA_IGNORING_XID", - 0x27f3: "ER_XA_COMMITTING_XID", - 0x27f4: "ER_XA_ROLLING_BACK_XID", - 0x27f5: "ER_XA_STARTING_RECOVERY", - 0x27f6: "ER_XA_NO_MULTI_2PC_HEURISTIC_RECOVER", - 0x27f7: "ER_XA_RECOVER_EXPLANATION", - 0x27f8: "ER_XA_RECOVERY_DONE", - 0x27f9: "ER_TRX_GTID_COLLECT_REJECT", - 0x27fa: "ER_SQL_AUTHOR_DEFAULT_ROLES_FAIL", - 0x27fb: "ER_SQL_USER_TABLE_CREATE_WARNING", - 0x27fc: "ER_SQL_USER_TABLE_ALTER_WARNING", - 0x27fd: "ER_ROW_IN_WRONG_PARTITION_PLEASE_REPAIR", - 0x27fe: "ER_MYISAM_CRASHED_ERROR_IN_THREAD", - 0x27ff: "ER_MYISAM_CRASHED_ERROR_IN", + 0x279A: "ER_END_INITFILE", + 0x279B: "ER_CHANGED_MAX_OPEN_FILES", + 0x279C: "ER_CANT_INCREASE_MAX_OPEN_FILES", + 0x279D: "ER_CHANGED_MAX_CONNECTIONS", + 0x279E: "ER_CHANGED_TABLE_OPEN_CACHE", + 0x279F: "ER_THE_USER_ABIDES", + 0x27A0: "ER_RPL_CANT_ADD_DO_TABLE", + 0x27A1: "ER_RPL_CANT_ADD_IGNORE_TABLE", + 0x27A2: "ER_TRACK_VARIABLES_BOGUS", + 0x27A3: "ER_EXCESS_ARGUMENTS", + 0x27A4: "ER_VERBOSE_HINT", + 0x27A5: "ER_CANT_READ_ERRMSGS", + 0x27A6: "ER_CANT_INIT_DBS", + 0x27A7: "ER_LOG_OUTPUT_CONTRADICTORY", + 0x27A8: "ER_NO_CSV_NO_LOG_TABLES", + 0x27A9: "ER_RPL_REWRITEDB_MISSING_ARROW", + 0x27AA: "ER_RPL_REWRITEDB_EMPTY_FROM", + 0x27AB: "ER_RPL_REWRITEDB_EMPTY_TO", + 0x27AC: "ER_LOG_FILES_GIVEN_LOG_OUTPUT_IS_TABLE", + 0x27AD: "ER_LOG_FILE_INVALID", + 0x27AE: "ER_LOWER_CASE_TABLE_NAMES_CS_DD_ON_CI_FS_UNSUPPORTED", + 0x27AF: "ER_LOWER_CASE_TABLE_NAMES_USING_2", + 0x27B0: "ER_LOWER_CASE_TABLE_NAMES_USING_0", + 0x27B1: "ER_NEED_LOG_BIN", + 0x27B2: "ER_NEED_FILE_INSTEAD_OF_DIR", + 0x27B3: "ER_LOG_BIN_BETTER_WITH_NAME", + 0x27B4: "ER_BINLOG_NEEDS_SERVERID", + 0x27B5: "ER_RPL_CANT_MAKE_PATHS", + 0x27B6: "ER_CANT_INITIALIZE_GTID", + 0x27B7: "ER_CANT_INITIALIZE_EARLY_PLUGINS", + 0x27B8: "ER_CANT_INITIALIZE_BUILTIN_PLUGINS", + 0x27B9: "ER_CANT_INITIALIZE_DYNAMIC_PLUGINS", + 0x27BA: "ER_PERFSCHEMA_INIT_FAILED", + 0x27BB: "ER_STACKSIZE_UNEXPECTED", + 0x27BC: "ER_CANT_SET_DATADIR", + 0x27BD: "ER_CANT_STAT_DATADIR", + 0x27BE: "ER_CANT_CHOWN_DATADIR", + 0x27BF: "ER_CANT_SET_UP_PERSISTED_VALUES", + 0x27C0: "ER_CANT_SAVE_GTIDS", + 0x27C1: "ER_AUTH_CANT_SET_DEFAULT_PLUGIN", + 0x27C2: "ER_CANT_JOIN_SHUTDOWN_THREAD", + 0x27C3: "ER_CANT_HASH_DO_AND_IGNORE_RULES", + 0x27C4: "ER_CANT_OPEN_CA", + 0x27C5: "ER_CANT_ACCESS_CAPATH", + 0x27C6: "ER_SSL_TRYING_DATADIR_DEFAULTS", + 0x27C7: "ER_AUTO_OPTIONS_FAILED", + 0x27C8: "ER_CANT_INIT_TIMER", + 0x27C9: "ER_SERVERID_TOO_LARGE", + 0x27CA: "ER_DEFAULT_SE_UNAVAILABLE", + 0x27CB: "ER_CANT_OPEN_ERROR_LOG", + 0x27CC: "ER_INVALID_ERROR_LOG_NAME", + 0x27CD: "ER_RPL_INFINITY_DENIED", + 0x27CE: "ER_RPL_INFINITY_IGNORED", + 0x27CF: "ER_NDB_TABLES_NOT_READY", + 0x27D0: "ER_TABLE_CHECK_INTACT", + 0x27D1: "ER_DD_TABLESPACE_NOT_FOUND", + 0x27D2: "ER_DD_TRG_CONNECTION_COLLATION_MISSING", + 0x27D3: "ER_DD_TRG_DB_COLLATION_MISSING", + 0x27D4: "ER_DD_TRG_DEFINER_OOM", + 0x27D5: "ER_DD_TRG_FILE_UNREADABLE", + 0x27D6: "ER_TRG_CANT_PARSE", + 0x27D7: "ER_DD_TRG_CANT_ADD", + 0x27D8: "ER_DD_CANT_RESOLVE_VIEW", + 0x27D9: "ER_DD_VIEW_WITHOUT_DEFINER", + 0x27DA: "ER_PLUGIN_INIT_FAILED", + 0x27DB: "ER_RPL_TRX_DELEGATES_INIT_FAILED", + 0x27DC: "ER_RPL_BINLOG_STORAGE_DELEGATES_INIT_FAILED", + 0x27DD: "ER_RPL_BINLOG_TRANSMIT_DELEGATES_INIT_FAILED", + 0x27DE: "ER_RPL_BINLOG_RELAY_DELEGATES_INIT_FAILED", + 0x27DF: "ER_RPL_PLUGIN_FUNCTION_FAILED", + 0x27E0: "ER_SQL_HA_READ_FAILED", + 0x27E1: "ER_SR_BOGUS_VALUE", + 0x27E2: "ER_SR_INVALID_CONTEXT", + 0x27E3: "ER_READING_TABLE_FAILED", + 0x27E4: "ER_DES_FILE_WRONG_KEY", + 0x27E5: "ER_CANT_SET_PERSISTED", + 0x27E6: "ER_JSON_PARSE_ERROR", + 0x27E7: "ER_CONFIG_OPTION_WITHOUT_GROUP", + 0x27E8: "ER_VALGRIND_DO_QUICK_LEAK_CHECK", + 0x27E9: "ER_VALGRIND_COUNT_LEAKS", + 0x27EA: "ER_LOAD_DATA_INFILE_FAILED_IN_UNEXPECTED_WAY", + 0x27EB: "ER_UNKNOWN_ERROR_NUMBER", + 0x27EC: "ER_UDF_CANT_ALLOC_FOR_STRUCTURES", + 0x27ED: "ER_UDF_CANT_ALLOC_FOR_FUNCTION", + 0x27EE: "ER_UDF_INVALID_ROW_IN_FUNCTION_TABLE", + 0x27EF: "ER_UDF_CANT_OPEN_FUNCTION_TABLE", + 0x27F0: "ER_XA_RECOVER_FOUND_TRX_IN_SE", + 0x27F1: "ER_XA_RECOVER_FOUND_XA_TRX", + 0x27F2: "ER_XA_IGNORING_XID", + 0x27F3: "ER_XA_COMMITTING_XID", + 0x27F4: "ER_XA_ROLLING_BACK_XID", + 0x27F5: "ER_XA_STARTING_RECOVERY", + 0x27F6: "ER_XA_NO_MULTI_2PC_HEURISTIC_RECOVER", + 0x27F7: "ER_XA_RECOVER_EXPLANATION", + 0x27F8: "ER_XA_RECOVERY_DONE", + 0x27F9: "ER_TRX_GTID_COLLECT_REJECT", + 0x27FA: "ER_SQL_AUTHOR_DEFAULT_ROLES_FAIL", + 0x27FB: "ER_SQL_USER_TABLE_CREATE_WARNING", + 0x27FC: "ER_SQL_USER_TABLE_ALTER_WARNING", + 0x27FD: "ER_ROW_IN_WRONG_PARTITION_PLEASE_REPAIR", + 0x27FE: "ER_MYISAM_CRASHED_ERROR_IN_THREAD", + 0x27FF: "ER_MYISAM_CRASHED_ERROR_IN", 0x2800: "ER_TOO_MANY_STORAGE_ENGINES", 0x2801: "ER_SE_TYPECODE_CONFLICT", 0x2802: "ER_TRX_WRITE_SET_OOM", @@ -1606,12 +1606,12 @@ 0x2807: "ER_CONN_PIP_CANT_CREATE_EVENT", 0x2808: "ER_CONN_PIP_CANT_CREATE_PIPE", 0x2809: "ER_CONN_PER_THREAD_NO_THREAD", - 0x280a: "ER_CONN_TCP_NO_SOCKET", - 0x280b: "ER_CONN_TCP_CREATED", - 0x280c: "ER_CONN_TCP_ADDRESS", - 0x280d: "ER_CONN_TCP_IPV6_AVAILABLE", - 0x280e: "ER_CONN_TCP_IPV6_UNAVAILABLE", - 0x280f: "ER_CONN_TCP_ERROR_WITH_STRERROR", + 0x280A: "ER_CONN_TCP_NO_SOCKET", + 0x280B: "ER_CONN_TCP_CREATED", + 0x280C: "ER_CONN_TCP_ADDRESS", + 0x280D: "ER_CONN_TCP_IPV6_AVAILABLE", + 0x280E: "ER_CONN_TCP_IPV6_UNAVAILABLE", + 0x280F: "ER_CONN_TCP_ERROR_WITH_STRERROR", 0x2810: "ER_CONN_TCP_CANT_RESOLVE_HOSTNAME", 0x2811: "ER_CONN_TCP_IS_THERE_ANOTHER_USING_PORT", 0x2812: "ER_CONN_UNIX_IS_THERE_ANOTHER_USING_SOCKET", @@ -1622,12 +1622,12 @@ 0x2817: "ER_CONN_TCP_IP_NOT_LOGGED", 0x2818: "ER_CONN_TCP_RESOLVE_INFO", 0x2819: "ER_CONN_TCP_START_FAIL", - 0x281a: "ER_CONN_TCP_LISTEN_FAIL", - 0x281b: "ER_CONN_UNIX_PATH_TOO_LONG", - 0x281c: "ER_CONN_UNIX_LOCK_FILE_FAIL", - 0x281d: "ER_CONN_UNIX_NO_FD", - 0x281e: "ER_CONN_UNIX_NO_BIND_NO_START", - 0x281f: "ER_CONN_UNIX_LISTEN_FAILED", + 0x281A: "ER_CONN_TCP_LISTEN_FAIL", + 0x281B: "ER_CONN_UNIX_PATH_TOO_LONG", + 0x281C: "ER_CONN_UNIX_LOCK_FILE_FAIL", + 0x281D: "ER_CONN_UNIX_NO_FD", + 0x281E: "ER_CONN_UNIX_NO_BIND_NO_START", + 0x281F: "ER_CONN_UNIX_LISTEN_FAILED", 0x2820: "ER_CONN_UNIX_LOCK_FILE_GIVING_UP", 0x2821: "ER_CONN_UNIX_LOCK_FILE_CANT_CREATE", 0x2822: "ER_CONN_UNIX_LOCK_FILE_CANT_OPEN", @@ -1638,12 +1638,12 @@ 0x2827: "ER_CONN_UNIX_LOCK_FILE_CANT_DELETE", 0x2828: "ER_CONN_UNIX_LOCK_FILE_CANT_SYNC", 0x2829: "ER_CONN_UNIX_LOCK_FILE_CANT_CLOSE", - 0x282a: "ER_CONN_SOCKET_SELECT_FAILED", - 0x282b: "ER_CONN_SOCKET_ACCEPT_FAILED", - 0x282c: "ER_AUTH_RSA_CANT_FIND", - 0x282d: "ER_AUTH_RSA_CANT_PARSE", - 0x282e: "ER_AUTH_RSA_CANT_READ", - 0x282f: "ER_AUTH_RSA_FILES_NOT_FOUND", + 0x282A: "ER_CONN_SOCKET_SELECT_FAILED", + 0x282B: "ER_CONN_SOCKET_ACCEPT_FAILED", + 0x282C: "ER_AUTH_RSA_CANT_FIND", + 0x282D: "ER_AUTH_RSA_CANT_PARSE", + 0x282E: "ER_AUTH_RSA_CANT_READ", + 0x282F: "ER_AUTH_RSA_FILES_NOT_FOUND", 0x2830: "ER_CONN_ATTR_TRUNCATED", 0x2831: "ER_X509_CIPHERS_MISMATCH", 0x2832: "ER_X509_ISSUER_MISMATCH", @@ -1654,12 +1654,12 @@ 0x2837: "ER_X509_CANT_CHMOD_KEY", 0x2838: "ER_X509_CANT_READ_CA_KEY", 0x2839: "ER_X509_CANT_READ_CA_CERT", - 0x283a: "ER_X509_CANT_CREATE_CERT", - 0x283b: "ER_X509_CANT_WRITE_CERT", - 0x283c: "ER_AUTH_CANT_CREATE_RSA_PAIR", - 0x283d: "ER_AUTH_CANT_WRITE_PRIVKEY", - 0x283e: "ER_AUTH_CANT_WRITE_PUBKEY", - 0x283f: "ER_AUTH_SSL_CONF_PREVENTS_CERT_GENERATION", + 0x283A: "ER_X509_CANT_CREATE_CERT", + 0x283B: "ER_X509_CANT_WRITE_CERT", + 0x283C: "ER_AUTH_CANT_CREATE_RSA_PAIR", + 0x283D: "ER_AUTH_CANT_WRITE_PRIVKEY", + 0x283E: "ER_AUTH_CANT_WRITE_PUBKEY", + 0x283F: "ER_AUTH_SSL_CONF_PREVENTS_CERT_GENERATION", 0x2840: "ER_AUTH_USING_EXISTING_CERTS", 0x2841: "ER_AUTH_CERTS_SAVED_TO_DATADIR", 0x2842: "ER_AUTH_CERT_GENERATION_DISABLED", @@ -1670,11 +1670,11 @@ 0x2847: "ER_AUTHCACHE_PROXIES_PRIV_SKIPPED_NEEDS_RESOLVE", 0x2848: "ER_AUTHCACHE_PLUGIN_MISSING", 0x2849: "ER_AUTHCACHE_PLUGIN_CONFIG", - 0x284b: "ER_AUTHCACHE_USER_SKIPPED_NEEDS_RESOLVE", - 0x284c: "ER_AUTHCACHE_USER_TABLE_DODGY", - 0x284d: "ER_AUTHCACHE_USER_IGNORED_DEPRECATED_PASSWORD", - 0x284e: "ER_AUTHCACHE_USER_IGNORED_NEEDS_PLUGIN", - 0x284f: "ER_AUTHCACHE_USER_IGNORED_INVALID_PASSWORD", + 0x284B: "ER_AUTHCACHE_USER_SKIPPED_NEEDS_RESOLVE", + 0x284C: "ER_AUTHCACHE_USER_TABLE_DODGY", + 0x284D: "ER_AUTHCACHE_USER_IGNORED_DEPRECATED_PASSWORD", + 0x284E: "ER_AUTHCACHE_USER_IGNORED_NEEDS_PLUGIN", + 0x284F: "ER_AUTHCACHE_USER_IGNORED_INVALID_PASSWORD", 0x2850: "ER_AUTHCACHE_EXPIRED_PASSWORD_UNSUPPORTED", 0x2851: "ER_NO_SUPER_WITHOUT_USER_PLUGIN", 0x2852: "ER_AUTHCACHE_DB_IGNORED_EMPTY_NAME", @@ -1685,12 +1685,12 @@ 0x2857: "ER_AUTHCACHE_CANT_INIT_GRANT_SUBSYSTEM", 0x2858: "ER_AUTHCACHE_PROCS_PRIV_SKIPPED_NEEDS_RESOLVE", 0x2859: "ER_AUTHCACHE_PROCS_PRIV_ENTRY_IGNORED_BAD_ROUTINE_TYPE", - 0x285a: "ER_AUTHCACHE_TABLES_PRIV_SKIPPED_NEEDS_RESOLVE", - 0x285b: "ER_USER_NOT_IN_EXTRA_USERS_BINLOG_POSSIBLY_INCOMPLETE", - 0x285c: "ER_DD_SCHEMA_NOT_FOUND", - 0x285d: "ER_DD_TABLE_NOT_FOUND", - 0x285e: "ER_DD_SE_INIT_FAILED", - 0x285f: "ER_DD_ABORTING_PARTIAL_UPGRADE", + 0x285A: "ER_AUTHCACHE_TABLES_PRIV_SKIPPED_NEEDS_RESOLVE", + 0x285B: "ER_USER_NOT_IN_EXTRA_USERS_BINLOG_POSSIBLY_INCOMPLETE", + 0x285C: "ER_DD_SCHEMA_NOT_FOUND", + 0x285D: "ER_DD_TABLE_NOT_FOUND", + 0x285E: "ER_DD_SE_INIT_FAILED", + 0x285F: "ER_DD_ABORTING_PARTIAL_UPGRADE", 0x2860: "ER_DD_FRM_EXISTS_FOR_TABLE", 0x2861: "ER_DD_CREATED_FOR_UPGRADE", 0x2862: "ER_ERRMSG_CANT_FIND_FILE", @@ -1701,12 +1701,12 @@ 0x2867: "ER_TABLE_INCOMPATIBLE_DECIMAL_FIELD", 0x2868: "ER_TABLE_INCOMPATIBLE_YEAR_FIELD", 0x2869: "ER_INVALID_CHARSET_AND_DEFAULT_IS_MB", - 0x286a: "ER_TABLE_WRONG_KEY_DEFINITION", - 0x286b: "ER_CANT_OPEN_FRM_FILE", - 0x286c: "ER_CANT_READ_FRM_FILE", - 0x286d: "ER_TABLE_CREATED_WITH_DIFFERENT_VERSION", - 0x286e: "ER_VIEW_UNPARSABLE", - 0x286f: "ER_FILE_TYPE_UNKNOWN", + 0x286A: "ER_TABLE_WRONG_KEY_DEFINITION", + 0x286B: "ER_CANT_OPEN_FRM_FILE", + 0x286C: "ER_CANT_READ_FRM_FILE", + 0x286D: "ER_TABLE_CREATED_WITH_DIFFERENT_VERSION", + 0x286E: "ER_VIEW_UNPARSABLE", + 0x286F: "ER_FILE_TYPE_UNKNOWN", 0x2870: "ER_INVALID_INFO_IN_FRM", 0x2871: "ER_CANT_OPEN_AND_LOCK_PRIVILEGE_TABLES", 0x2872: "ER_AUDIT_PLUGIN_DOES_NOT_SUPPORT_AUDIT_AUTH_EVENTS", @@ -1717,12 +1717,12 @@ 0x2877: "ER_TZ_TOO_MANY_LEAPS_IN_LEAP_SECOND_TABLE", 0x2878: "ER_TZ_ERROR_LOADING_LEAP_SECOND_TABLE", 0x2879: "ER_TZ_UNKNOWN_OR_ILLEGAL_DEFAULT_TIME_ZONE", - 0x287a: "ER_TZ_CANT_FIND_DESCRIPTION_FOR_TIME_ZONE", - 0x287b: "ER_TZ_CANT_FIND_DESCRIPTION_FOR_TIME_ZONE_ID", - 0x287c: "ER_TZ_TRANSITION_TYPE_TABLE_TYPE_TOO_LARGE", - 0x287d: "ER_TZ_TRANSITION_TYPE_TABLE_ABBREVIATIONS_EXCEED_SPACE", - 0x287e: "ER_TZ_TRANSITION_TYPE_TABLE_LOAD_ERROR", - 0x287f: "ER_TZ_TRANSITION_TABLE_TOO_MANY_TRANSITIONS", + 0x287A: "ER_TZ_CANT_FIND_DESCRIPTION_FOR_TIME_ZONE", + 0x287B: "ER_TZ_CANT_FIND_DESCRIPTION_FOR_TIME_ZONE_ID", + 0x287C: "ER_TZ_TRANSITION_TYPE_TABLE_TYPE_TOO_LARGE", + 0x287D: "ER_TZ_TRANSITION_TYPE_TABLE_ABBREVIATIONS_EXCEED_SPACE", + 0x287E: "ER_TZ_TRANSITION_TYPE_TABLE_LOAD_ERROR", + 0x287F: "ER_TZ_TRANSITION_TABLE_TOO_MANY_TRANSITIONS", 0x2880: "ER_TZ_TRANSITION_TABLE_BAD_TRANSITION_TYPE", 0x2881: "ER_TZ_TRANSITION_TABLE_LOAD_ERROR", 0x2882: "ER_TZ_NO_TRANSITION_TYPES_IN_TIME_ZONE", @@ -1733,12 +1733,12 @@ 0x2887: "ER_SLAVE_SQL_THREAD_STOPPED_UNTIL_CONDITION_BAD", 0x2888: "ER_SLAVE_SQL_THREAD_STOPPED_UNTIL_POSITION_REACHED", 0x2889: "ER_SLAVE_SQL_THREAD_STOPPED_BEFORE_GTIDS_ALREADY_APPLIED", - 0x288a: "ER_SLAVE_SQL_THREAD_STOPPED_BEFORE_GTIDS_REACHED", - 0x288b: "ER_SLAVE_SQL_THREAD_STOPPED_AFTER_GTIDS_REACHED", - 0x288c: "ER_SLAVE_SQL_THREAD_STOPPED_GAP_TRX_PROCESSED", - 0x288d: "ER_GROUP_REPLICATION_PLUGIN_NOT_INSTALLED", - 0x288e: "ER_GTID_ALREADY_ADDED_BY_USER", - 0x288f: "ER_FAILED_TO_DELETE_FROM_GTID_EXECUTED_TABLE", + 0x288A: "ER_SLAVE_SQL_THREAD_STOPPED_BEFORE_GTIDS_REACHED", + 0x288B: "ER_SLAVE_SQL_THREAD_STOPPED_AFTER_GTIDS_REACHED", + 0x288C: "ER_SLAVE_SQL_THREAD_STOPPED_GAP_TRX_PROCESSED", + 0x288D: "ER_GROUP_REPLICATION_PLUGIN_NOT_INSTALLED", + 0x288E: "ER_GTID_ALREADY_ADDED_BY_USER", + 0x288F: "ER_FAILED_TO_DELETE_FROM_GTID_EXECUTED_TABLE", 0x2890: "ER_FAILED_TO_COMPRESS_GTID_EXECUTED_TABLE", 0x2891: "ER_FAILED_TO_COMPRESS_GTID_EXECUTED_TABLE_OOM", 0x2892: "ER_FAILED_TO_INIT_THREAD_ATTR_FOR_GTID_TABLE_COMPRESSION", @@ -1749,108 +1749,108 @@ 0x2897: "ER_NPIPE_PIPE_ALREADY_IN_USE", 0x2898: "ER_NDB_SLAVE_SAW_EPOCH_LOWER_THAN_PREVIOUS_ON_START", 0x2899: "ER_NDB_SLAVE_SAW_EPOCH_LOWER_THAN_PREVIOUS", - 0x289a: "ER_NDB_SLAVE_SAW_ALREADY_COMMITTED_EPOCH", - 0x289b: "ER_NDB_SLAVE_PREVIOUS_EPOCH_NOT_COMMITTED", - 0x289c: "ER_NDB_SLAVE_MISSING_DATA_FOR_TIMESTAMP_COLUMN", - 0x289d: "ER_NDB_SLAVE_LOGGING_EXCEPTIONS_TO", - 0x289e: "ER_NDB_SLAVE_LOW_EPOCH_RESOLUTION", - 0x289f: "ER_NDB_INFO_FOUND_UNEXPECTED_FIELD_TYPE", - 0x28a0: "ER_NDB_INFO_FAILED_TO_CREATE_NDBINFO", - 0x28a1: "ER_NDB_INFO_FAILED_TO_INIT_NDBINFO", - 0x28a2: "ER_NDB_CLUSTER_WRONG_NUMBER_OF_FUNCTION_ARGUMENTS", - 0x28a3: "ER_NDB_CLUSTER_SCHEMA_INFO", - 0x28a4: "ER_NDB_CLUSTER_GENERIC_MESSAGE", - 0x28a5: "ER_RPL_CANT_OPEN_INFO_TABLE", - 0x28a6: "ER_RPL_CANT_SCAN_INFO_TABLE", - 0x28a7: "ER_RPL_CORRUPTED_INFO_TABLE", - 0x28a8: "ER_RPL_CORRUPTED_KEYS_IN_INFO_TABLE", - 0x28a9: "ER_RPL_WORKER_ID_IS", - 0x28aa: "ER_RPL_INCONSISTENT_TIMESTAMPS_IN_TRX", - 0x28ab: "ER_RPL_INCONSISTENT_SEQUENCE_NO_IN_TRX", - 0x28ac: "ER_RPL_CHANNELS_REQUIRE_TABLES_AS_INFO_REPOSITORIES", - 0x28ad: "ER_RPL_CHANNELS_REQUIRE_NON_ZERO_SERVER_ID", - 0x28ae: "ER_RPL_REPO_SHOULD_BE_TABLE", - 0x28af: "ER_RPL_ERROR_CREATING_MASTER_INFO", - 0x28b0: "ER_RPL_ERROR_CHANGING_MASTER_INFO_REPO_TYPE", - 0x28b1: "ER_RPL_CHANGING_RELAY_LOG_INFO_REPO_TYPE_FAILED_DUE_TO_GAPS", - 0x28b2: "ER_RPL_ERROR_CREATING_RELAY_LOG_INFO", - 0x28b3: "ER_RPL_ERROR_CHANGING_RELAY_LOG_INFO_REPO_TYPE", - 0x28b4: "ER_RPL_FAILED_TO_DELETE_FROM_SLAVE_WORKERS_INFO_REPOSITORY", - 0x28b5: "ER_RPL_FAILED_TO_RESET_STATE_IN_SLAVE_INFO_REPOSITORY", - 0x28b6: "ER_RPL_ERROR_CHECKING_REPOSITORY", - 0x28b7: "ER_RPL_SLAVE_GENERIC_MESSAGE", - 0x28b8: "ER_RPL_SLAVE_COULD_NOT_CREATE_CHANNEL_LIST", - 0x28b9: "ER_RPL_MULTISOURCE_REQUIRES_TABLE_TYPE_REPOSITORIES", - 0x28ba: "ER_RPL_SLAVE_FAILED_TO_INIT_A_MASTER_INFO_STRUCTURE", - 0x28bb: "ER_RPL_SLAVE_FAILED_TO_INIT_MASTER_INFO_STRUCTURE", - 0x28bc: "ER_RPL_SLAVE_FAILED_TO_CREATE_CHANNEL_FROM_MASTER_INFO", - 0x28bd: "ER_RPL_FAILED_TO_CREATE_NEW_INFO_FILE", - 0x28be: "ER_RPL_FAILED_TO_CREATE_CACHE_FOR_INFO_FILE", - 0x28bf: "ER_RPL_FAILED_TO_OPEN_INFO_FILE", - 0x28c0: "ER_RPL_GTID_MEMORY_FINALLY_AVAILABLE", - 0x28c1: "ER_SERVER_COST_UNKNOWN_COST_CONSTANT", - 0x28c2: "ER_SERVER_COST_INVALID_COST_CONSTANT", - 0x28c3: "ER_ENGINE_COST_UNKNOWN_COST_CONSTANT", - 0x28c4: "ER_ENGINE_COST_UNKNOWN_STORAGE_ENGINE", - 0x28c5: "ER_ENGINE_COST_INVALID_DEVICE_TYPE_FOR_SE", - 0x28c6: "ER_ENGINE_COST_INVALID_CONST_CONSTANT_FOR_SE_AND_DEVICE", - 0x28c7: "ER_SERVER_COST_FAILED_TO_READ", - 0x28c8: "ER_ENGINE_COST_FAILED_TO_READ", - 0x28c9: "ER_FAILED_TO_OPEN_COST_CONSTANT_TABLES", - 0x28ca: "ER_RPL_UNSUPPORTED_UNIGNORABLE_EVENT_IN_STREAM", - 0x28cb: "ER_RPL_GTID_LOG_EVENT_IN_STREAM", - 0x28cc: "ER_RPL_UNEXPECTED_BEGIN_IN_STREAM", - 0x28cd: "ER_RPL_UNEXPECTED_COMMIT_ROLLBACK_OR_XID_LOG_EVENT_IN_STREAM", - 0x28ce: "ER_RPL_UNEXPECTED_XA_ROLLBACK_IN_STREAM", - 0x28cf: "ER_EVENT_EXECUTION_FAILED_CANT_AUTHENTICATE_USER", - 0x28d0: "ER_EVENT_EXECUTION_FAILED_USER_LOST_EVEN_PRIVILEGE", - 0x28d1: "ER_EVENT_ERROR_DURING_COMPILATION", - 0x28d2: "ER_EVENT_DROPPING", - 0x28d3: "ER_NDB_SCHEMA_GENERIC_MESSAGE", - 0x28d4: "ER_RPL_INCOMPATIBLE_DECIMAL_IN_RBR", - 0x28d5: "ER_INIT_ROOT_WITHOUT_PASSWORD", - 0x28d6: "ER_INIT_GENERATING_TEMP_PASSWORD_FOR_ROOT", - 0x28d7: "ER_INIT_CANT_OPEN_BOOTSTRAP_FILE", - 0x28d8: "ER_INIT_BOOTSTRAP_COMPLETE", - 0x28d9: "ER_INIT_DATADIR_NOT_EMPTY_WONT_INITIALIZE", - 0x28da: "ER_INIT_DATADIR_EXISTS_WONT_INITIALIZE", - 0x28db: "ER_INIT_DATADIR_EXISTS_AND_PATH_TOO_LONG_WONT_INITIALIZE", - 0x28dc: "ER_INIT_DATADIR_EXISTS_AND_NOT_WRITABLE_WONT_INITIALIZE", - 0x28dd: "ER_INIT_CREATING_DD", - 0x28de: "ER_RPL_BINLOG_STARTING_DUMP", - 0x28df: "ER_RPL_BINLOG_MASTER_SENDS_HEARTBEAT", - 0x28e0: "ER_RPL_BINLOG_SKIPPING_REMAINING_HEARTBEAT_INFO", - 0x28e1: "ER_RPL_BINLOG_MASTER_USES_CHECKSUM_AND_SLAVE_CANT", - 0x28e2: "ER_NDB_QUERY_FAILED", - 0x28e3: "ER_KILLING_THREAD", - 0x28e4: "ER_DETACHING_SESSION_LEFT_BY_PLUGIN", - 0x28e5: "ER_CANT_DETACH_SESSION_LEFT_BY_PLUGIN", - 0x28e6: "ER_DETACHED_SESSIONS_LEFT_BY_PLUGIN", - 0x28e7: "ER_FAILED_TO_DECREMENT_NUMBER_OF_THREADS", - 0x28e8: "ER_PLUGIN_DID_NOT_DEINITIALIZE_THREADS", - 0x28e9: "ER_KILLED_THREADS_OF_PLUGIN", - 0x28ea: "ER_NDB_SLAVE_MAX_REPLICATED_EPOCH_UNKNOWN", - 0x28eb: "ER_NDB_SLAVE_MAX_REPLICATED_EPOCH_SET_TO", - 0x28ec: "ER_NDB_NODE_ID_AND_MANAGEMENT_SERVER_INFO", - 0x28ed: "ER_NDB_DISCONNECT_INFO", - 0x28ee: "ER_NDB_COLUMN_DEFAULTS_DIFFER", - 0x28ef: "ER_NDB_COLUMN_SHOULD_NOT_HAVE_NATIVE_DEFAULT", - 0x28f0: "ER_NDB_FIELD_INFO", - 0x28f1: "ER_NDB_COLUMN_INFO", - 0x28f2: "ER_NDB_OOM_IN_FIX_UNIQUE_INDEX_ATTR_ORDER", - 0x28f3: "ER_NDB_SLAVE_MALFORMED_EVENT_RECEIVED_ON_TABLE", - 0x28f4: "ER_NDB_SLAVE_CONFLICT_FUNCTION_REQUIRES_ROLE", - 0x28f5: "ER_NDB_SLAVE_CONFLICT_DETECTION_REQUIRES_TRANSACTION_IDS", - 0x28f6: "ER_NDB_SLAVE_BINLOG_MISSING_INFO_FOR_CONFLICT_DETECTION", - 0x28f7: "ER_NDB_ERROR_IN_READAUTOINCREMENTVALUE", - 0x28f8: "ER_NDB_FOUND_UNCOMMITTED_AUTOCOMMIT", - 0x28f9: "ER_NDB_SLAVE_TOO_MANY_RETRIES", - 0x28fa: "ER_NDB_SLAVE_ERROR_IN_UPDATE_CREATE_INFO", - 0x28fb: "ER_NDB_SLAVE_CANT_ALLOCATE_TABLE_SHARE", - 0x28fc: "ER_NDB_BINLOG_ERROR_INFO_FROM_DA", - 0x28fd: "ER_NDB_BINLOG_CREATE_TABLE_EVENT", - 0x28fe: "ER_NDB_BINLOG_FAILED_CREATE_TABLE_EVENT_OPERATIONS", - 0x28ff: "ER_NDB_BINLOG_RENAME_EVENT", + 0x289A: "ER_NDB_SLAVE_SAW_ALREADY_COMMITTED_EPOCH", + 0x289B: "ER_NDB_SLAVE_PREVIOUS_EPOCH_NOT_COMMITTED", + 0x289C: "ER_NDB_SLAVE_MISSING_DATA_FOR_TIMESTAMP_COLUMN", + 0x289D: "ER_NDB_SLAVE_LOGGING_EXCEPTIONS_TO", + 0x289E: "ER_NDB_SLAVE_LOW_EPOCH_RESOLUTION", + 0x289F: "ER_NDB_INFO_FOUND_UNEXPECTED_FIELD_TYPE", + 0x28A0: "ER_NDB_INFO_FAILED_TO_CREATE_NDBINFO", + 0x28A1: "ER_NDB_INFO_FAILED_TO_INIT_NDBINFO", + 0x28A2: "ER_NDB_CLUSTER_WRONG_NUMBER_OF_FUNCTION_ARGUMENTS", + 0x28A3: "ER_NDB_CLUSTER_SCHEMA_INFO", + 0x28A4: "ER_NDB_CLUSTER_GENERIC_MESSAGE", + 0x28A5: "ER_RPL_CANT_OPEN_INFO_TABLE", + 0x28A6: "ER_RPL_CANT_SCAN_INFO_TABLE", + 0x28A7: "ER_RPL_CORRUPTED_INFO_TABLE", + 0x28A8: "ER_RPL_CORRUPTED_KEYS_IN_INFO_TABLE", + 0x28A9: "ER_RPL_WORKER_ID_IS", + 0x28AA: "ER_RPL_INCONSISTENT_TIMESTAMPS_IN_TRX", + 0x28AB: "ER_RPL_INCONSISTENT_SEQUENCE_NO_IN_TRX", + 0x28AC: "ER_RPL_CHANNELS_REQUIRE_TABLES_AS_INFO_REPOSITORIES", + 0x28AD: "ER_RPL_CHANNELS_REQUIRE_NON_ZERO_SERVER_ID", + 0x28AE: "ER_RPL_REPO_SHOULD_BE_TABLE", + 0x28AF: "ER_RPL_ERROR_CREATING_MASTER_INFO", + 0x28B0: "ER_RPL_ERROR_CHANGING_MASTER_INFO_REPO_TYPE", + 0x28B1: "ER_RPL_CHANGING_RELAY_LOG_INFO_REPO_TYPE_FAILED_DUE_TO_GAPS", + 0x28B2: "ER_RPL_ERROR_CREATING_RELAY_LOG_INFO", + 0x28B3: "ER_RPL_ERROR_CHANGING_RELAY_LOG_INFO_REPO_TYPE", + 0x28B4: "ER_RPL_FAILED_TO_DELETE_FROM_SLAVE_WORKERS_INFO_REPOSITORY", + 0x28B5: "ER_RPL_FAILED_TO_RESET_STATE_IN_SLAVE_INFO_REPOSITORY", + 0x28B6: "ER_RPL_ERROR_CHECKING_REPOSITORY", + 0x28B7: "ER_RPL_SLAVE_GENERIC_MESSAGE", + 0x28B8: "ER_RPL_SLAVE_COULD_NOT_CREATE_CHANNEL_LIST", + 0x28B9: "ER_RPL_MULTISOURCE_REQUIRES_TABLE_TYPE_REPOSITORIES", + 0x28BA: "ER_RPL_SLAVE_FAILED_TO_INIT_A_MASTER_INFO_STRUCTURE", + 0x28BB: "ER_RPL_SLAVE_FAILED_TO_INIT_MASTER_INFO_STRUCTURE", + 0x28BC: "ER_RPL_SLAVE_FAILED_TO_CREATE_CHANNEL_FROM_MASTER_INFO", + 0x28BD: "ER_RPL_FAILED_TO_CREATE_NEW_INFO_FILE", + 0x28BE: "ER_RPL_FAILED_TO_CREATE_CACHE_FOR_INFO_FILE", + 0x28BF: "ER_RPL_FAILED_TO_OPEN_INFO_FILE", + 0x28C0: "ER_RPL_GTID_MEMORY_FINALLY_AVAILABLE", + 0x28C1: "ER_SERVER_COST_UNKNOWN_COST_CONSTANT", + 0x28C2: "ER_SERVER_COST_INVALID_COST_CONSTANT", + 0x28C3: "ER_ENGINE_COST_UNKNOWN_COST_CONSTANT", + 0x28C4: "ER_ENGINE_COST_UNKNOWN_STORAGE_ENGINE", + 0x28C5: "ER_ENGINE_COST_INVALID_DEVICE_TYPE_FOR_SE", + 0x28C6: "ER_ENGINE_COST_INVALID_CONST_CONSTANT_FOR_SE_AND_DEVICE", + 0x28C7: "ER_SERVER_COST_FAILED_TO_READ", + 0x28C8: "ER_ENGINE_COST_FAILED_TO_READ", + 0x28C9: "ER_FAILED_TO_OPEN_COST_CONSTANT_TABLES", + 0x28CA: "ER_RPL_UNSUPPORTED_UNIGNORABLE_EVENT_IN_STREAM", + 0x28CB: "ER_RPL_GTID_LOG_EVENT_IN_STREAM", + 0x28CC: "ER_RPL_UNEXPECTED_BEGIN_IN_STREAM", + 0x28CD: "ER_RPL_UNEXPECTED_COMMIT_ROLLBACK_OR_XID_LOG_EVENT_IN_STREAM", + 0x28CE: "ER_RPL_UNEXPECTED_XA_ROLLBACK_IN_STREAM", + 0x28CF: "ER_EVENT_EXECUTION_FAILED_CANT_AUTHENTICATE_USER", + 0x28D0: "ER_EVENT_EXECUTION_FAILED_USER_LOST_EVEN_PRIVILEGE", + 0x28D1: "ER_EVENT_ERROR_DURING_COMPILATION", + 0x28D2: "ER_EVENT_DROPPING", + 0x28D3: "ER_NDB_SCHEMA_GENERIC_MESSAGE", + 0x28D4: "ER_RPL_INCOMPATIBLE_DECIMAL_IN_RBR", + 0x28D5: "ER_INIT_ROOT_WITHOUT_PASSWORD", + 0x28D6: "ER_INIT_GENERATING_TEMP_PASSWORD_FOR_ROOT", + 0x28D7: "ER_INIT_CANT_OPEN_BOOTSTRAP_FILE", + 0x28D8: "ER_INIT_BOOTSTRAP_COMPLETE", + 0x28D9: "ER_INIT_DATADIR_NOT_EMPTY_WONT_INITIALIZE", + 0x28DA: "ER_INIT_DATADIR_EXISTS_WONT_INITIALIZE", + 0x28DB: "ER_INIT_DATADIR_EXISTS_AND_PATH_TOO_LONG_WONT_INITIALIZE", + 0x28DC: "ER_INIT_DATADIR_EXISTS_AND_NOT_WRITABLE_WONT_INITIALIZE", + 0x28DD: "ER_INIT_CREATING_DD", + 0x28DE: "ER_RPL_BINLOG_STARTING_DUMP", + 0x28DF: "ER_RPL_BINLOG_MASTER_SENDS_HEARTBEAT", + 0x28E0: "ER_RPL_BINLOG_SKIPPING_REMAINING_HEARTBEAT_INFO", + 0x28E1: "ER_RPL_BINLOG_MASTER_USES_CHECKSUM_AND_SLAVE_CANT", + 0x28E2: "ER_NDB_QUERY_FAILED", + 0x28E3: "ER_KILLING_THREAD", + 0x28E4: "ER_DETACHING_SESSION_LEFT_BY_PLUGIN", + 0x28E5: "ER_CANT_DETACH_SESSION_LEFT_BY_PLUGIN", + 0x28E6: "ER_DETACHED_SESSIONS_LEFT_BY_PLUGIN", + 0x28E7: "ER_FAILED_TO_DECREMENT_NUMBER_OF_THREADS", + 0x28E8: "ER_PLUGIN_DID_NOT_DEINITIALIZE_THREADS", + 0x28E9: "ER_KILLED_THREADS_OF_PLUGIN", + 0x28EA: "ER_NDB_SLAVE_MAX_REPLICATED_EPOCH_UNKNOWN", + 0x28EB: "ER_NDB_SLAVE_MAX_REPLICATED_EPOCH_SET_TO", + 0x28EC: "ER_NDB_NODE_ID_AND_MANAGEMENT_SERVER_INFO", + 0x28ED: "ER_NDB_DISCONNECT_INFO", + 0x28EE: "ER_NDB_COLUMN_DEFAULTS_DIFFER", + 0x28EF: "ER_NDB_COLUMN_SHOULD_NOT_HAVE_NATIVE_DEFAULT", + 0x28F0: "ER_NDB_FIELD_INFO", + 0x28F1: "ER_NDB_COLUMN_INFO", + 0x28F2: "ER_NDB_OOM_IN_FIX_UNIQUE_INDEX_ATTR_ORDER", + 0x28F3: "ER_NDB_SLAVE_MALFORMED_EVENT_RECEIVED_ON_TABLE", + 0x28F4: "ER_NDB_SLAVE_CONFLICT_FUNCTION_REQUIRES_ROLE", + 0x28F5: "ER_NDB_SLAVE_CONFLICT_DETECTION_REQUIRES_TRANSACTION_IDS", + 0x28F6: "ER_NDB_SLAVE_BINLOG_MISSING_INFO_FOR_CONFLICT_DETECTION", + 0x28F7: "ER_NDB_ERROR_IN_READAUTOINCREMENTVALUE", + 0x28F8: "ER_NDB_FOUND_UNCOMMITTED_AUTOCOMMIT", + 0x28F9: "ER_NDB_SLAVE_TOO_MANY_RETRIES", + 0x28FA: "ER_NDB_SLAVE_ERROR_IN_UPDATE_CREATE_INFO", + 0x28FB: "ER_NDB_SLAVE_CANT_ALLOCATE_TABLE_SHARE", + 0x28FC: "ER_NDB_BINLOG_ERROR_INFO_FROM_DA", + 0x28FD: "ER_NDB_BINLOG_CREATE_TABLE_EVENT", + 0x28FE: "ER_NDB_BINLOG_FAILED_CREATE_TABLE_EVENT_OPERATIONS", + 0x28FF: "ER_NDB_BINLOG_RENAME_EVENT", 0x2900: "ER_NDB_BINLOG_FAILED_CREATE_EVENT_OPERATIONS_DURING_RENAME", 0x2901: "ER_NDB_UNEXPECTED_RENAME_TYPE", 0x2902: "ER_NDB_ERROR_IN_GET_AUTO_INCREMENT", @@ -1861,12 +1861,12 @@ 0x2907: "ER_NDB_TRAILING_SHARE_RELEASED_BY_CLOSE_CACHED_TABLES", 0x2908: "ER_NDB_SHARE_ALREADY_EXISTS", 0x2909: "ER_NDB_HANDLE_TRAILING_SHARE_INFO", - 0x290a: "ER_NDB_CLUSTER_GET_SHARE_INFO", - 0x290b: "ER_NDB_CLUSTER_REAL_FREE_SHARE_INFO", - 0x290c: "ER_NDB_CLUSTER_REAL_FREE_SHARE_DROP_FAILED", - 0x290d: "ER_NDB_CLUSTER_FREE_SHARE_INFO", - 0x290e: "ER_NDB_CLUSTER_MARK_SHARE_DROPPED_INFO", - 0x290f: "ER_NDB_CLUSTER_MARK_SHARE_DROPPED_DESTROYING_SHARE", + 0x290A: "ER_NDB_CLUSTER_GET_SHARE_INFO", + 0x290B: "ER_NDB_CLUSTER_REAL_FREE_SHARE_INFO", + 0x290C: "ER_NDB_CLUSTER_REAL_FREE_SHARE_DROP_FAILED", + 0x290D: "ER_NDB_CLUSTER_FREE_SHARE_INFO", + 0x290E: "ER_NDB_CLUSTER_MARK_SHARE_DROPPED_INFO", + 0x290F: "ER_NDB_CLUSTER_MARK_SHARE_DROPPED_DESTROYING_SHARE", 0x2910: "ER_NDB_CLUSTER_OOM_THD_NDB", 0x2911: "ER_NDB_BINLOG_NDB_TABLES_INITIALLY_READ_ONLY", 0x2912: "ER_NDB_UTIL_THREAD_OOM", @@ -1877,12 +1877,12 @@ 0x2917: "ER_DBUG_CHECK_SHARES_DROPPED", 0x2918: "ER_INVALID_OR_OLD_TABLE_OR_DB_NAME", 0x2919: "ER_TC_RECOVERING_AFTER_CRASH_USING", - 0x291a: "ER_TC_CANT_AUTO_RECOVER_WITH_TC_HEURISTIC_RECOVER", - 0x291b: "ER_TC_BAD_MAGIC_IN_TC_LOG", - 0x291c: "ER_TC_NEED_N_SE_SUPPORTING_2PC_FOR_RECOVERY", - 0x291d: "ER_TC_RECOVERY_FAILED_THESE_ARE_YOUR_OPTIONS", - 0x291e: "ER_TC_HEURISTIC_RECOVERY_MODE", - 0x291f: "ER_TC_HEURISTIC_RECOVERY_FAILED", + 0x291A: "ER_TC_CANT_AUTO_RECOVER_WITH_TC_HEURISTIC_RECOVER", + 0x291B: "ER_TC_BAD_MAGIC_IN_TC_LOG", + 0x291C: "ER_TC_NEED_N_SE_SUPPORTING_2PC_FOR_RECOVERY", + 0x291D: "ER_TC_RECOVERY_FAILED_THESE_ARE_YOUR_OPTIONS", + 0x291E: "ER_TC_HEURISTIC_RECOVERY_MODE", + 0x291F: "ER_TC_HEURISTIC_RECOVERY_FAILED", 0x2920: "ER_TC_RESTART_WITHOUT_TC_HEURISTIC_RECOVER", 0x2921: "ER_RPL_SLAVE_FAILED_TO_CREATE_OR_RECOVER_INFO_REPOSITORIES", 0x2922: "ER_RPL_SLAVE_AUTO_POSITION_IS_1_AND_GTID_MODE_IS_OFF", @@ -1893,12 +1893,12 @@ 0x2927: "ER_RPL_RECOVERY_ERROR_FREEING_IO_CACHE", 0x2928: "ER_RPL_RECOVERY_SKIPPED_GROUP_REPLICATION_CHANNEL", 0x2929: "ER_RPL_RECOVERY_ERROR", - 0x292a: "ER_RPL_RECOVERY_IO_ERROR_READING_RELAY_LOG_INDEX", - 0x292b: "ER_RPL_RECOVERY_FILE_MASTER_POS_INFO", - 0x292c: "ER_RPL_RECOVERY_REPLICATE_SAME_SERVER_ID_REQUIRES_POSITION", - 0x292d: "ER_RPL_MTS_RECOVERY_STARTING_COORDINATOR", - 0x292e: "ER_RPL_MTS_RECOVERY_FAILED_TO_START_COORDINATOR", - 0x292f: "ER_RPL_MTS_AUTOMATIC_RECOVERY_FAILED", + 0x292A: "ER_RPL_RECOVERY_IO_ERROR_READING_RELAY_LOG_INDEX", + 0x292B: "ER_RPL_RECOVERY_FILE_MASTER_POS_INFO", + 0x292C: "ER_RPL_RECOVERY_REPLICATE_SAME_SERVER_ID_REQUIRES_POSITION", + 0x292D: "ER_RPL_MTS_RECOVERY_STARTING_COORDINATOR", + 0x292E: "ER_RPL_MTS_RECOVERY_FAILED_TO_START_COORDINATOR", + 0x292F: "ER_RPL_MTS_AUTOMATIC_RECOVERY_FAILED", 0x2930: "ER_RPL_MTS_RECOVERY_CANT_OPEN_RELAY_LOG", 0x2931: "ER_RPL_MTS_RECOVERY_SUCCESSFUL", 0x2932: "ER_RPL_SERVER_ID_MISSING", @@ -1909,12 +1909,12 @@ 0x2937: "ER_RPL_SLAVE_SECONDS_BEHIND_MASTER_DUBIOUS", 0x2938: "ER_RPL_SLAVE_CANT_FLUSH_MASTER_INFO_FILE", 0x2939: "ER_RPL_SLAVE_REPORT_HOST_TOO_LONG", - 0x293a: "ER_RPL_SLAVE_REPORT_USER_TOO_LONG", - 0x293b: "ER_RPL_SLAVE_REPORT_PASSWORD_TOO_LONG", - 0x293c: "ER_RPL_SLAVE_ERROR_RETRYING", - 0x293d: "ER_RPL_SLAVE_ERROR_READING_FROM_SERVER", - 0x293e: "ER_RPL_SLAVE_DUMP_THREAD_KILLED_BY_MASTER", - 0x293f: "ER_RPL_MTS_STATISTICS", + 0x293A: "ER_RPL_SLAVE_REPORT_USER_TOO_LONG", + 0x293B: "ER_RPL_SLAVE_REPORT_PASSWORD_TOO_LONG", + 0x293C: "ER_RPL_SLAVE_ERROR_RETRYING", + 0x293D: "ER_RPL_SLAVE_ERROR_READING_FROM_SERVER", + 0x293E: "ER_RPL_SLAVE_DUMP_THREAD_KILLED_BY_MASTER", + 0x293F: "ER_RPL_MTS_STATISTICS", 0x2940: "ER_RPL_MTS_RECOVERY_COMPLETE", 0x2941: "ER_RPL_SLAVE_CANT_INIT_RELAY_LOG_POSITION", 0x2942: "ER_RPL_SLAVE_CONNECTED_TO_MASTER_REPLICATION_STARTED", @@ -1925,12 +1925,12 @@ 0x2947: "ER_RPL_LOG_ENTRY_EXCEEDS_SLAVE_MAX_ALLOWED_PACKET", 0x2948: "ER_RPL_SLAVE_STOPPING_AS_MASTER_OOM", 0x2949: "ER_RPL_SLAVE_IO_THREAD_ABORTED_WAITING_FOR_RELAY_LOG_SPACE", - 0x294a: "ER_RPL_SLAVE_IO_THREAD_EXITING", - 0x294b: "ER_RPL_SLAVE_CANT_INITIALIZE_SLAVE_WORKER", - 0x294c: "ER_RPL_MTS_GROUP_RECOVERY_RELAY_LOG_INFO_FOR_WORKER", - 0x294d: "ER_RPL_ERROR_LOOKING_FOR_LOG", - 0x294e: "ER_RPL_MTS_GROUP_RECOVERY_RELAY_LOG_INFO", - 0x294f: "ER_RPL_CANT_FIND_FOLLOWUP_FILE", + 0x294A: "ER_RPL_SLAVE_IO_THREAD_EXITING", + 0x294B: "ER_RPL_SLAVE_CANT_INITIALIZE_SLAVE_WORKER", + 0x294C: "ER_RPL_MTS_GROUP_RECOVERY_RELAY_LOG_INFO_FOR_WORKER", + 0x294D: "ER_RPL_ERROR_LOOKING_FOR_LOG", + 0x294E: "ER_RPL_MTS_GROUP_RECOVERY_RELAY_LOG_INFO", + 0x294F: "ER_RPL_CANT_FIND_FOLLOWUP_FILE", 0x2950: "ER_RPL_MTS_CHECKPOINT_PERIOD_DIFFERS_FROM_CNT", 0x2951: "ER_RPL_SLAVE_WORKER_THREAD_CREATION_FAILED", 0x2952: "ER_RPL_SLAVE_WORKER_THREAD_CREATION_FAILED_WITH_ERRNO", @@ -1941,12 +1941,12 @@ 0x2957: "ER_RPL_SLAVE_ADDITIONAL_ERROR_INFO_FROM_DA", 0x2958: "ER_RPL_SLAVE_ERROR_INFO_FROM_DA", 0x2959: "ER_RPL_SLAVE_ERROR_LOADING_USER_DEFINED_LIBRARY", - 0x295a: "ER_RPL_SLAVE_ERROR_RUNNING_QUERY", - 0x295b: "ER_RPL_SLAVE_SQL_THREAD_EXITING", - 0x295c: "ER_RPL_SLAVE_READ_INVALID_EVENT_FROM_MASTER", - 0x295d: "ER_RPL_SLAVE_QUEUE_EVENT_FAILED_INVALID_CONFIGURATION", - 0x295e: "ER_RPL_SLAVE_IO_THREAD_DETECTED_UNEXPECTED_EVENT_SEQUENCE", - 0x295f: "ER_RPL_SLAVE_CANT_USE_CHARSET", + 0x295A: "ER_RPL_SLAVE_ERROR_RUNNING_QUERY", + 0x295B: "ER_RPL_SLAVE_SQL_THREAD_EXITING", + 0x295C: "ER_RPL_SLAVE_READ_INVALID_EVENT_FROM_MASTER", + 0x295D: "ER_RPL_SLAVE_QUEUE_EVENT_FAILED_INVALID_CONFIGURATION", + 0x295E: "ER_RPL_SLAVE_IO_THREAD_DETECTED_UNEXPECTED_EVENT_SEQUENCE", + 0x295F: "ER_RPL_SLAVE_CANT_USE_CHARSET", 0x2960: "ER_RPL_SLAVE_CONNECTED_TO_MASTER_REPLICATION_RESUMED", 0x2961: "ER_RPL_SLAVE_NEXT_LOG_IS_ACTIVE", 0x2962: "ER_RPL_SLAVE_NEXT_LOG_IS_INACTIVE", @@ -1957,12 +1957,12 @@ 0x2967: "ER_RPL_FAILED_TO_STAT_LOG_IN_INDEX", 0x2968: "ER_RPL_LOG_NOT_FOUND_WHILE_COUNTING_RELAY_LOG_SPACE", 0x2969: "ER_SLAVE_CANT_USE_TEMPDIR", - 0x296a: "ER_RPL_RELAY_LOG_NEEDS_FILE_NOT_DIRECTORY", - 0x296b: "ER_RPL_RELAY_LOG_INDEX_NEEDS_FILE_NOT_DIRECTORY", - 0x296c: "ER_RPL_PLEASE_USE_OPTION_RELAY_LOG", - 0x296d: "ER_RPL_OPEN_INDEX_FILE_FAILED", - 0x296e: "ER_RPL_CANT_INITIALIZE_GTID_SETS_IN_RLI_INIT_INFO", - 0x296f: "ER_RPL_CANT_OPEN_LOG_IN_RLI_INIT_INFO", + 0x296A: "ER_RPL_RELAY_LOG_NEEDS_FILE_NOT_DIRECTORY", + 0x296B: "ER_RPL_RELAY_LOG_INDEX_NEEDS_FILE_NOT_DIRECTORY", + 0x296C: "ER_RPL_PLEASE_USE_OPTION_RELAY_LOG", + 0x296D: "ER_RPL_OPEN_INDEX_FILE_FAILED", + 0x296E: "ER_RPL_CANT_INITIALIZE_GTID_SETS_IN_RLI_INIT_INFO", + 0x296F: "ER_RPL_CANT_OPEN_LOG_IN_RLI_INIT_INFO", 0x2970: "ER_RPL_ERROR_WRITING_RELAY_LOG_CONFIGURATION", 0x2971: "ER_NDB_OOM_GET_NDB_BLOBS_VALUE", 0x2972: "ER_NDB_THREAD_TIMED_OUT", @@ -1973,12 +1973,12 @@ 0x2977: "ER_NDB_DISCOVERED_MISSING_DB", 0x2978: "ER_NDB_DISCOVERED_REMAINING_DB", 0x2979: "ER_NDB_CLUSTER_FIND_ALL_DBS_RETRY", - 0x297a: "ER_NDB_CLUSTER_FIND_ALL_DBS_FAIL", - 0x297b: "ER_NDB_SKIPPING_SETUP_TABLE", - 0x297c: "ER_NDB_FAILED_TO_SET_UP_TABLE", - 0x297d: "ER_NDB_MISSING_FRM_DISCOVERING", - 0x297e: "ER_NDB_MISMATCH_IN_FRM_DISCOVERING", - 0x297f: "ER_NDB_BINLOG_CLEANING_UP_SETUP_LEFTOVERS", + 0x297A: "ER_NDB_CLUSTER_FIND_ALL_DBS_FAIL", + 0x297B: "ER_NDB_SKIPPING_SETUP_TABLE", + 0x297C: "ER_NDB_FAILED_TO_SET_UP_TABLE", + 0x297D: "ER_NDB_MISSING_FRM_DISCOVERING", + 0x297E: "ER_NDB_MISMATCH_IN_FRM_DISCOVERING", + 0x297F: "ER_NDB_BINLOG_CLEANING_UP_SETUP_LEFTOVERS", 0x2980: "ER_NDB_WAITING_INFO", 0x2981: "ER_NDB_WAITING_INFO_WITH_MAP", 0x2982: "ER_NDB_TIMEOUT_WHILE_DISTRIBUTING", @@ -1989,12 +1989,12 @@ 0x2987: "ER_NDB_SCHEMA_DISTRIBUTION_REPORTS_SUBSCRIBE", 0x2988: "ER_NDB_SCHEMA_DISTRIBUTION_REPORTS_UNSUBSCRIBE", 0x2989: "ER_NDB_BINLOG_CANT_DISCOVER_TABLE_FROM_SCHEMA_EVENT", - 0x298a: "ER_NDB_BINLOG_SIGNALLING_UNKNOWN_VALUE", - 0x298b: "ER_NDB_BINLOG_REPLY_TO", - 0x298c: "ER_NDB_BINLOG_CANT_RELEASE_SLOCK", - 0x298d: "ER_NDB_CANT_FIND_TABLE", - 0x298e: "ER_NDB_DISCARDING_EVENT_NO_OBJ", - 0x298f: "ER_NDB_DISCARDING_EVENT_ID_VERSION_MISMATCH", + 0x298A: "ER_NDB_BINLOG_SIGNALLING_UNKNOWN_VALUE", + 0x298B: "ER_NDB_BINLOG_REPLY_TO", + 0x298C: "ER_NDB_BINLOG_CANT_RELEASE_SLOCK", + 0x298D: "ER_NDB_CANT_FIND_TABLE", + 0x298E: "ER_NDB_DISCARDING_EVENT_NO_OBJ", + 0x298F: "ER_NDB_DISCARDING_EVENT_ID_VERSION_MISMATCH", 0x2990: "ER_NDB_CLEAR_SLOCK_INFO", 0x2991: "ER_NDB_BINLOG_SKIPPING_LOCAL_TABLE", 0x2992: "ER_NDB_BINLOG_ONLINE_ALTER_RENAME", @@ -2005,1637 +2005,1637 @@ 0x2997: "ER_NDB_BINLOG_SKIPPING_DROP_OF_DB_CONTAINING_LOCAL_TABLES", 0x2998: "ER_NDB_BINLOG_GOT_DIST_PRIV_EVENT_FLUSHING_PRIVILEGES", 0x2999: "ER_NDB_BINLOG_GOT_SCHEMA_EVENT", - 0x299a: "ER_NDB_BINLOG_SKIPPING_OLD_SCHEMA_OPERATION", - 0x299b: "ER_NDB_CLUSTER_FAILURE", - 0x299c: "ER_NDB_TABLES_INITIALLY_READ_ONLY_ON_RECONNECT", - 0x299d: "ER_NDB_IGNORING_UNKNOWN_EVENT", - 0x299e: "ER_NDB_BINLOG_OPENING_INDEX", - 0x299f: "ER_NDB_BINLOG_CANT_LOCK_NDB_BINLOG_INDEX", - 0x29a0: "ER_NDB_BINLOG_INJECTING_RANDOM_WRITE_FAILURE", - 0x29a1: "ER_NDB_BINLOG_CANT_WRITE_TO_NDB_BINLOG_INDEX", - 0x29a2: "ER_NDB_BINLOG_WRITING_TO_NDB_BINLOG_INDEX", - 0x29a3: "ER_NDB_BINLOG_CANT_COMMIT_TO_NDB_BINLOG_INDEX", - 0x29a4: "ER_NDB_BINLOG_WRITE_TO_NDB_BINLOG_INDEX_FAILED_AFTER_KILL", - 0x29a5: "ER_NDB_BINLOG_USING_SERVER_ID_0_SLAVES_WILL_NOT", - 0x29a6: "ER_NDB_SERVER_ID_RESERVED_OR_TOO_LARGE", - 0x29a7: "ER_NDB_BINLOG_NDB_LOG_TRANSACTION_ID_REQUIRES_V2_ROW_EVENTS", - 0x29a8: "ER_NDB_BINLOG_NDB_LOG_APPLY_STATUS_FORCING_FULL_USE_WRITE", - 0x29a9: "ER_NDB_BINLOG_GENERIC_MESSAGE", - 0x29aa: "ER_NDB_CONFLICT_GENERIC_MESSAGE", - 0x29ab: "ER_NDB_TRANS_DEPENDENCY_TRACKER_ERROR", - 0x29ac: "ER_NDB_CONFLICT_FN_PARSE_ERROR", - 0x29ad: "ER_NDB_CONFLICT_FN_SETUP_ERROR", - 0x29ae: "ER_NDB_BINLOG_FAILED_TO_GET_TABLE", - 0x29af: "ER_NDB_BINLOG_NOT_LOGGING", - 0x29b0: "ER_NDB_BINLOG_CREATE_TABLE_EVENT_FAILED", - 0x29b1: "ER_NDB_BINLOG_CREATE_TABLE_EVENT_INFO", - 0x29b2: "ER_NDB_BINLOG_DISCOVER_TABLE_EVENT_INFO", - 0x29b3: "ER_NDB_BINLOG_BLOB_REQUIRES_PK", - 0x29b4: "ER_NDB_BINLOG_CANT_CREATE_EVENT_IN_DB", - 0x29b5: "ER_NDB_BINLOG_CANT_CREATE_EVENT_IN_DB_AND_CANT_DROP", - 0x29b6: "ER_NDB_BINLOG_CANT_CREATE_EVENT_IN_DB_DROPPED", - 0x29b7: "ER_NDB_BINLOG_DISCOVER_REUSING_OLD_EVENT_OPS", - 0x29b8: "ER_NDB_BINLOG_CREATING_NDBEVENTOPERATION_FAILED", - 0x29b9: "ER_NDB_BINLOG_CANT_CREATE_BLOB", - 0x29ba: "ER_NDB_BINLOG_NDBEVENT_EXECUTE_FAILED", - 0x29bb: "ER_NDB_CREATE_EVENT_OPS_LOGGING_INFO", - 0x29bc: "ER_NDB_BINLOG_CANT_DROP_EVENT_FROM_DB", - 0x29bd: "ER_NDB_TIMED_OUT_IN_DROP_TABLE", - 0x29be: "ER_NDB_BINLOG_UNHANDLED_ERROR_FOR_TABLE", - 0x29bf: "ER_NDB_BINLOG_CLUSTER_FAILURE", - 0x29c0: "ER_NDB_BINLOG_UNKNOWN_NON_DATA_EVENT", - 0x29c1: "ER_NDB_BINLOG_INJECTOR_DISCARDING_ROW_EVENT_METADATA", - 0x29c2: "ER_NDB_REMAINING_OPEN_TABLES", - 0x29c3: "ER_NDB_REMAINING_OPEN_TABLE_INFO", - 0x29c4: "ER_NDB_COULD_NOT_GET_APPLY_STATUS_SHARE", - 0x29c5: "ER_NDB_BINLOG_SERVER_SHUTDOWN_DURING_NDB_CLUSTER_START", - 0x29c6: "ER_NDB_BINLOG_CLUSTER_RESTARTED_RESET_MASTER_SUGGESTED", - 0x29c7: "ER_NDB_BINLOG_CLUSTER_HAS_RECONNECTED", - 0x29c8: "ER_NDB_BINLOG_STARTING_LOG_AT_EPOCH", - 0x29c9: "ER_NDB_BINLOG_NDB_TABLES_WRITABLE", - 0x29ca: "ER_NDB_BINLOG_SHUTDOWN_DETECTED", - 0x29cb: "ER_NDB_BINLOG_LOST_SCHEMA_CONNECTION_WAITING", - 0x29cc: "ER_NDB_BINLOG_LOST_SCHEMA_CONNECTION_CONTINUING", - 0x29cd: "ER_NDB_BINLOG_ERROR_HANDLING_SCHEMA_EVENT", - 0x29ce: "ER_NDB_BINLOG_CANT_INJECT_APPLY_STATUS_WRITE_ROW", - 0x29cf: "ER_NDB_BINLOG_ERROR_DURING_GCI_ROLLBACK", - 0x29d0: "ER_NDB_BINLOG_ERROR_DURING_GCI_COMMIT", - 0x29d1: "ER_NDB_BINLOG_LATEST_TRX_IN_EPOCH_NOT_IN_BINLOG", - 0x29d2: "ER_NDB_BINLOG_RELEASING_EXTRA_SHARE_REFERENCES", - 0x29d3: "ER_NDB_BINLOG_REMAINING_OPEN_TABLES", - 0x29d4: "ER_NDB_BINLOG_REMAINING_OPEN_TABLE_INFO", - 0x29d5: "ER_TREE_CORRUPT_PARENT_SHOULD_POINT_AT_PARENT", - 0x29d6: "ER_TREE_CORRUPT_ROOT_SHOULD_BE_BLACK", - 0x29d7: "ER_TREE_CORRUPT_2_CONSECUTIVE_REDS", - 0x29d8: "ER_TREE_CORRUPT_RIGHT_IS_LEFT", - 0x29d9: "ER_TREE_CORRUPT_INCORRECT_BLACK_COUNT", - 0x29da: "ER_WRONG_COUNT_FOR_ORIGIN", - 0x29db: "ER_WRONG_COUNT_FOR_KEY", - 0x29dc: "ER_WRONG_COUNT_OF_ELEMENTS", - 0x29dd: "ER_RPL_ERROR_READING_SLAVE_WORKER_CONFIGURATION", - 0x29de: "ER_RPL_ERROR_WRITING_SLAVE_WORKER_CONFIGURATION", - 0x29df: "ER_RPL_FAILED_TO_OPEN_RELAY_LOG", - 0x29e0: "ER_RPL_WORKER_CANT_READ_RELAY_LOG", - 0x29e1: "ER_RPL_WORKER_CANT_FIND_NEXT_RELAY_LOG", - 0x29e2: "ER_RPL_MTS_SLAVE_COORDINATOR_HAS_WAITED", - 0x29e3: "ER_BINLOG_FAILED_TO_WRITE_DROP_FOR_TEMP_TABLES", - 0x29e4: "ER_BINLOG_OOM_WRITING_DELETE_WHILE_OPENING_HEAP_TABLE", - 0x29e5: "ER_FAILED_TO_REPAIR_TABLE", - 0x29e6: "ER_FAILED_TO_REMOVE_TEMP_TABLE", - 0x29e7: "ER_SYSTEM_TABLE_NOT_TRANSACTIONAL", - 0x29e8: "ER_RPL_ERROR_WRITING_MASTER_CONFIGURATION", - 0x29e9: "ER_RPL_ERROR_READING_MASTER_CONFIGURATION", - 0x29ea: "ER_RPL_SSL_INFO_IN_MASTER_INFO_IGNORED", - 0x29eb: "ER_PLUGIN_FAILED_DEINITIALIZATION", - 0x29ec: "ER_PLUGIN_HAS_NONZERO_REFCOUNT_AFTER_DEINITIALIZATION", - 0x29ed: "ER_PLUGIN_SHUTTING_DOWN_PLUGIN", - 0x29ee: "ER_PLUGIN_REGISTRATION_FAILED", - 0x29ef: "ER_PLUGIN_CANT_OPEN_PLUGIN_TABLE", - 0x29f0: "ER_PLUGIN_CANT_LOAD", - 0x29f1: "ER_PLUGIN_LOAD_PARAMETER_TOO_LONG", - 0x29f2: "ER_PLUGIN_FORCING_SHUTDOWN", - 0x29f3: "ER_PLUGIN_HAS_NONZERO_REFCOUNT_AFTER_SHUTDOWN", - 0x29f4: "ER_PLUGIN_UNKNOWN_VARIABLE_TYPE", - 0x29f5: "ER_PLUGIN_VARIABLE_SET_READ_ONLY", - 0x29f6: "ER_PLUGIN_VARIABLE_MISSING_NAME", - 0x29f7: "ER_PLUGIN_VARIABLE_NOT_ALLOCATED_THREAD_LOCAL", - 0x29f8: "ER_PLUGIN_OOM", - 0x29f9: "ER_PLUGIN_BAD_OPTIONS", - 0x29fa: "ER_PLUGIN_PARSING_OPTIONS_FAILED", - 0x29fb: "ER_PLUGIN_DISABLED", - 0x29fc: "ER_PLUGIN_HAS_CONFLICTING_SYSTEM_VARIABLES", - 0x29fd: "ER_PLUGIN_CANT_SET_PERSISTENT_OPTIONS", - 0x29fe: "ER_MY_NET_WRITE_FAILED_FALLING_BACK_ON_STDERR", - 0x29ff: "ER_RETRYING_REPAIR_WITHOUT_QUICK", - 0x2a00: "ER_RETRYING_REPAIR_WITH_KEYCACHE", - 0x2a01: "ER_FOUND_ROWS_WHILE_REPAIRING", - 0x2a02: "ER_ERROR_DURING_OPTIMIZE_TABLE", - 0x2a03: "ER_ERROR_ENABLING_KEYS", - 0x2a04: "ER_CHECKING_TABLE", - 0x2a05: "ER_RECOVERING_TABLE", - 0x2a06: "ER_CANT_CREATE_TABLE_SHARE_FROM_FRM", - 0x2a07: "ER_CANT_LOCK_TABLE", - 0x2a08: "ER_CANT_ALLOC_TABLE_OBJECT", - 0x2a09: "ER_CANT_CREATE_HANDLER_OBJECT_FOR_TABLE", - 0x2a0a: "ER_CANT_SET_HANDLER_REFERENCE_FOR_TABLE", - 0x2a0b: "ER_CANT_LOCK_TABLESPACE", - 0x2a0c: "ER_CANT_UPGRADE_GENERATED_COLUMNS_TO_DD", - 0x2a0d: "ER_DD_ERROR_CREATING_ENTRY", - 0x2a0e: "ER_DD_CANT_FETCH_TABLE_DATA", - 0x2a0f: "ER_DD_CANT_FIX_SE_DATA", - 0x2a10: "ER_DD_CANT_CREATE_SP", - 0x2a11: "ER_CANT_OPEN_DB_OPT_USING_DEFAULT_CHARSET", - 0x2a12: "ER_CANT_CREATE_CACHE_FOR_DB_OPT", - 0x2a13: "ER_CANT_IDENTIFY_CHARSET_USING_DEFAULT", - 0x2a14: "ER_DB_OPT_NOT_FOUND_USING_DEFAULT_CHARSET", - 0x2a15: "ER_EVENT_CANT_GET_TIMEZONE_FROM_FIELD", - 0x2a16: "ER_EVENT_CANT_FIND_TIMEZONE", - 0x2a17: "ER_EVENT_CANT_GET_CHARSET", - 0x2a18: "ER_EVENT_CANT_GET_COLLATION", - 0x2a19: "ER_EVENT_CANT_OPEN_TABLE_MYSQL_EVENT", - 0x2a1a: "ER_CANT_PARSE_STORED_ROUTINE_BODY", - 0x2a1b: "ER_CANT_OPEN_TABLE_MYSQL_PROC", - 0x2a1c: "ER_CANT_READ_TABLE_MYSQL_PROC", - 0x2a1d: "ER_FILE_EXISTS_DURING_UPGRADE", - 0x2a1e: "ER_CANT_OPEN_DATADIR_AFTER_UPGRADE_FAILURE", - 0x2a1f: "ER_CANT_SET_PATH_FOR", - 0x2a20: "ER_CANT_OPEN_DIR", - 0x2a21: "ER_NDB_EMPTY_NODEID_IN_NDB_CLUSTER_CONNECTION_POOL_NODEIDS", - 0x2a22: "ER_NDB_CANT_PARSE_NDB_CLUSTER_CONNECTION_POOL_NODEIDS", - 0x2a23: "ER_NDB_INVALID_NODEID_IN_NDB_CLUSTER_CONNECTION_POOL_NODEIDS", - 0x2a24: "ER_NDB_DUPLICATE_NODEID_IN_NDB_CLUSTER_CONNECTION_POOL_NODEIDS", - 0x2a25: "ER_NDB_POOL_SIZE_MUST_MATCH_NDB_CLUSTER_CONNECTION_POOL_NODEIDS", - 0x2a26: "ER_NDB_NODEID_NOT_FIRST_IN_NDB_CLUSTER_CONNECTION_POOL_NODEIDS", - 0x2a27: "ER_NDB_USING_NODEID", - 0x2a28: "ER_NDB_CANT_ALLOC_GLOBAL_NDB_CLUSTER_CONNECTION", - 0x2a29: "ER_NDB_CANT_ALLOC_GLOBAL_NDB_OBJECT", - 0x2a2a: "ER_NDB_USING_NODEID_LIST", - 0x2a2b: "ER_NDB_CANT_ALLOC_NDB_CLUSTER_CONNECTION", - 0x2a2c: "ER_NDB_STARTING_CONNECT_THREAD", - 0x2a2d: "ER_NDB_NODE_INFO", - 0x2a2e: "ER_NDB_CANT_START_CONNECT_THREAD", - 0x2a2f: "ER_NDB_GENERIC_ERROR", - 0x2a30: "ER_NDB_CPU_MASK_TOO_SHORT", - 0x2a31: "ER_EVENT_ERROR_CREATING_QUERY_TO_WRITE_TO_BINLOG", - 0x2a32: "ER_EVENT_SCHEDULER_ERROR_LOADING_FROM_DB", - 0x2a33: "ER_EVENT_SCHEDULER_ERROR_GETTING_EVENT_OBJECT", - 0x2a34: "ER_EVENT_SCHEDULER_GOT_BAD_DATA_FROM_TABLE", - 0x2a35: "ER_EVENT_CANT_GET_LOCK_FOR_DROPPING_EVENT", - 0x2a36: "ER_EVENT_UNABLE_TO_DROP_EVENT", - 0x2a37: "ER_BINLOG_ATTACHING_THREAD_MEMORY_FINALLY_AVAILABLE", - 0x2a38: "ER_BINLOG_CANT_RESIZE_CACHE", - 0x2a39: "ER_BINLOG_FILE_BEING_READ_NOT_PURGED", - 0x2a3a: "ER_BINLOG_IO_ERROR_READING_HEADER", - 0x2a3b: "ER_BINLOG_CANT_OPEN_LOG", - 0x2a3c: "ER_BINLOG_CANT_CREATE_CACHE_FOR_LOG", - 0x2a3d: "ER_BINLOG_FILE_EXTENSION_NUMBER_EXHAUSTED", - 0x2a3e: "ER_BINLOG_FILE_NAME_TOO_LONG", - 0x2a3f: "ER_BINLOG_FILE_EXTENSION_NUMBER_RUNNING_LOW", - 0x2a40: "ER_BINLOG_CANT_OPEN_FOR_LOGGING", - 0x2a41: "ER_BINLOG_FAILED_TO_SYNC_INDEX_FILE", - 0x2a42: "ER_BINLOG_ERROR_READING_GTIDS_FROM_RELAY_LOG", - 0x2a43: "ER_BINLOG_EVENTS_READ_FROM_RELAY_LOG_INFO", - 0x2a44: "ER_BINLOG_ERROR_READING_GTIDS_FROM_BINARY_LOG", - 0x2a45: "ER_BINLOG_EVENTS_READ_FROM_BINLOG_INFO", - 0x2a46: "ER_BINLOG_CANT_GENERATE_NEW_FILE_NAME", - 0x2a47: "ER_BINLOG_FAILED_TO_SYNC_INDEX_FILE_IN_OPEN", - 0x2a48: "ER_BINLOG_CANT_USE_FOR_LOGGING", - 0x2a49: "ER_BINLOG_FAILED_TO_CLOSE_INDEX_FILE_WHILE_REBUILDING", - 0x2a4a: "ER_BINLOG_FAILED_TO_DELETE_INDEX_FILE_WHILE_REBUILDING", - 0x2a4b: "ER_BINLOG_FAILED_TO_RENAME_INDEX_FILE_WHILE_REBUILDING", - 0x2a4c: "ER_BINLOG_FAILED_TO_OPEN_INDEX_FILE_AFTER_REBUILDING", - 0x2a4d: "ER_BINLOG_CANT_APPEND_LOG_TO_TMP_INDEX", - 0x2a4e: "ER_BINLOG_CANT_LOCATE_OLD_BINLOG_OR_RELAY_LOG_FILES", - 0x2a4f: "ER_BINLOG_CANT_DELETE_FILE", - 0x2a50: "ER_BINLOG_CANT_SET_TMP_INDEX_NAME", - 0x2a51: "ER_BINLOG_FAILED_TO_OPEN_TEMPORARY_INDEX_FILE", - 0x2a52: "ER_BINLOG_ERROR_GETTING_NEXT_LOG_FROM_INDEX", - 0x2a53: "ER_BINLOG_CANT_OPEN_TMP_INDEX", - 0x2a54: "ER_BINLOG_CANT_COPY_INDEX_TO_TMP", - 0x2a55: "ER_BINLOG_CANT_CLOSE_TMP_INDEX", - 0x2a56: "ER_BINLOG_CANT_MOVE_TMP_TO_INDEX", - 0x2a57: "ER_BINLOG_PURGE_LOGS_CALLED_WITH_FILE_NOT_IN_INDEX", - 0x2a58: "ER_BINLOG_PURGE_LOGS_CANT_SYNC_INDEX_FILE", - 0x2a59: "ER_BINLOG_PURGE_LOGS_CANT_COPY_TO_REGISTER_FILE", - 0x2a5a: "ER_BINLOG_PURGE_LOGS_CANT_FLUSH_REGISTER_FILE", - 0x2a5b: "ER_BINLOG_PURGE_LOGS_CANT_UPDATE_INDEX_FILE", - 0x2a5c: "ER_BINLOG_PURGE_LOGS_FAILED_TO_PURGE_LOG", - 0x2a5d: "ER_BINLOG_FAILED_TO_SET_PURGE_INDEX_FILE_NAME", - 0x2a5e: "ER_BINLOG_FAILED_TO_OPEN_REGISTER_FILE", - 0x2a5f: "ER_BINLOG_FAILED_TO_REINIT_REGISTER_FILE", - 0x2a60: "ER_BINLOG_FAILED_TO_READ_REGISTER_FILE", - 0x2a61: "ER_CANT_STAT_FILE", - 0x2a62: "ER_BINLOG_CANT_DELETE_LOG_FILE_DOES_INDEX_MATCH_FILES", - 0x2a63: "ER_BINLOG_CANT_DELETE_FILE_AND_READ_BINLOG_INDEX", - 0x2a64: "ER_BINLOG_FAILED_TO_DELETE_LOG_FILE", - 0x2a65: "ER_BINLOG_LOGGING_INCIDENT_TO_STOP_SLAVES", - 0x2a66: "ER_BINLOG_CANT_FIND_LOG_IN_INDEX", - 0x2a67: "ER_BINLOG_RECOVERING_AFTER_CRASH_USING", - 0x2a68: "ER_BINLOG_CANT_OPEN_CRASHED_BINLOG", - 0x2a69: "ER_BINLOG_CANT_TRIM_CRASHED_BINLOG", - 0x2a6a: "ER_BINLOG_CRASHED_BINLOG_TRIMMED", - 0x2a6b: "ER_BINLOG_CANT_CLEAR_IN_USE_FLAG_FOR_CRASHED_BINLOG", - 0x2a6c: "ER_BINLOG_FAILED_TO_RUN_AFTER_SYNC_HOOK", - 0x2a6d: "ER_TURNING_LOGGING_OFF_FOR_THE_DURATION", - 0x2a6e: "ER_BINLOG_FAILED_TO_RUN_AFTER_FLUSH_HOOK", - 0x2a6f: "ER_BINLOG_CRASH_RECOVERY_FAILED", - 0x2a70: "ER_BINLOG_WARNING_SUPPRESSED", - 0x2a71: "ER_NDB_LOG_ENTRY", - 0x2a72: "ER_NDB_LOG_ENTRY_WITH_PREFIX", - 0x2a73: "ER_NDB_BINLOG_CANT_CREATE_PURGE_THD", - 0x2a74: "ER_INNODB_UNKNOWN_COLLATION", - 0x2a75: "ER_INNODB_INVALID_LOG_GROUP_HOME_DIR", - 0x2a76: "ER_INNODB_INVALID_INNODB_UNDO_DIRECTORY", - 0x2a77: "ER_INNODB_ILLEGAL_COLON_IN_POOL", - 0x2a78: "ER_INNODB_INVALID_PAGE_SIZE", - 0x2a79: "ER_INNODB_DIRTY_WATER_MARK_NOT_LOW", - 0x2a7a: "ER_INNODB_IO_CAPACITY_EXCEEDS_MAX", - 0x2a7b: "ER_INNODB_FILES_SAME", - 0x2a7c: "ER_INNODB_UNREGISTERED_TRX_ACTIVE", - 0x2a7d: "ER_INNODB_CLOSING_CONNECTION_ROLLS_BACK", - 0x2a7e: "ER_INNODB_TRX_XLATION_TABLE_OOM", - 0x2a7f: "ER_INNODB_CANT_FIND_INDEX_IN_INNODB_DD", - 0x2a80: "ER_INNODB_INDEX_COLUMN_INFO_UNLIKE_MYSQLS", - 0x2a81: "ER_INNODB_CANT_OPEN_TABLE", - 0x2a82: "ER_INNODB_CANT_BUILD_INDEX_XLATION_TABLE_FOR", - 0x2a83: "ER_INNODB_PK_NOT_IN_MYSQL", - 0x2a84: "ER_INNODB_PK_ONLY_IN_MYSQL", - 0x2a85: "ER_INNODB_CLUSTERED_INDEX_PRIVATE", - 0x2a86: "ER_INNODB_PARTITION_TABLE_LOWERCASED", - 0x2a87: "ER_ERRMSG_REPLACEMENT_DODGY", - 0x2a88: "ER_ERRMSG_REPLACEMENTS_FAILED", - 0x2a89: "ER_NPIPE_CANT_CREATE", - 0x2a8a: "ER_PARTITION_MOVE_CREATED_DUPLICATE_ROW_PLEASE_FIX", - 0x2a8b: "ER_AUDIT_CANT_ABORT_COMMAND", - 0x2a8c: "ER_AUDIT_CANT_ABORT_EVENT", - 0x2a8d: "ER_AUDIT_WARNING", - 0x2a8e: "ER_NDB_NUMBER_OF_CHANNELS", - 0x2a8f: "ER_NDB_SLAVE_PARALLEL_WORKERS", - 0x2a90: "ER_NDB_DISTRIBUTING_ERR", - 0x2a91: "ER_RPL_SLAVE_INSECURE_CHANGE_MASTER", - 0x2a92: "ER_RPL_SLAVE_FLUSH_RELAY_LOGS_NOT_ALLOWED", - 0x2a93: "ER_RPL_SLAVE_INCORRECT_CHANNEL", - 0x2a94: "ER_FAILED_TO_FIND_DL_ENTRY", - 0x2a95: "ER_FAILED_TO_OPEN_SHARED_LIBRARY", - 0x2a96: "ER_THREAD_PRIORITY_IGNORED", - 0x2a97: "ER_BINLOG_CACHE_SIZE_TOO_LARGE", - 0x2a98: "ER_BINLOG_STMT_CACHE_SIZE_TOO_LARGE", - 0x2a99: "ER_FAILED_TO_GENERATE_UNIQUE_LOGFILE", - 0x2a9a: "ER_FAILED_TO_READ_FILE", - 0x2a9b: "ER_FAILED_TO_WRITE_TO_FILE", - 0x2a9c: "ER_BINLOG_UNSAFE_MESSAGE_AND_STATEMENT", - 0x2a9d: "ER_FORCE_CLOSE_THREAD", - 0x2a9e: "ER_SERVER_SHUTDOWN_COMPLETE", - 0x2a9f: "ER_RPL_CANT_HAVE_SAME_BASENAME", - 0x2aa0: "ER_RPL_GTID_MODE_REQUIRES_ENFORCE_GTID_CONSISTENCY_ON", - 0x2aa1: "ER_WARN_NO_SERVERID_SPECIFIED", - 0x2aa2: "ER_ABORTING_USER_CONNECTION", - 0x2aa3: "ER_SQL_MODE_MERGED_WITH_STRICT_MODE", - 0x2aa4: "ER_GTID_PURGED_WAS_UPDATED", - 0x2aa5: "ER_GTID_EXECUTED_WAS_UPDATED", - 0x2aa6: "ER_DEPRECATE_MSG_WITH_REPLACEMENT", - 0x2aa7: "ER_TRG_CREATION_CTX_NOT_SET", - 0x2aa8: "ER_FILE_HAS_OLD_FORMAT", - 0x2aa9: "ER_VIEW_CREATION_CTX_NOT_SET", - 0x2aaa: "ER_TABLE_NAME_CAUSES_TOO_LONG_PATH", - 0x2aab: "ER_TABLE_UPGRADE_REQUIRED", - 0x2aac: "ER_GET_ERRNO_FROM_STORAGE_ENGINE", - 0x2aad: "ER_ACCESS_DENIED_ERROR_WITHOUT_PASSWORD", - 0x2aae: "ER_ACCESS_DENIED_ERROR_WITH_PASSWORD", - 0x2aaf: "ER_ACCESS_DENIED_FOR_USER_ACCOUNT_LOCKED", - 0x2ab0: "ER_MUST_CHANGE_EXPIRED_PASSWORD", - 0x2ab1: "ER_SYSTEM_TABLES_NOT_SUPPORTED_BY_STORAGE_ENGINE", - 0x2ab2: "ER_FILESORT_TERMINATED", - 0x2ab3: "ER_SERVER_STARTUP_MSG", - 0x2ab4: "ER_FAILED_TO_FIND_LOCALE_NAME", - 0x2ab5: "ER_FAILED_TO_FIND_COLLATION_NAME", - 0x2ab6: "ER_SERVER_OUT_OF_RESOURCES", - 0x2ab7: "ER_SERVER_OUTOFMEMORY", - 0x2ab8: "ER_INVALID_COLLATION_FOR_CHARSET", - 0x2ab9: "ER_CANT_START_ERROR_LOG_SERVICE", - 0x2aba: "ER_CREATING_NEW_UUID_FIRST_START", - 0x2abb: "ER_FAILED_TO_GET_ABSOLUTE_PATH", - 0x2abc: "ER_PERFSCHEMA_COMPONENTS_INFRASTRUCTURE_BOOTSTRAP", - 0x2abd: "ER_PERFSCHEMA_COMPONENTS_INFRASTRUCTURE_SHUTDOWN", - 0x2abe: "ER_DUP_FD_OPEN_FAILED", - 0x2abf: "ER_SYSTEM_VIEW_INIT_FAILED", - 0x2ac0: "ER_RESOURCE_GROUP_POST_INIT_FAILED", - 0x2ac1: "ER_RESOURCE_GROUP_SUBSYSTEM_INIT_FAILED", - 0x2ac2: "ER_FAILED_START_MYSQLD_DAEMON", - 0x2ac3: "ER_CANNOT_CHANGE_TO_ROOT_DIR", - 0x2ac4: "ER_PERSISTENT_PRIVILEGES_BOOTSTRAP", - 0x2ac5: "ER_BASEDIR_SET_TO", - 0x2ac6: "ER_RPL_FILTER_ADD_WILD_DO_TABLE_FAILED", - 0x2ac7: "ER_RPL_FILTER_ADD_WILD_IGNORE_TABLE_FAILED", - 0x2ac8: "ER_PRIVILEGE_SYSTEM_INIT_FAILED", - 0x2ac9: "ER_CANNOT_SET_LOG_ERROR_SERVICES", - 0x2aca: "ER_PERFSCHEMA_TABLES_INIT_FAILED", - 0x2acb: "ER_TX_EXTRACTION_ALGORITHM_FOR_BINLOG_TX_DEPEDENCY_TRACKING", - 0x2acc: "ER_INVALID_REPLICATION_TIMESTAMPS", - 0x2acd: "ER_RPL_TIMESTAMPS_RETURNED_TO_NORMAL", - 0x2ace: "ER_BINLOG_FILE_OPEN_FAILED", - 0x2acf: "ER_BINLOG_EVENT_WRITE_TO_STMT_CACHE_FAILED", - 0x2ad0: "ER_SLAVE_RELAY_LOG_TRUNCATE_INFO", - 0x2ad1: "ER_SLAVE_RELAY_LOG_PURGE_FAILED", - 0x2ad2: "ER_RPL_SLAVE_FILTER_CREATE_FAILED", - 0x2ad3: "ER_RPL_SLAVE_GLOBAL_FILTERS_COPY_FAILED", - 0x2ad4: "ER_RPL_SLAVE_RESET_FILTER_OPTIONS", - 0x2ad5: "ER_MISSING_GRANT_SYSTEM_TABLE", - 0x2ad6: "ER_MISSING_ACL_SYSTEM_TABLE", - 0x2ad7: "ER_ANONYMOUS_AUTH_ID_NOT_ALLOWED_IN_MANDATORY_ROLES", - 0x2ad8: "ER_UNKNOWN_AUTH_ID_IN_MANDATORY_ROLE", - 0x2ad9: "ER_WRITE_ROW_TO_PARTITION_FAILED", - 0x2ada: "ER_RESOURCE_GROUP_METADATA_UPDATE_SKIPPED", - 0x2adb: "ER_FAILED_TO_PERSIST_RESOURCE_GROUP_METADATA", - 0x2adc: "ER_FAILED_TO_DESERIALIZE_RESOURCE_GROUP", - 0x2add: "ER_FAILED_TO_UPDATE_RESOURCE_GROUP", - 0x2ade: "ER_RESOURCE_GROUP_VALIDATION_FAILED", - 0x2adf: "ER_FAILED_TO_ALLOCATE_MEMORY_FOR_RESOURCE_GROUP", - 0x2ae0: "ER_FAILED_TO_ALLOCATE_MEMORY_FOR_RESOURCE_GROUP_HASH", - 0x2ae1: "ER_FAILED_TO_ADD_RESOURCE_GROUP_TO_MAP", - 0x2ae2: "ER_RESOURCE_GROUP_IS_DISABLED", - 0x2ae3: "ER_FAILED_TO_APPLY_RESOURCE_GROUP_CONTROLLER", - 0x2ae4: "ER_FAILED_TO_ACQUIRE_LOCK_ON_RESOURCE_GROUP", - 0x2ae5: "ER_PFS_NOTIFICATION_FUNCTION_REGISTER_FAILED", - 0x2ae6: "ER_RES_GRP_SET_THR_AFFINITY_FAILED", - 0x2ae7: "ER_RES_GRP_SET_THR_AFFINITY_TO_CPUS_FAILED", - 0x2ae8: "ER_RES_GRP_THD_UNBIND_FROM_CPU_FAILED", - 0x2ae9: "ER_RES_GRP_SET_THREAD_PRIORITY_FAILED", - 0x2aea: "ER_RES_GRP_FAILED_TO_DETERMINE_NICE_CAPABILITY", - 0x2aeb: "ER_RES_GRP_FAILED_TO_GET_THREAD_HANDLE", - 0x2aec: "ER_RES_GRP_GET_THREAD_PRIO_NOT_SUPPORTED", - 0x2aed: "ER_RES_GRP_FAILED_DETERMINE_CPU_COUNT", - 0x2aee: "ER_RES_GRP_FEATURE_NOT_AVAILABLE", - 0x2aef: "ER_RES_GRP_INVALID_THREAD_PRIORITY", - 0x2af0: "ER_RES_GRP_SOLARIS_PROCESSOR_BIND_TO_CPUID_FAILED", - 0x2af1: "ER_RES_GRP_SOLARIS_PROCESSOR_BIND_TO_THREAD_FAILED", - 0x2af2: "ER_RES_GRP_SOLARIS_PROCESSOR_AFFINITY_FAILED", - 0x2af3: "ER_DD_UPGRADE_RENAME_IDX_STATS_FILE_FAILED", - 0x2af4: "ER_DD_UPGRADE_DD_OPEN_FAILED", - 0x2af5: "ER_DD_UPGRADE_FAILED_TO_FETCH_TABLESPACES", - 0x2af6: "ER_DD_UPGRADE_FAILED_TO_ACQUIRE_TABLESPACE", - 0x2af7: "ER_DD_UPGRADE_FAILED_TO_RESOLVE_TABLESPACE_ENGINE", - 0x2af8: "ER_FAILED_TO_CREATE_SDI_FOR_TABLESPACE", - 0x2af9: "ER_FAILED_TO_STORE_SDI_FOR_TABLESPACE", - 0x2afa: "ER_DD_UPGRADE_FAILED_TO_FETCH_TABLES", - 0x2afb: "ER_DD_UPGRADE_DD_POPULATED", - 0x2afc: "ER_DD_UPGRADE_INFO_FILE_OPEN_FAILED", - 0x2afd: "ER_DD_UPGRADE_INFO_FILE_CLOSE_FAILED", - 0x2afe: "ER_DD_UPGRADE_TABLESPACE_MIGRATION_FAILED", - 0x2aff: "ER_DD_UPGRADE_FAILED_TO_CREATE_TABLE_STATS", - 0x2b00: "ER_DD_UPGRADE_TABLE_STATS_MIGRATE_COMPLETED", - 0x2b01: "ER_DD_UPGRADE_FAILED_TO_CREATE_INDEX_STATS", - 0x2b02: "ER_DD_UPGRADE_INDEX_STATS_MIGRATE_COMPLETED", - 0x2b03: "ER_DD_UPGRADE_FAILED_FIND_VALID_DATA_DIR", - 0x2b04: "ER_DD_UPGRADE_START", - 0x2b05: "ER_DD_UPGRADE_FAILED_INIT_DD_SE", - 0x2b06: "ER_DD_UPGRADE_FOUND_PARTIALLY_UPGRADED_DD_ABORT", - 0x2b07: "ER_DD_UPGRADE_FOUND_PARTIALLY_UPGRADED_DD_CONTINUE", - 0x2b08: "ER_DD_UPGRADE_SE_LOGS_FAILED", - 0x2b09: "ER_DD_UPGRADE_SDI_INFO_UPDATE_FAILED", - 0x2b0a: "ER_SKIP_UPDATING_METADATA_IN_SE_RO_MODE", - 0x2b0b: "ER_CREATED_SYSTEM_WITH_VERSION", - 0x2b0c: "ER_UNKNOWN_ERROR_DETECTED_IN_SE", - 0x2b0d: "ER_READ_LOG_EVENT_FAILED", - 0x2b0e: "ER_ROW_DATA_TOO_BIG_TO_WRITE_IN_BINLOG", - 0x2b0f: "ER_FAILED_TO_CONSTRUCT_DROP_EVENT_QUERY", - 0x2b10: "ER_FAILED_TO_BINLOG_DROP_EVENT", - 0x2b11: "ER_FAILED_TO_START_SLAVE_THREAD", - 0x2b12: "ER_RPL_IO_THREAD_KILLED", - 0x2b13: "ER_SLAVE_RECONNECT_FAILED", - 0x2b14: "ER_SLAVE_KILLED_AFTER_RECONNECT", - 0x2b15: "ER_SLAVE_NOT_STARTED_ON_SOME_CHANNELS", - 0x2b16: "ER_FAILED_TO_ADD_RPL_FILTER", - 0x2b17: "ER_PER_CHANNEL_RPL_FILTER_CONF_FOR_GRP_RPL", - 0x2b18: "ER_RPL_FILTERS_NOT_ATTACHED_TO_CHANNEL", - 0x2b19: "ER_FAILED_TO_BUILD_DO_AND_IGNORE_TABLE_HASHES", - 0x2b1a: "ER_CLONE_PLUGIN_NOT_LOADED", - 0x2b1b: "ER_CLONE_HANDLER_EXISTS", - 0x2b1c: "ER_FAILED_TO_CREATE_CLONE_HANDLER", - 0x2b1d: "ER_CYCLE_TIMER_IS_NOT_AVAILABLE", - 0x2b1e: "ER_NANOSECOND_TIMER_IS_NOT_AVAILABLE", - 0x2b1f: "ER_MICROSECOND_TIMER_IS_NOT_AVAILABLE", - 0x2b20: "ER_PFS_MALLOC_ARRAY_OVERFLOW", - 0x2b21: "ER_PFS_MALLOC_ARRAY_OOM", - 0x2b22: "ER_INNODB_FAILED_TO_FIND_IDX_WITH_KEY_NO", - 0x2b23: "ER_INNODB_FAILED_TO_FIND_IDX", - 0x2b24: "ER_INNODB_FAILED_TO_FIND_IDX_FROM_DICT_CACHE", - 0x2b25: "ER_INNODB_ACTIVE_INDEX_CHANGE_FAILED", - 0x2b26: "ER_INNODB_DIFF_IN_REF_LEN", - 0x2b27: "ER_WRONG_TYPE_FOR_COLUMN_PREFIX_IDX_FLD", - 0x2b28: "ER_INNODB_CANNOT_CREATE_TABLE", - 0x2b29: "ER_INNODB_INTERNAL_INDEX", - 0x2b2a: "ER_INNODB_IDX_CNT_MORE_THAN_DEFINED_IN_MYSQL", - 0x2b2b: "ER_INNODB_IDX_CNT_FEWER_THAN_DEFINED_IN_MYSQL", - 0x2b2c: "ER_INNODB_IDX_COLUMN_CNT_DIFF", - 0x2b2d: "ER_INNODB_USE_MONITOR_GROUP_NAME", - 0x2b2e: "ER_INNODB_MONITOR_DEFAULT_VALUE_NOT_DEFINED", - 0x2b2f: "ER_INNODB_MONITOR_IS_ENABLED", - 0x2b30: "ER_INNODB_INVALID_MONITOR_COUNTER_NAME", - 0x2b31: "ER_WIN_LOAD_LIBRARY_FAILED", - 0x2b32: "ER_PARTITION_HANDLER_ADMIN_MSG", - 0x2b33: "ER_RPL_RLI_INIT_INFO_MSG", - 0x2b34: "ER_DD_UPGRADE_TABLE_INTACT_ERROR", - 0x2b35: "ER_SERVER_INIT_COMPILED_IN_COMMANDS", - 0x2b36: "ER_MYISAM_CHECK_METHOD_ERROR", - 0x2b37: "ER_MYISAM_CRASHED_ERROR", - 0x2b38: "ER_WAITPID_FAILED", - 0x2b39: "ER_FAILED_TO_FIND_MYSQLD_STATUS", - 0x2b3a: "ER_INNODB_ERROR_LOGGER_MSG", - 0x2b3b: "ER_INNODB_ERROR_LOGGER_FATAL_MSG", - 0x2b3c: "ER_DEPRECATED_SYNTAX_WITH_REPLACEMENT", - 0x2b3d: "ER_DEPRECATED_SYNTAX_NO_REPLACEMENT", - 0x2b3e: "ER_DEPRECATE_MSG_NO_REPLACEMENT", - 0x2b3f: "ER_LOG_PRINTF_MSG", - 0x2b40: "ER_BINLOG_LOGGING_NOT_POSSIBLE", - 0x2b41: "ER_FAILED_TO_SET_PERSISTED_OPTIONS", - 0x2b42: "ER_COMPONENTS_FAILED_TO_ACQUIRE_SERVICE_IMPLEMENTATION", - 0x2b43: "ER_RES_GRP_INVALID_VCPU_RANGE", - 0x2b44: "ER_RES_GRP_INVALID_VCPU_ID", - 0x2b45: "ER_ERROR_DURING_FLUSH_LOG_COMMIT_PHASE", - 0x2b46: "ER_DROP_DATABASE_FAILED_RMDIR_MANUALLY", - 0x2b47: "ER_EXPIRE_LOGS_DAYS_IGNORED", - 0x2b48: "ER_BINLOG_MALFORMED_OR_OLD_RELAY_LOG", - 0x2b49: "ER_DD_UPGRADE_VIEW_COLUMN_NAME_TOO_LONG", - 0x2b4a: "ER_TABLE_NEEDS_DUMP_UPGRADE", - 0x2b4b: "ER_DD_UPGRADE_FAILED_TO_UPDATE_VER_NO_IN_TABLESPACE", - 0x2b4c: "ER_KEYRING_MIGRATION_FAILED", - 0x2b4d: "ER_KEYRING_MIGRATION_SUCCESSFUL", - 0x2b4e: "ER_RESTART_RECEIVED_INFO", - 0x2b4f: "ER_LCTN_CHANGED", - 0x2b50: "ER_DD_INITIALIZE", - 0x2b51: "ER_DD_RESTART", - 0x2b52: "ER_DD_UPGRADE", - 0x2b53: "ER_DD_UPGRADE_OFF", - 0x2b54: "ER_DD_UPGRADE_VERSION_NOT_SUPPORTED", - 0x2b55: "ER_DD_UPGRADE_SCHEMA_UNAVAILABLE", - 0x2b56: "ER_DD_MINOR_DOWNGRADE", - 0x2b57: "ER_DD_MINOR_DOWNGRADE_VERSION_NOT_SUPPORTED", - 0x2b58: "ER_DD_NO_VERSION_FOUND", - 0x2b59: "ER_THREAD_POOL_NOT_SUPPORTED_ON_PLATFORM", - 0x2b5a: "ER_THREAD_POOL_SIZE_TOO_LOW", - 0x2b5b: "ER_THREAD_POOL_SIZE_TOO_HIGH", - 0x2b5c: "ER_THREAD_POOL_ALGORITHM_INVALID", - 0x2b5d: "ER_THREAD_POOL_INVALID_STALL_LIMIT", - 0x2b5e: "ER_THREAD_POOL_INVALID_PRIO_KICKUP_TIMER", - 0x2b5f: "ER_THREAD_POOL_MAX_UNUSED_THREADS_INVALID", - 0x2b60: "ER_THREAD_POOL_CON_HANDLER_INIT_FAILED", - 0x2b61: "ER_THREAD_POOL_INIT_FAILED", - 0x2b62: "ER_THREAD_POOL_PLUGIN_STARTED", - 0x2b63: "ER_THREAD_POOL_CANNOT_SET_THREAD_SPECIFIC_DATA", - 0x2b64: "ER_THREAD_POOL_FAILED_TO_CREATE_CONNECT_HANDLER_THD", - 0x2b65: "ER_THREAD_POOL_FAILED_TO_CREATE_THD_AND_AUTH_CONN", - 0x2b66: "ER_THREAD_POOL_FAILED_PROCESS_CONNECT_EVENT", - 0x2b67: "ER_THREAD_POOL_FAILED_TO_CREATE_POOL", - 0x2b68: "ER_THREAD_POOL_RATE_LIMITED_ERROR_MSGS", - 0x2b69: "ER_TRHEAD_POOL_LOW_LEVEL_INIT_FAILED", - 0x2b6a: "ER_THREAD_POOL_LOW_LEVEL_REARM_FAILED", - 0x2b6b: "ER_THREAD_POOL_BUFFER_TOO_SMALL", - 0x2b6c: "ER_MECAB_NOT_SUPPORTED", - 0x2b6d: "ER_MECAB_NOT_VERIFIED", - 0x2b6e: "ER_MECAB_CREATING_MODEL", - 0x2b6f: "ER_MECAB_FAILED_TO_CREATE_MODEL", - 0x2b70: "ER_MECAB_FAILED_TO_CREATE_TRIGGER", - 0x2b71: "ER_MECAB_UNSUPPORTED_CHARSET", - 0x2b72: "ER_MECAB_CHARSET_LOADED", - 0x2b73: "ER_MECAB_PARSE_FAILED", - 0x2b74: "ER_MECAB_OOM_WHILE_PARSING_TEXT", - 0x2b75: "ER_MECAB_CREATE_LATTICE_FAILED", - 0x2b76: "ER_SEMISYNC_TRACE_ENTER_FUNC", - 0x2b77: "ER_SEMISYNC_TRACE_EXIT_WITH_INT_EXIT_CODE", - 0x2b78: "ER_SEMISYNC_TRACE_EXIT_WITH_BOOL_EXIT_CODE", - 0x2b79: "ER_SEMISYNC_TRACE_EXIT", - 0x2b7a: "ER_SEMISYNC_RPL_INIT_FOR_TRX", - 0x2b7b: "ER_SEMISYNC_FAILED_TO_ALLOCATE_TRX_NODE", - 0x2b7c: "ER_SEMISYNC_BINLOG_WRITE_OUT_OF_ORDER", - 0x2b7d: "ER_SEMISYNC_INSERT_LOG_INFO_IN_ENTRY", - 0x2b7e: "ER_SEMISYNC_PROBE_LOG_INFO_IN_ENTRY", - 0x2b7f: "ER_SEMISYNC_CLEARED_ALL_ACTIVE_TRANSACTION_NODES", - 0x2b80: "ER_SEMISYNC_CLEARED_ACTIVE_TRANSACTION_TILL_POS", - 0x2b81: "ER_SEMISYNC_REPLY_MAGIC_NO_ERROR", - 0x2b82: "ER_SEMISYNC_REPLY_PKT_LENGTH_TOO_SMALL", - 0x2b83: "ER_SEMISYNC_REPLY_BINLOG_FILE_TOO_LARGE", - 0x2b84: "ER_SEMISYNC_SERVER_REPLY", - 0x2b85: "ER_SEMISYNC_FUNCTION_CALLED_TWICE", - 0x2b86: "ER_SEMISYNC_RPL_ENABLED_ON_MASTER", - 0x2b87: "ER_SEMISYNC_MASTER_OOM", - 0x2b88: "ER_SEMISYNC_DISABLED_ON_MASTER", - 0x2b89: "ER_SEMISYNC_FORCED_SHUTDOWN", - 0x2b8a: "ER_SEMISYNC_MASTER_GOT_REPLY_AT_POS", - 0x2b8b: "ER_SEMISYNC_MASTER_SIGNAL_ALL_WAITING_THREADS", - 0x2b8c: "ER_SEMISYNC_MASTER_TRX_WAIT_POS", - 0x2b8d: "ER_SEMISYNC_BINLOG_REPLY_IS_AHEAD", - 0x2b8e: "ER_SEMISYNC_MOVE_BACK_WAIT_POS", - 0x2b8f: "ER_SEMISYNC_INIT_WAIT_POS", - 0x2b90: "ER_SEMISYNC_WAIT_TIME_FOR_BINLOG_SENT", - 0x2b91: "ER_SEMISYNC_WAIT_FOR_BINLOG_TIMEDOUT", - 0x2b92: "ER_SEMISYNC_WAIT_TIME_ASSESSMENT_FOR_COMMIT_TRX_FAILED", - 0x2b93: "ER_SEMISYNC_RPL_SWITCHED_OFF", - 0x2b94: "ER_SEMISYNC_RPL_SWITCHED_ON", - 0x2b95: "ER_SEMISYNC_NO_SPACE_IN_THE_PKT", - 0x2b96: "ER_SEMISYNC_SYNC_HEADER_UPDATE_INFO", - 0x2b97: "ER_SEMISYNC_FAILED_TO_INSERT_TRX_NODE", - 0x2b98: "ER_SEMISYNC_TRX_SKIPPED_AT_POS", - 0x2b99: "ER_SEMISYNC_MASTER_FAILED_ON_NET_FLUSH", - 0x2b9a: "ER_SEMISYNC_RECEIVED_ACK_IS_SMALLER", - 0x2b9b: "ER_SEMISYNC_ADD_ACK_TO_SLOT", - 0x2b9c: "ER_SEMISYNC_UPDATE_EXISTING_SLAVE_ACK", - 0x2b9d: "ER_SEMISYNC_FAILED_TO_START_ACK_RECEIVER_THD", - 0x2b9e: "ER_SEMISYNC_STARTING_ACK_RECEIVER_THD", - 0x2b9f: "ER_SEMISYNC_FAILED_TO_WAIT_ON_DUMP_SOCKET", - 0x2ba0: "ER_SEMISYNC_STOPPING_ACK_RECEIVER_THREAD", - 0x2ba1: "ER_SEMISYNC_FAILED_REGISTER_SLAVE_TO_RECEIVER", - 0x2ba2: "ER_SEMISYNC_START_BINLOG_DUMP_TO_SLAVE", - 0x2ba3: "ER_SEMISYNC_STOP_BINLOG_DUMP_TO_SLAVE", - 0x2ba4: "ER_SEMISYNC_UNREGISTER_TRX_OBSERVER_FAILED", - 0x2ba5: "ER_SEMISYNC_UNREGISTER_BINLOG_STORAGE_OBSERVER_FAILED", - 0x2ba6: "ER_SEMISYNC_UNREGISTER_BINLOG_TRANSMIT_OBSERVER_FAILED", - 0x2ba7: "ER_SEMISYNC_UNREGISTERED_REPLICATOR", - 0x2ba8: "ER_SEMISYNC_SOCKET_FD_TOO_LARGE", - 0x2ba9: "ER_SEMISYNC_SLAVE_REPLY", - 0x2baa: "ER_SEMISYNC_MISSING_MAGIC_NO_FOR_SEMISYNC_PKT", - 0x2bab: "ER_SEMISYNC_SLAVE_START", - 0x2bac: "ER_SEMISYNC_SLAVE_REPLY_WITH_BINLOG_INFO", - 0x2bad: "ER_SEMISYNC_SLAVE_NET_FLUSH_REPLY_FAILED", - 0x2bae: "ER_SEMISYNC_SLAVE_SEND_REPLY_FAILED", - 0x2baf: "ER_SEMISYNC_EXECUTION_FAILED_ON_MASTER", - 0x2bb0: "ER_SEMISYNC_NOT_SUPPORTED_BY_MASTER", - 0x2bb1: "ER_SEMISYNC_SLAVE_SET_FAILED", - 0x2bb2: "ER_SEMISYNC_FAILED_TO_STOP_ACK_RECEIVER_THD", - 0x2bb3: "ER_FIREWALL_FAILED_TO_READ_FIREWALL_TABLES", - 0x2bb4: "ER_FIREWALL_FAILED_TO_REG_DYNAMIC_PRIVILEGES", - 0x2bb5: "ER_FIREWALL_RECORDING_STMT_WAS_TRUNCATED", - 0x2bb6: "ER_FIREWALL_RECORDING_STMT_WITHOUT_TEXT", - 0x2bb7: "ER_FIREWALL_SUSPICIOUS_STMT", - 0x2bb8: "ER_FIREWALL_ACCESS_DENIED", - 0x2bb9: "ER_FIREWALL_SKIPPED_UNKNOWN_USER_MODE", - 0x2bba: "ER_FIREWALL_RELOADING_CACHE", - 0x2bbb: "ER_FIREWALL_RESET_FOR_USER", - 0x2bbc: "ER_FIREWALL_STATUS_FLUSHED", - 0x2bbd: "ER_KEYRING_LOGGER_ERROR_MSG", - 0x2bbe: "ER_AUDIT_LOG_FILTER_IS_NOT_INSTALLED", - 0x2bbf: "ER_AUDIT_LOG_SWITCHING_TO_INCLUDE_LIST", - 0x2bc0: "ER_AUDIT_LOG_CANNOT_SET_LOG_POLICY_WITH_OTHER_POLICIES", - 0x2bc1: "ER_AUDIT_LOG_ONLY_INCLUDE_LIST_USED", - 0x2bc2: "ER_AUDIT_LOG_INDEX_MAP_CANNOT_ACCESS_DIR", - 0x2bc3: "ER_AUDIT_LOG_WRITER_RENAME_FILE_FAILED", - 0x2bc4: "ER_AUDIT_LOG_WRITER_DEST_FILE_ALREADY_EXISTS", - 0x2bc5: "ER_AUDIT_LOG_WRITER_RENAME_FILE_FAILED_REMOVE_FILE_MANUALLY", - 0x2bc6: "ER_AUDIT_LOG_WRITER_INCOMPLETE_FILE_RENAMED", - 0x2bc7: "ER_AUDIT_LOG_WRITER_FAILED_TO_WRITE_TO_FILE", - 0x2bc8: "ER_AUDIT_LOG_EC_WRITER_FAILED_TO_INIT_ENCRYPTION", - 0x2bc9: "ER_AUDIT_LOG_EC_WRITER_FAILED_TO_INIT_COMPRESSION", - 0x2bca: "ER_AUDIT_LOG_EC_WRITER_FAILED_TO_CREATE_FILE", - 0x2bcb: "ER_AUDIT_LOG_RENAME_LOG_FILE_BEFORE_FLUSH", - 0x2bcc: "ER_AUDIT_LOG_FILTER_RESULT_MSG", - 0x2bcd: "ER_AUDIT_LOG_JSON_READER_FAILED_TO_PARSE", - 0x2bce: "ER_AUDIT_LOG_JSON_READER_BUF_TOO_SMALL", - 0x2bcf: "ER_AUDIT_LOG_JSON_READER_FAILED_TO_OPEN_FILE", - 0x2bd0: "ER_AUDIT_LOG_JSON_READER_FILE_PARSING_ERROR", - 0x2bd1: "ER_AUDIT_LOG_FILTER_INVALID_COLUMN_COUNT", - 0x2bd2: "ER_AUDIT_LOG_FILTER_INVALID_COLUMN_DEFINITION", - 0x2bd3: "ER_AUDIT_LOG_FILTER_FAILED_TO_STORE_TABLE_FLDS", - 0x2bd4: "ER_AUDIT_LOG_FILTER_FAILED_TO_UPDATE_TABLE", - 0x2bd5: "ER_AUDIT_LOG_FILTER_FAILED_TO_INSERT_INTO_TABLE", - 0x2bd6: "ER_AUDIT_LOG_FILTER_FAILED_TO_DELETE_FROM_TABLE", - 0x2bd7: "ER_AUDIT_LOG_FILTER_FAILED_TO_INIT_TABLE_FOR_READ", - 0x2bd8: "ER_AUDIT_LOG_FILTER_FAILED_TO_READ_TABLE", - 0x2bd9: "ER_AUDIT_LOG_FILTER_FAILED_TO_CLOSE_TABLE_AFTER_READING", - 0x2bda: "ER_AUDIT_LOG_FILTER_USER_AND_HOST_CANNOT_BE_EMPTY", - 0x2bdb: "ER_AUDIT_LOG_FILTER_FLD_FILTERNAME_CANNOT_BE_EMPTY", - 0x2bdc: "ER_VALIDATE_PWD_DICT_FILE_NOT_SPECIFIED", - 0x2bdd: "ER_VALIDATE_PWD_DICT_FILE_NOT_LOADED", - 0x2bde: "ER_VALIDATE_PWD_DICT_FILE_TOO_BIG", - 0x2bdf: "ER_VALIDATE_PWD_FAILED_TO_READ_DICT_FILE", - 0x2be0: "ER_VALIDATE_PWD_FAILED_TO_GET_FLD_FROM_SECURITY_CTX", - 0x2be1: "ER_VALIDATE_PWD_FAILED_TO_GET_SECURITY_CTX", - 0x2be2: "ER_VALIDATE_PWD_LENGTH_CHANGED", - 0x2be3: "ER_REWRITER_QUERY_ERROR_MSG", - 0x2be4: "ER_REWRITER_QUERY_FAILED", - 0x2be5: "ER_XPLUGIN_STARTUP_FAILED", - 0x2be6: "ER_XPLUGIN_SERVER_EXITING", - 0x2be7: "ER_XPLUGIN_SERVER_EXITED", - 0x2be8: "ER_XPLUGIN_USING_SSL_CONF_FROM_SERVER", - 0x2be9: "ER_XPLUGIN_USING_SSL_CONF_FROM_MYSQLX", - 0x2bea: "ER_XPLUGIN_FAILED_TO_USE_SSL_CONF", - 0x2beb: "ER_XPLUGIN_USING_SSL_FOR_TLS_CONNECTION", - 0x2bec: "ER_XPLUGIN_REFERENCE_TO_SECURE_CONN_WITH_XPLUGIN", - 0x2bed: "ER_XPLUGIN_ERROR_MSG", - 0x2bee: "ER_SHA_PWD_FAILED_TO_PARSE_AUTH_STRING", - 0x2bef: "ER_SHA_PWD_FAILED_TO_GENERATE_MULTI_ROUND_HASH", - 0x2bf0: "ER_SHA_PWD_AUTH_REQUIRES_RSA_OR_SSL", - 0x2bf1: "ER_SHA_PWD_RSA_KEY_TOO_LONG", - 0x2bf2: "ER_PLUGIN_COMMON_FAILED_TO_OPEN_FILTER_TABLES", - 0x2bf3: "ER_PLUGIN_COMMON_FAILED_TO_OPEN_TABLE", - 0x2bf4: "ER_AUTH_LDAP_ERROR_LOGGER_ERROR_MSG", - 0x2bf5: "ER_CONN_CONTROL_ERROR_MSG", - 0x2bf6: "ER_GRP_RPL_ERROR_MSG", - 0x2bf7: "ER_SHA_PWD_SALT_FOR_USER_CORRUPT", - 0x2bf8: "ER_SYS_VAR_COMPONENT_OOM", - 0x2bf9: "ER_SYS_VAR_COMPONENT_VARIABLE_SET_READ_ONLY", - 0x2bfa: "ER_SYS_VAR_COMPONENT_UNKNOWN_VARIABLE_TYPE", - 0x2bfb: "ER_SYS_VAR_COMPONENT_FAILED_TO_PARSE_VARIABLE_OPTIONS", - 0x2bfc: "ER_SYS_VAR_COMPONENT_FAILED_TO_MAKE_VARIABLE_PERSISTENT", - 0x2bfd: "ER_COMPONENT_FILTER_CONFUSED", - 0x2bfe: "ER_STOP_SLAVE_IO_THREAD_DISK_SPACE", - 0x2bff: "ER_LOG_FILE_CANNOT_OPEN", - 0x2c04: "ER_PERSIST_OPTION_STATUS", - 0x2c05: "ER_NOT_IMPLEMENTED_GET_TABLESPACE_STATISTICS", - 0x2c08: "ER_SSL_FIPS_MODE_ERROR", - 0x2c09: "ER_CONN_INIT_CONNECT_IGNORED", - 0x2c0a: "ER_UNSUPPORTED_SQL_MODE", - 0x2c0b: "ER_REWRITER_OOM", - 0x2c0c: "ER_REWRITER_TABLE_MALFORMED_ERROR", - 0x2c0d: "ER_REWRITER_LOAD_FAILED", - 0x2c0e: "ER_REWRITER_READ_FAILED", - 0x2c0f: "ER_CONN_CONTROL_EVENT_COORDINATOR_INIT_FAILED", - 0x2c10: "ER_CONN_CONTROL_STAT_CONN_DELAY_TRIGGERED_UPDATE_FAILED", - 0x2c11: "ER_CONN_CONTROL_STAT_CONN_DELAY_TRIGGERED_RESET_FAILED", - 0x2c12: "ER_CONN_CONTROL_INVALID_CONN_DELAY_TYPE", - 0x2c13: "ER_CONN_CONTROL_DELAY_ACTION_INIT_FAILED", - 0x2c14: "ER_CONN_CONTROL_FAILED_TO_SET_CONN_DELAY", - 0x2c15: "ER_CONN_CONTROL_FAILED_TO_UPDATE_CONN_DELAY_HASH", - 0x2c16: "ER_XPLUGIN_FORCE_STOP_CLIENT", - 0x2c17: "ER_XPLUGIN_MAX_AUTH_ATTEMPTS_REACHED", - 0x2c18: "ER_XPLUGIN_BUFFER_PAGE_ALLOC_FAILED", - 0x2c19: "ER_XPLUGIN_DETECTED_HANGING_CLIENTS", - 0x2c1a: "ER_XPLUGIN_FAILED_TO_ACCEPT_CLIENT", - 0x2c1b: "ER_XPLUGIN_FAILED_TO_SCHEDULE_CLIENT", - 0x2c1c: "ER_XPLUGIN_FAILED_TO_PREPARE_IO_INTERFACES", - 0x2c1d: "ER_XPLUGIN_SRV_SESSION_INIT_THREAD_FAILED", - 0x2c1e: "ER_XPLUGIN_UNABLE_TO_USE_USER_SESSION_ACCOUNT", - 0x2c1f: "ER_XPLUGIN_REFERENCE_TO_USER_ACCOUNT_DOC_SECTION", - 0x2c20: "ER_XPLUGIN_UNEXPECTED_EXCEPTION_DISPATCHING_CMD", - 0x2c21: "ER_XPLUGIN_EXCEPTION_IN_TASK_SCHEDULER", - 0x2c22: "ER_XPLUGIN_TASK_SCHEDULING_FAILED", - 0x2c23: "ER_XPLUGIN_EXCEPTION_IN_EVENT_LOOP", - 0x2c24: "ER_XPLUGIN_LISTENER_SETUP_FAILED", - 0x2c25: "ER_XPLUING_NET_STARTUP_FAILED", - 0x2c26: "ER_XPLUGIN_FAILED_AT_SSL_CONF", - 0x2c27: "ER_XPLUGIN_CLIENT_SSL_HANDSHAKE_FAILED", - 0x2c28: "ER_XPLUGIN_SSL_HANDSHAKE_WITH_SERVER_FAILED", - 0x2c29: "ER_XPLUGIN_FAILED_TO_CREATE_SESSION_FOR_CONN", - 0x2c2a: "ER_XPLUGIN_FAILED_TO_INITIALIZE_SESSION", - 0x2c2b: "ER_XPLUGIN_MESSAGE_TOO_LONG", - 0x2c2c: "ER_XPLUGIN_UNINITIALIZED_MESSAGE", - 0x2c2d: "ER_XPLUGIN_FAILED_TO_SET_MIN_NUMBER_OF_WORKERS", - 0x2c2e: "ER_XPLUGIN_UNABLE_TO_ACCEPT_CONNECTION", - 0x2c2f: "ER_XPLUGIN_ALL_IO_INTERFACES_DISABLED", - 0x2c30: "ER_XPLUGIN_INVALID_MSG_DURING_CLIENT_INIT", - 0x2c31: "ER_XPLUGIN_CLOSING_CLIENTS_ON_SHUTDOWN", - 0x2c32: "ER_XPLUGIN_ERROR_READING_SOCKET", - 0x2c33: "ER_XPLUGIN_PEER_DISCONNECTED_WHILE_READING_MSG_BODY", - 0x2c34: "ER_XPLUGIN_READ_FAILED_CLOSING_CONNECTION", - 0x2c35: "ER_XPLUGIN_INVALID_AUTH_METHOD", - 0x2c36: "ER_XPLUGIN_UNEXPECTED_MSG_DURING_AUTHENTICATION", - 0x2c37: "ER_XPLUGIN_ERROR_WRITING_TO_CLIENT", - 0x2c38: "ER_XPLUGIN_SCHEDULER_STARTED", - 0x2c39: "ER_XPLUGIN_SCHEDULER_STOPPED", - 0x2c3a: "ER_XPLUGIN_LISTENER_SYS_VARIABLE_ERROR", - 0x2c3b: "ER_XPLUGIN_LISTENER_STATUS_MSG", - 0x2c3c: "ER_XPLUGIN_RETRYING_BIND_ON_PORT", - 0x2c3d: "ER_XPLUGIN_SHUTDOWN_TRIGGERED", - 0x2c3e: "ER_XPLUGIN_USER_ACCOUNT_WITH_ALL_PERMISSIONS", - 0x2c3f: "ER_XPLUGIN_EXISTING_USER_ACCOUNT_WITH_INCOMPLETE_GRANTS", - 0x2c40: "ER_XPLUGIN_SERVER_STARTS_HANDLING_CONNECTIONS", - 0x2c41: "ER_XPLUGIN_SERVER_STOPPED_HANDLING_CONNECTIONS", - 0x2c42: "ER_XPLUGIN_FAILED_TO_INTERRUPT_SESSION", - 0x2c43: "ER_XPLUGIN_CLIENT_RELEASE_TRIGGERED", - 0x2c44: "ER_XPLUGIN_IPv6_AVAILABLE", - 0x2c45: "ER_XPLUGIN_UNIX_SOCKET_NOT_CONFIGURED", - 0x2c46: "ER_XPLUGIN_CLIENT_KILL_MSG", - 0x2c47: "ER_XPLUGIN_FAILED_TO_GET_SECURITY_CTX", - 0x2c48: "ER_XPLUGIN_FAILED_TO_SWITCH_SECURITY_CTX_TO_ROOT", - 0x2c49: "ER_XPLUGIN_FAILED_TO_CLOSE_SQL_SESSION", - 0x2c4a: "ER_XPLUGIN_FAILED_TO_EXECUTE_ADMIN_CMD", - 0x2c4b: "ER_XPLUGIN_EMPTY_ADMIN_CMD", - 0x2c4c: "ER_XPLUGIN_FAILED_TO_GET_SYS_VAR", - 0x2c4d: "ER_XPLUGIN_FAILED_TO_GET_CREATION_STMT", - 0x2c4e: "ER_XPLUGIN_FAILED_TO_GET_ENGINE_INFO", - 0x2c4f: "ER_XPLUGIN_FAIL_TO_GET_RESULT_DATA", - 0x2c50: "ER_XPLUGIN_CAPABILITY_EXPIRED_PASSWORD", - 0x2c51: "ER_XPLUGIN_FAILED_TO_SET_SO_REUSEADDR_FLAG", - 0x2c52: "ER_XPLUGIN_FAILED_TO_OPEN_INTERNAL_SESSION", - 0x2c53: "ER_XPLUGIN_FAILED_TO_SWITCH_CONTEXT", - 0x2c54: "ER_XPLUGIN_FAILED_TO_UNREGISTER_UDF", - 0x2c55: "ER_XPLUGIN_GET_PEER_ADDRESS_FAILED", - 0x2c56: "ER_XPLUGIN_CAPABILITY_CLIENT_INTERACTIVE_FAILED", - 0x2c57: "ER_XPLUGIN_FAILED_TO_RESET_IPV6_V6ONLY_FLAG", - 0x2c58: "ER_KEYRING_INVALID_KEY_TYPE", - 0x2c59: "ER_KEYRING_INVALID_KEY_LENGTH", - 0x2c5a: "ER_KEYRING_FAILED_TO_CREATE_KEYRING_DIR", - 0x2c5b: "ER_KEYRING_FILE_INIT_FAILED", - 0x2c5c: "ER_KEYRING_INTERNAL_EXCEPTION_FAILED_FILE_INIT", - 0x2c5d: "ER_KEYRING_FAILED_TO_GENERATE_KEY", - 0x2c5e: "ER_KEYRING_CHECK_KEY_FAILED_DUE_TO_INVALID_KEY", - 0x2c5f: "ER_KEYRING_CHECK_KEY_FAILED_DUE_TO_EMPTY_KEY_ID", - 0x2c60: "ER_KEYRING_OPERATION_FAILED_DUE_TO_INTERNAL_ERROR", - 0x2c61: "ER_KEYRING_INCORRECT_FILE", - 0x2c62: "ER_KEYRING_FOUND_MALFORMED_BACKUP_FILE", - 0x2c63: "ER_KEYRING_FAILED_TO_RESTORE_FROM_BACKUP_FILE", - 0x2c64: "ER_KEYRING_FAILED_TO_FLUSH_KEYRING_TO_FILE", - 0x2c65: "ER_KEYRING_FAILED_TO_GET_FILE_STAT", - 0x2c66: "ER_KEYRING_FAILED_TO_REMOVE_FILE", - 0x2c67: "ER_KEYRING_FAILED_TO_TRUNCATE_FILE", - 0x2c68: "ER_KEYRING_UNKNOWN_ERROR", - 0x2c69: "ER_KEYRING_FAILED_TO_SET_KEYRING_FILE_DATA", - 0x2c6a: "ER_KEYRING_FILE_IO_ERROR", - 0x2c6b: "ER_KEYRING_FAILED_TO_LOAD_KEYRING_CONTENT", - 0x2c6c: "ER_KEYRING_FAILED_TO_FLUSH_KEYS_TO_KEYRING", - 0x2c6d: "ER_KEYRING_FAILED_TO_FLUSH_KEYS_TO_KEYRING_BACKUP", - 0x2c6e: "ER_KEYRING_KEY_FETCH_FAILED_DUE_TO_EMPTY_KEY_ID", - 0x2c6f: "ER_KEYRING_FAILED_TO_REMOVE_KEY_DUE_TO_EMPTY_ID", - 0x2c70: "ER_KEYRING_OKV_INCORRECT_KEY_VAULT_CONFIGURED", - 0x2c71: "ER_KEYRING_OKV_INIT_FAILED_DUE_TO_INCORRECT_CONF", - 0x2c72: "ER_KEYRING_OKV_INIT_FAILED_DUE_TO_INTERNAL_ERROR", - 0x2c73: "ER_KEYRING_OKV_INVALID_KEY_TYPE", - 0x2c74: "ER_KEYRING_OKV_INVALID_KEY_LENGTH_FOR_CIPHER", - 0x2c75: "ER_KEYRING_OKV_FAILED_TO_GENERATE_KEY_DUE_TO_INTERNAL_ERROR", - 0x2c76: "ER_KEYRING_OKV_FAILED_TO_FIND_SERVER_ENTRY", - 0x2c77: "ER_KEYRING_OKV_FAILED_TO_FIND_STANDBY_SERVER_ENTRY", - 0x2c78: "ER_KEYRING_OKV_FAILED_TO_PARSE_CONF_FILE", - 0x2c79: "ER_KEYRING_OKV_FAILED_TO_LOAD_KEY_UID", - 0x2c7a: "ER_KEYRING_OKV_FAILED_TO_INIT_SSL_LAYER", - 0x2c7b: "ER_KEYRING_OKV_FAILED_TO_INIT_CLIENT", - 0x2c7c: "ER_KEYRING_OKV_CONNECTION_TO_SERVER_FAILED", - 0x2c7d: "ER_KEYRING_OKV_FAILED_TO_REMOVE_KEY", - 0x2c7e: "ER_KEYRING_OKV_FAILED_TO_ADD_ATTRIBUTE", - 0x2c7f: "ER_KEYRING_OKV_FAILED_TO_GENERATE_KEY", - 0x2c80: "ER_KEYRING_OKV_FAILED_TO_STORE_KEY", - 0x2c81: "ER_KEYRING_OKV_FAILED_TO_ACTIVATE_KEYS", - 0x2c82: "ER_KEYRING_OKV_FAILED_TO_FETCH_KEY", - 0x2c83: "ER_KEYRING_OKV_FAILED_TO_STORE_OR_GENERATE_KEY", - 0x2c84: "ER_KEYRING_OKV_FAILED_TO_RETRIEVE_KEY_SIGNATURE", - 0x2c85: "ER_KEYRING_OKV_FAILED_TO_RETRIEVE_KEY", - 0x2c86: "ER_KEYRING_OKV_FAILED_TO_LOAD_SSL_TRUST_STORE", - 0x2c87: "ER_KEYRING_OKV_FAILED_TO_SET_CERTIFICATE_FILE", - 0x2c88: "ER_KEYRING_OKV_FAILED_TO_SET_KEY_FILE", - 0x2c89: "ER_KEYRING_OKV_KEY_MISMATCH", - 0x2c8a: "ER_KEYRING_ENCRYPTED_FILE_INCORRECT_KEYRING_FILE", - 0x2c8b: "ER_KEYRING_ENCRYPTED_FILE_DECRYPTION_FAILED", - 0x2c8c: "ER_KEYRING_ENCRYPTED_FILE_FOUND_MALFORMED_BACKUP_FILE", - 0x2c8d: "ER_KEYRING_ENCRYPTED_FILE_FAILED_TO_RESTORE_KEYRING", - 0x2c8e: "ER_KEYRING_ENCRYPTED_FILE_FAILED_TO_FLUSH_KEYRING", - 0x2c8f: "ER_KEYRING_ENCRYPTED_FILE_ENCRYPTION_FAILED", - 0x2c90: "ER_KEYRING_ENCRYPTED_FILE_INVALID_KEYRING_DIR", - 0x2c91: "ER_KEYRING_ENCRYPTED_FILE_FAILED_TO_CREATE_KEYRING_DIR", - 0x2c92: "ER_KEYRING_ENCRYPTED_FILE_PASSWORD_IS_INVALID", - 0x2c93: "ER_KEYRING_ENCRYPTED_FILE_PASSWORD_IS_TOO_LONG", - 0x2c94: "ER_KEYRING_ENCRYPTED_FILE_INIT_FAILURE", - 0x2c95: "ER_KEYRING_ENCRYPTED_FILE_INIT_FAILED_DUE_TO_INTERNAL_ERROR", - 0x2c96: "ER_KEYRING_ENCRYPTED_FILE_GEN_KEY_FAILED_DUE_TO_INTERNAL_ERROR", - 0x2c97: "ER_KEYRING_AWS_FAILED_TO_SET_CMK_ID", - 0x2c98: "ER_KEYRING_AWS_FAILED_TO_SET_REGION", - 0x2c99: "ER_KEYRING_AWS_FAILED_TO_OPEN_CONF_FILE", - 0x2c9a: "ER_KEYRING_AWS_FAILED_TO_ACCESS_KEY_ID_FROM_CONF_FILE", - 0x2c9b: "ER_KEYRING_AWS_FAILED_TO_ACCESS_KEY_FROM_CONF_FILE", - 0x2c9c: "ER_KEYRING_AWS_INVALID_CONF_FILE_PATH", - 0x2c9d: "ER_KEYRING_AWS_INVALID_DATA_FILE_PATH", - 0x2c9e: "ER_KEYRING_AWS_FAILED_TO_ACCESS_OR_CREATE_KEYRING_DIR", - 0x2c9f: "ER_KEYRING_AWS_FAILED_TO_ACCESS_OR_CREATE_KEYRING_DATA_FILE", - 0x2ca0: "ER_KEYRING_AWS_FAILED_TO_INIT_DUE_TO_INTERNAL_ERROR", - 0x2ca1: "ER_KEYRING_AWS_FAILED_TO_ACCESS_DATA_FILE", - 0x2ca2: "ER_KEYRING_AWS_CMK_ID_NOT_SET", - 0x2ca3: "ER_KEYRING_AWS_FAILED_TO_GET_KMS_CREDENTIAL_FROM_CONF_FILE", - 0x2ca4: "ER_KEYRING_AWS_INIT_FAILURE", - 0x2ca5: "ER_KEYRING_AWS_FAILED_TO_INIT_DUE_TO_PLUGIN_INTERNAL_ERROR", - 0x2ca6: "ER_KEYRING_AWS_INVALID_KEY_LENGTH_FOR_CIPHER", - 0x2ca7: "ER_KEYRING_AWS_FAILED_TO_GENERATE_KEY_DUE_TO_INTERNAL_ERROR", - 0x2ca8: "ER_KEYRING_AWS_INCORRECT_FILE", - 0x2ca9: "ER_KEYRING_AWS_FOUND_MALFORMED_BACKUP_FILE", - 0x2caa: "ER_KEYRING_AWS_FAILED_TO_RESTORE_FROM_BACKUP_FILE", - 0x2cab: "ER_KEYRING_AWS_FAILED_TO_FLUSH_KEYRING_TO_FILE", - 0x2cac: "ER_KEYRING_AWS_INCORRECT_REGION", - 0x2cad: "ER_KEYRING_AWS_FAILED_TO_CONNECT_KMS", - 0x2cae: "ER_KEYRING_AWS_FAILED_TO_GENERATE_NEW_KEY", - 0x2caf: "ER_KEYRING_AWS_FAILED_TO_ENCRYPT_KEY", - 0x2cb0: "ER_KEYRING_AWS_FAILED_TO_RE_ENCRYPT_KEY", - 0x2cb1: "ER_KEYRING_AWS_FAILED_TO_DECRYPT_KEY", - 0x2cb2: "ER_KEYRING_AWS_FAILED_TO_ROTATE_CMK", - 0x2cb3: "ER_GRP_RPL_GTID_ALREADY_USED", - 0x2cb4: "ER_GRP_RPL_APPLIER_THD_KILLED", - 0x2cb5: "ER_GRP_RPL_EVENT_HANDLING_ERROR", - 0x2cb6: "ER_GRP_RPL_ERROR_GTID_EXECUTION_INFO", - 0x2cb7: "ER_GRP_RPL_CERTIFICATE_SIZE_ERROR", - 0x2cb8: "ER_GRP_RPL_CREATE_APPLIER_CACHE_ERROR", - 0x2cb9: "ER_GRP_RPL_UNBLOCK_WAITING_THD", - 0x2cba: "ER_GRP_RPL_APPLIER_PIPELINE_NOT_DISPOSED", - 0x2cbb: "ER_GRP_RPL_APPLIER_THD_EXECUTION_ABORTED", - 0x2cbc: "ER_GRP_RPL_APPLIER_EXECUTION_FATAL_ERROR", - 0x2cbd: "ER_GRP_RPL_ERROR_STOPPING_CHANNELS", - 0x2cbe: "ER_GRP_RPL_ERROR_SENDING_SINGLE_PRIMARY_MSSG", - 0x2cbf: "ER_GRP_RPL_UPDATE_TRANS_SNAPSHOT_VER_ERROR", - 0x2cc0: "ER_GRP_RPL_SIDNO_FETCH_ERROR", - 0x2cc1: "ER_GRP_RPL_BROADCAST_COMMIT_TRANS_MSSG_FAILED", - 0x2cc2: "ER_GRP_RPL_GROUP_NAME_PARSE_ERROR", - 0x2cc3: "ER_GRP_RPL_ADD_GRPSID_TO_GRPGTIDSID_MAP_ERROR", - 0x2cc4: "ER_GRP_RPL_UPDATE_GRPGTID_EXECUTED_ERROR", - 0x2cc5: "ER_GRP_RPL_DONOR_TRANS_INFO_ERROR", - 0x2cc6: "ER_GRP_RPL_SERVER_CONN_ERROR", - 0x2cc7: "ER_GRP_RPL_ERROR_FETCHING_GTID_EXECUTED_SET", - 0x2cc8: "ER_GRP_RPL_ADD_GTID_TO_GRPGTID_EXECUTED_ERROR", - 0x2cc9: "ER_GRP_RPL_ERROR_FETCHING_GTID_SET", - 0x2cca: "ER_GRP_RPL_ADD_RETRIEVED_SET_TO_GRP_GTID_EXECUTED_ERROR", - 0x2ccb: "ER_GRP_RPL_CERTIFICATION_INITIALIZATION_FAILURE", - 0x2ccc: "ER_GRP_RPL_UPDATE_LAST_CONFLICT_FREE_TRANS_ERROR", - 0x2ccd: "ER_GRP_RPL_UPDATE_TRANS_SNAPSHOT_REF_VER_ERROR", - 0x2cce: "ER_GRP_RPL_FETCH_TRANS_SIDNO_ERROR", - 0x2ccf: "ER_GRP_RPL_ERROR_VERIFYING_SIDNO", - 0x2cd0: "ER_GRP_RPL_CANT_GENERATE_GTID", - 0x2cd1: "ER_GRP_RPL_INVALID_GTID_SET", - 0x2cd2: "ER_GRP_RPL_UPDATE_GTID_SET_ERROR", - 0x2cd3: "ER_GRP_RPL_RECEIVED_SET_MISSING_GTIDS", - 0x2cd4: "ER_GRP_RPL_SKIP_COMPUTATION_TRANS_COMMITTED", - 0x2cd5: "ER_GRP_RPL_NULL_PACKET", - 0x2cd6: "ER_GRP_RPL_CANT_READ_GTID", - 0x2cd7: "ER_GRP_RPL_PROCESS_GTID_SET_ERROR", - 0x2cd8: "ER_GRP_RPL_PROCESS_INTERSECTION_GTID_SET_ERROR", - 0x2cd9: "ER_GRP_RPL_SET_STABLE_TRANS_ERROR", - 0x2cda: "ER_GRP_RPL_CANT_READ_GRP_GTID_EXTRACTED", - 0x2cdb: "ER_GRP_RPL_CANT_READ_WRITE_SET_ITEM", - 0x2cdc: "ER_GRP_RPL_INIT_CERTIFICATION_INFO_FAILURE", - 0x2cdd: "ER_GRP_RPL_CONFLICT_DETECTION_DISABLED", - 0x2cde: "ER_GRP_RPL_MSG_DISCARDED", - 0x2cdf: "ER_GRP_RPL_MISSING_GRP_RPL_APPLIER", - 0x2ce0: "ER_GRP_RPL_CERTIFIER_MSSG_PROCESS_ERROR", - 0x2ce1: "ER_GRP_RPL_SRV_NOT_ONLINE", - 0x2ce2: "ER_GRP_RPL_SRV_ONLINE", - 0x2ce3: "ER_GRP_RPL_DISABLE_SRV_READ_MODE_RESTRICTED", - 0x2ce4: "ER_GRP_RPL_MEM_ONLINE", - 0x2ce5: "ER_GRP_RPL_MEM_UNREACHABLE", - 0x2ce6: "ER_GRP_RPL_MEM_REACHABLE", - 0x2ce7: "ER_GRP_RPL_SRV_BLOCKED", - 0x2ce8: "ER_GRP_RPL_SRV_BLOCKED_FOR_SECS", - 0x2ce9: "ER_GRP_RPL_CHANGE_GRP_MEM_NOT_PROCESSED", - 0x2cea: "ER_GRP_RPL_MEMBER_CONTACT_RESTORED", - 0x2ceb: "ER_GRP_RPL_MEMBER_REMOVED", - 0x2cec: "ER_GRP_RPL_PRIMARY_MEMBER_LEFT_GRP", - 0x2ced: "ER_GRP_RPL_MEMBER_ADDED", - 0x2cee: "ER_GRP_RPL_MEMBER_EXIT_PLUGIN_ERROR", - 0x2cef: "ER_GRP_RPL_MEMBER_CHANGE", - 0x2cf0: "ER_GRP_RPL_MEMBER_LEFT_GRP", - 0x2cf1: "ER_GRP_RPL_MEMBER_EXPELLED", - 0x2cf2: "ER_GRP_RPL_SESSION_OPEN_FAILED", - 0x2cf3: "ER_GRP_RPL_NEW_PRIMARY_ELECTED", - 0x2cf4: "ER_GRP_RPL_DISABLE_READ_ONLY_FAILED", - 0x2cf5: "ER_GRP_RPL_ENABLE_READ_ONLY_FAILED", - 0x2cf6: "ER_GRP_RPL_SRV_PRIMARY_MEM", - 0x2cf7: "ER_GRP_RPL_SRV_SECONDARY_MEM", - 0x2cf8: "ER_GRP_RPL_NO_SUITABLE_PRIMARY_MEM", - 0x2cf9: "ER_GRP_RPL_SUPER_READ_ONLY_ACTIVATE_ERROR", - 0x2cfa: "ER_GRP_RPL_EXCEEDS_AUTO_INC_VALUE", - 0x2cfb: "ER_GRP_RPL_DATA_NOT_PROVIDED_BY_MEM", - 0x2cfc: "ER_GRP_RPL_MEMBER_ALREADY_EXISTS", - 0x2cfd: "ER_GRP_RPL_GRP_CHANGE_INFO_EXTRACT_ERROR", - 0x2cfe: "ER_GRP_RPL_GTID_EXECUTED_EXTRACT_ERROR", - 0x2cff: "ER_GRP_RPL_GTID_SET_EXTRACT_ERROR", - 0x2d00: "ER_GRP_RPL_START_FAILED", - 0x2d01: "ER_GRP_RPL_MEMBER_VER_INCOMPATIBLE", - 0x2d02: "ER_GRP_RPL_TRANS_NOT_PRESENT_IN_GRP", - 0x2d03: "ER_GRP_RPL_TRANS_GREATER_THAN_GRP", - 0x2d04: "ER_GRP_RPL_MEMBER_VERSION_LOWER_THAN_GRP", - 0x2d05: "ER_GRP_RPL_LOCAL_GTID_SETS_PROCESS_ERROR", - 0x2d06: "ER_GRP_RPL_MEMBER_TRANS_GREATER_THAN_GRP", - 0x2d07: "ER_GRP_RPL_BLOCK_SIZE_DIFF_FROM_GRP", - 0x2d08: "ER_GRP_RPL_TRANS_WRITE_SET_EXTRACT_DIFF_FROM_GRP", - 0x2d09: "ER_GRP_RPL_MEMBER_CFG_INCOMPATIBLE_WITH_GRP_CFG", - 0x2d0a: "ER_GRP_RPL_MEMBER_STOP_RPL_CHANNELS_ERROR", - 0x2d0b: "ER_GRP_RPL_PURGE_APPLIER_LOGS", - 0x2d0c: "ER_GRP_RPL_RESET_APPLIER_MODULE_LOGS_ERROR", - 0x2d0d: "ER_GRP_RPL_APPLIER_THD_SETUP_ERROR", - 0x2d0e: "ER_GRP_RPL_APPLIER_THD_START_ERROR", - 0x2d0f: "ER_GRP_RPL_APPLIER_THD_STOP_ERROR", - 0x2d10: "ER_GRP_RPL_FETCH_TRANS_DATA_FAILED", - 0x2d11: "ER_GRP_RPL_SLAVE_IO_THD_PRIMARY_UNKNOWN", - 0x2d12: "ER_GRP_RPL_SALVE_IO_THD_ON_SECONDARY_MEMBER", - 0x2d13: "ER_GRP_RPL_SLAVE_SQL_THD_PRIMARY_UNKNOWN", - 0x2d14: "ER_GRP_RPL_SLAVE_SQL_THD_ON_SECONDARY_MEMBER", - 0x2d15: "ER_GRP_RPL_NEEDS_INNODB_TABLE", - 0x2d16: "ER_GRP_RPL_PRIMARY_KEY_NOT_DEFINED", - 0x2d17: "ER_GRP_RPL_FK_WITH_CASCADE_UNSUPPORTED", - 0x2d18: "ER_GRP_RPL_AUTO_INC_RESET", - 0x2d19: "ER_GRP_RPL_AUTO_INC_OFFSET_RESET", - 0x2d1a: "ER_GRP_RPL_AUTO_INC_SET", - 0x2d1b: "ER_GRP_RPL_AUTO_INC_OFFSET_SET", - 0x2d1c: "ER_GRP_RPL_FETCH_TRANS_CONTEXT_FAILED", - 0x2d1d: "ER_GRP_RPL_FETCH_FORMAT_DESC_LOG_EVENT_FAILED", - 0x2d1e: "ER_GRP_RPL_FETCH_TRANS_CONTEXT_LOG_EVENT_FAILED", - 0x2d1f: "ER_GRP_RPL_FETCH_SNAPSHOT_VERSION_FAILED", - 0x2d20: "ER_GRP_RPL_FETCH_GTID_LOG_EVENT_FAILED", - 0x2d21: "ER_GRP_RPL_UPDATE_SERV_CERTIFICATE_FAILED", - 0x2d22: "ER_GRP_RPL_ADD_GTID_INFO_WITH_LOCAL_GTID_FAILED", - 0x2d23: "ER_GRP_RPL_ADD_GTID_INFO_WITHOUT_LOCAL_GTID_FAILED", - 0x2d24: "ER_GRP_RPL_NOTIFY_CERTIFICATION_OUTCOME_FAILED", - 0x2d25: "ER_GRP_RPL_ADD_GTID_INFO_WITH_REMOTE_GTID_FAILED", - 0x2d26: "ER_GRP_RPL_ADD_GTID_INFO_WITHOUT_REMOTE_GTID_FAILED", - 0x2d27: "ER_GRP_RPL_FETCH_VIEW_CHANGE_LOG_EVENT_FAILED", - 0x2d28: "ER_GRP_RPL_CONTACT_WITH_SRV_FAILED", - 0x2d29: "ER_GRP_RPL_SRV_WAIT_TIME_OUT", - 0x2d2a: "ER_GRP_RPL_FETCH_LOG_EVENT_FAILED", - 0x2d2b: "ER_GRP_RPL_START_GRP_RPL_FAILED", - 0x2d2c: "ER_GRP_RPL_CONN_INTERNAL_PLUGIN_FAIL", - 0x2d2d: "ER_GRP_RPL_SUPER_READ_ON", - 0x2d2e: "ER_GRP_RPL_SUPER_READ_OFF", - 0x2d2f: "ER_GRP_RPL_KILLED_SESSION_ID", - 0x2d30: "ER_GRP_RPL_KILLED_FAILED_ID", - 0x2d31: "ER_GRP_RPL_INTERNAL_QUERY", - 0x2d32: "ER_GRP_RPL_COPY_FROM_EMPTY_STRING", - 0x2d33: "ER_GRP_RPL_QUERY_FAIL", - 0x2d34: "ER_GRP_RPL_CREATE_SESSION_UNABLE", - 0x2d35: "ER_GRP_RPL_MEMBER_NOT_FOUND", - 0x2d36: "ER_GRP_RPL_MAXIMUM_CONNECTION_RETRIES_REACHED", - 0x2d37: "ER_GRP_RPL_ALL_DONORS_LEFT_ABORT_RECOVERY", - 0x2d38: "ER_GRP_RPL_ESTABLISH_RECOVERY_WITH_DONOR", - 0x2d39: "ER_GRP_RPL_ESTABLISH_RECOVERY_WITH_ANOTHER_DONOR", - 0x2d3a: "ER_GRP_RPL_NO_VALID_DONOR", - 0x2d3b: "ER_GRP_RPL_CONFIG_RECOVERY", - 0x2d3c: "ER_GRP_RPL_ESTABLISHING_CONN_GRP_REC_DONOR", - 0x2d3d: "ER_GRP_RPL_CREATE_GRP_RPL_REC_CHANNEL", - 0x2d3e: "ER_GRP_RPL_DONOR_SERVER_CONN", - 0x2d3f: "ER_GRP_RPL_CHECK_STATUS_TABLE", - 0x2d40: "ER_GRP_RPL_STARTING_GRP_REC", - 0x2d41: "ER_GRP_RPL_DONOR_CONN_TERMINATION", - 0x2d42: "ER_GRP_RPL_STOPPING_GRP_REC", - 0x2d43: "ER_GRP_RPL_PURGE_REC", - 0x2d44: "ER_GRP_RPL_UNABLE_TO_KILL_CONN_REC_DONOR_APPLIER", - 0x2d45: "ER_GRP_RPL_UNABLE_TO_KILL_CONN_REC_DONOR_FAILOVER", - 0x2d46: "ER_GRP_RPL_FAILED_TO_NOTIFY_GRP_MEMBERSHIP_EVENT", - 0x2d47: "ER_GRP_RPL_FAILED_TO_BROADCAST_GRP_MEMBERSHIP_NOTIFICATION", - 0x2d48: "ER_GRP_RPL_FAILED_TO_BROADCAST_MEMBER_STATUS_NOTIFICATION", - 0x2d49: "ER_GRP_RPL_OOM_FAILED_TO_GENERATE_IDENTIFICATION_HASH", - 0x2d4a: "ER_GRP_RPL_WRITE_IDENT_HASH_BASE64_ENCODING_FAILED", - 0x2d4b: "ER_GRP_RPL_INVALID_BINLOG_FORMAT", - 0x2d4c: "ER_GRP_RPL_BINLOG_CHECKSUM_SET", - 0x2d4d: "ER_GRP_RPL_TRANS_WRITE_SET_EXTRACTION_NOT_SET", - 0x2d4e: "ER_GRP_RPL_UNSUPPORTED_TRANS_ISOLATION", - 0x2d4f: "ER_GRP_RPL_CANNOT_EXECUTE_TRANS_WHILE_STOPPING", - 0x2d50: "ER_GRP_RPL_CANNOT_EXECUTE_TRANS_WHILE_RECOVERING", - 0x2d51: "ER_GRP_RPL_CANNOT_EXECUTE_TRANS_IN_ERROR_STATE", - 0x2d52: "ER_GRP_RPL_CANNOT_EXECUTE_TRANS_IN_OFFLINE_MODE", - 0x2d53: "ER_GRP_RPL_MULTIPLE_CACHE_TYPE_NOT_SUPPORTED_FOR_SESSION", - 0x2d54: "ER_GRP_RPL_FAILED_TO_REINIT_BINLOG_CACHE_FOR_READ", - 0x2d55: "ER_GRP_RPL_FAILED_TO_CREATE_TRANS_CONTEXT", - 0x2d56: "ER_GRP_RPL_FAILED_TO_EXTRACT_TRANS_WRITE_SET", - 0x2d57: "ER_GRP_RPL_FAILED_TO_GATHER_TRANS_WRITE_SET", - 0x2d58: "ER_GRP_RPL_TRANS_SIZE_EXCEEDS_LIMIT", - 0x2d59: "ER_GRP_RPL_REINIT_OF_INTERNAL_CACHE_FOR_READ_FAILED", - 0x2d5a: "ER_GRP_RPL_APPENDING_DATA_TO_INTERNAL_CACHE_FAILED", - 0x2d5b: "ER_GRP_RPL_WRITE_TO_BINLOG_CACHE_FAILED", - 0x2d5c: "ER_GRP_RPL_FAILED_TO_REGISTER_TRANS_OUTCOME_NOTIFICTION", - 0x2d5d: "ER_GRP_RPL_MSG_TOO_LONG_BROADCASTING_TRANS_FAILED", - 0x2d5e: "ER_GRP_RPL_BROADCASTING_TRANS_TO_GRP_FAILED", - 0x2d5f: "ER_GRP_RPL_ERROR_WHILE_WAITING_FOR_CONFLICT_DETECTION", - 0x2d60: "ER_GRP_RPL_REINIT_OF_INTERNAL_CACHE_FOR_WRITE_FAILED", - 0x2d61: "ER_GRP_RPL_FAILED_TO_CREATE_COMMIT_CACHE", - 0x2d62: "ER_GRP_RPL_REINIT_OF_COMMIT_CACHE_FOR_WRITE_FAILED", - 0x2d63: "ER_GRP_RPL_PREV_REC_SESSION_RUNNING", - 0x2d64: "ER_GRP_RPL_FATAL_REC_PROCESS", - 0x2d65: "ER_GRP_RPL_WHILE_STOPPING_REP_CHANNEL", - 0x2d66: "ER_GRP_RPL_UNABLE_TO_EVALUATE_APPLIER_STATUS", - 0x2d67: "ER_GRP_RPL_ONLY_ONE_SERVER_ALIVE", - 0x2d68: "ER_GRP_RPL_CERTIFICATION_REC_PROCESS", - 0x2d69: "ER_GRP_RPL_UNABLE_TO_ENSURE_EXECUTION_REC", - 0x2d6a: "ER_GRP_RPL_WHILE_SENDING_MSG_REC", - 0x2d6b: "ER_GRP_RPL_READ_UNABLE_FOR_SUPER_READ_ONLY", - 0x2d6c: "ER_GRP_RPL_READ_UNABLE_FOR_READ_ONLY_SUPER_READ_ONLY", - 0x2d6d: "ER_GRP_RPL_UNABLE_TO_RESET_SERVER_READ_MODE", - 0x2d6e: "ER_GRP_RPL_UNABLE_TO_CERTIFY_PLUGIN_TRANS", - 0x2d6f: "ER_GRP_RPL_UNBLOCK_CERTIFIED_TRANS", - 0x2d70: "ER_GRP_RPL_SERVER_WORKING_AS_SECONDARY", - 0x2d71: "ER_GRP_RPL_FAILED_TO_START_WITH_INVALID_SERVER_ID", - 0x2d72: "ER_GRP_RPL_FORCE_MEMBERS_MUST_BE_EMPTY", - 0x2d73: "ER_GRP_RPL_PLUGIN_STRUCT_INIT_NOT_POSSIBLE_ON_SERVER_START", - 0x2d74: "ER_GRP_RPL_FAILED_TO_ENABLE_SUPER_READ_ONLY_MODE", - 0x2d75: "ER_GRP_RPL_FAILED_TO_INIT_COMMUNICATION_ENGINE", - 0x2d76: "ER_GRP_RPL_FAILED_TO_START_ON_SECONDARY_WITH_ASYNC_CHANNELS", - 0x2d77: "ER_GRP_RPL_FAILED_TO_START_COMMUNICATION_ENGINE", - 0x2d78: "ER_GRP_RPL_TIMEOUT_ON_VIEW_AFTER_JOINING_GRP", - 0x2d79: "ER_GRP_RPL_FAILED_TO_CALL_GRP_COMMUNICATION_INTERFACE", - 0x2d7a: "ER_GRP_RPL_MEMBER_SERVER_UUID_IS_INCOMPATIBLE_WITH_GRP", - 0x2d7b: "ER_GRP_RPL_MEMBER_CONF_INFO", - 0x2d7c: "ER_GRP_RPL_FAILED_TO_CONFIRM_IF_SERVER_LEFT_GRP", - 0x2d7d: "ER_GRP_RPL_SERVER_IS_ALREADY_LEAVING", - 0x2d7e: "ER_GRP_RPL_SERVER_ALREADY_LEFT", - 0x2d7f: "ER_GRP_RPL_WAITING_FOR_VIEW_UPDATE", - 0x2d80: "ER_GRP_RPL_TIMEOUT_RECEIVING_VIEW_CHANGE_ON_SHUTDOWN", - 0x2d81: "ER_GRP_RPL_REQUESTING_NON_MEMBER_SERVER_TO_LEAVE", - 0x2d82: "ER_GRP_RPL_IS_STOPPING", - 0x2d83: "ER_GRP_RPL_IS_STOPPED", - 0x2d84: "ER_GRP_RPL_FAILED_TO_ENABLE_READ_ONLY_MODE_ON_SHUTDOWN", - 0x2d85: "ER_GRP_RPL_RECOVERY_MODULE_TERMINATION_TIMED_OUT_ON_SHUTDOWN", - 0x2d86: "ER_GRP_RPL_APPLIER_TERMINATION_TIMED_OUT_ON_SHUTDOWN", - 0x2d87: "ER_GRP_RPL_FAILED_TO_SHUTDOWN_REGISTRY_MODULE", - 0x2d88: "ER_GRP_RPL_FAILED_TO_INIT_HANDLER", - 0x2d89: "ER_GRP_RPL_FAILED_TO_REGISTER_SERVER_STATE_OBSERVER", - 0x2d8a: "ER_GRP_RPL_FAILED_TO_REGISTER_TRANS_STATE_OBSERVER", - 0x2d8b: "ER_GRP_RPL_FAILED_TO_REGISTER_BINLOG_STATE_OBSERVER", - 0x2d8c: "ER_GRP_RPL_FAILED_TO_START_ON_BOOT", - 0x2d8d: "ER_GRP_RPL_FAILED_TO_STOP_ON_PLUGIN_UNINSTALL", - 0x2d8e: "ER_GRP_RPL_FAILED_TO_UNREGISTER_SERVER_STATE_OBSERVER", - 0x2d8f: "ER_GRP_RPL_FAILED_TO_UNREGISTER_TRANS_STATE_OBSERVER", - 0x2d90: "ER_GRP_RPL_FAILED_TO_UNREGISTER_BINLOG_STATE_OBSERVER", - 0x2d91: "ER_GRP_RPL_ALL_OBSERVERS_UNREGISTERED", - 0x2d92: "ER_GRP_RPL_FAILED_TO_PARSE_THE_GRP_NAME", - 0x2d93: "ER_GRP_RPL_FAILED_TO_GENERATE_SIDNO_FOR_GRP", - 0x2d94: "ER_GRP_RPL_APPLIER_NOT_STARTED_DUE_TO_RUNNING_PREV_SHUTDOWN", - 0x2d95: "ER_GRP_RPL_FAILED_TO_INIT_APPLIER_MODULE", - 0x2d96: "ER_GRP_RPL_APPLIER_INITIALIZED", - 0x2d97: "ER_GRP_RPL_COMMUNICATION_SSL_CONF_INFO", - 0x2d98: "ER_GRP_RPL_ABORTS_AS_SSL_NOT_SUPPORTED_BY_MYSQLD", - 0x2d99: "ER_GRP_RPL_SSL_DISABLED", - 0x2d9a: "ER_GRP_RPL_UNABLE_TO_INIT_COMMUNICATION_ENGINE", - 0x2d9b: "ER_GRP_RPL_BINLOG_DISABLED", - 0x2d9c: "ER_GRP_RPL_GTID_MODE_OFF", - 0x2d9d: "ER_GRP_RPL_LOG_SLAVE_UPDATES_NOT_SET", - 0x2d9e: "ER_GRP_RPL_INVALID_TRANS_WRITE_SET_EXTRACTION_VALUE", - 0x2d9f: "ER_GRP_RPL_RELAY_LOG_INFO_REPO_MUST_BE_TABLE", - 0x2da0: "ER_GRP_RPL_MASTER_INFO_REPO_MUST_BE_TABLE", - 0x2da1: "ER_GRP_RPL_INCORRECT_TYPE_SET_FOR_PARALLEL_APPLIER", - 0x2da2: "ER_GRP_RPL_SLAVE_PRESERVE_COMMIT_ORDER_NOT_SET", - 0x2da3: "ER_GRP_RPL_SINGLE_PRIM_MODE_NOT_ALLOWED_WITH_UPDATE_EVERYWHERE", - 0x2da4: "ER_GRP_RPL_MODULE_TERMINATE_ERROR", - 0x2da5: "ER_GRP_RPL_GRP_NAME_OPTION_MANDATORY", - 0x2da6: "ER_GRP_RPL_GRP_NAME_IS_TOO_LONG", - 0x2da7: "ER_GRP_RPL_GRP_NAME_IS_NOT_VALID_UUID", - 0x2da8: "ER_GRP_RPL_FLOW_CTRL_MIN_QUOTA_GREATER_THAN_MAX_QUOTA", - 0x2da9: "ER_GRP_RPL_FLOW_CTRL_MIN_RECOVERY_QUOTA_GREATER_THAN_MAX_QUOTA", - 0x2daa: "ER_GRP_RPL_FLOW_CTRL_MAX_QUOTA_SMALLER_THAN_MIN_QUOTAS", - 0x2dab: "ER_GRP_RPL_INVALID_SSL_RECOVERY_STRING", - 0x2dac: "ER_GRP_RPL_SUPPORTS_ONLY_ONE_FORCE_MEMBERS_SET", - 0x2dad: "ER_GRP_RPL_FORCE_MEMBERS_SET_UPDATE_NOT_ALLOWED", - 0x2dae: "ER_GRP_RPL_GRP_COMMUNICATION_INIT_WITH_CONF", - 0x2daf: "ER_GRP_RPL_UNKNOWN_GRP_RPL_APPLIER_PIPELINE_REQUESTED", - 0x2db0: "ER_GRP_RPL_FAILED_TO_BOOTSTRAP_EVENT_HANDLING_INFRASTRUCTURE", - 0x2db1: "ER_GRP_RPL_APPLIER_HANDLER_NOT_INITIALIZED", - 0x2db2: "ER_GRP_RPL_APPLIER_HANDLER_IS_IN_USE", - 0x2db3: "ER_GRP_RPL_APPLIER_HANDLER_ROLE_IS_IN_USE", - 0x2db4: "ER_GRP_RPL_FAILED_TO_INIT_APPLIER_HANDLER", - 0x2db5: "ER_GRP_RPL_SQL_SERVICE_FAILED_TO_INIT_SESSION_THREAD", - 0x2db6: "ER_GRP_RPL_SQL_SERVICE_COMM_SESSION_NOT_INITIALIZED", - 0x2db7: "ER_GRP_RPL_SQL_SERVICE_SERVER_SESSION_KILLED", - 0x2db8: "ER_GRP_RPL_SQL_SERVICE_FAILED_TO_RUN_SQL_QUERY", - 0x2db9: "ER_GRP_RPL_SQL_SERVICE_SERVER_INTERNAL_FAILURE", - 0x2dba: "ER_GRP_RPL_SQL_SERVICE_RETRIES_EXCEEDED_ON_SESSION_STATE", - 0x2dbb: "ER_GRP_RPL_SQL_SERVICE_FAILED_TO_FETCH_SECURITY_CTX", - 0x2dbc: "ER_GRP_RPL_SQL_SERVICE_SERVER_ACCESS_DENIED_FOR_USER", - 0x2dbd: "ER_GRP_RPL_SQL_SERVICE_MAX_CONN_ERROR_FROM_SERVER", - 0x2dbe: "ER_GRP_RPL_SQL_SERVICE_SERVER_ERROR_ON_CONN", - 0x2dbf: "ER_GRP_RPL_UNREACHABLE_MAJORITY_TIMEOUT_FOR_MEMBER", - 0x2dc0: "ER_GRP_RPL_SERVER_SET_TO_READ_ONLY_DUE_TO_ERRORS", - 0x2dc1: "ER_GRP_RPL_GMS_LISTENER_FAILED_TO_LOG_NOTIFICATION", - 0x2dc2: "ER_GRP_RPL_GRP_COMMUNICATION_ENG_INIT_FAILED", - 0x2dc3: "ER_GRP_RPL_SET_GRP_COMMUNICATION_ENG_LOGGER_FAILED", - 0x2dc4: "ER_GRP_RPL_DEBUG_OPTIONS", - 0x2dc5: "ER_GRP_RPL_INVALID_DEBUG_OPTIONS", - 0x2dc6: "ER_GRP_RPL_EXIT_GRP_GCS_ERROR", - 0x2dc7: "ER_GRP_RPL_GRP_MEMBER_OFFLINE", - 0x2dc8: "ER_GRP_RPL_GCS_INTERFACE_ERROR", - 0x2dc9: "ER_GRP_RPL_FORCE_MEMBER_VALUE_SET_ERROR", - 0x2dca: "ER_GRP_RPL_FORCE_MEMBER_VALUE_SET", - 0x2dcb: "ER_GRP_RPL_FORCE_MEMBER_VALUE_TIME_OUT", - 0x2dcc: "ER_GRP_RPL_BROADCAST_COMMIT_MSSG_TOO_BIG", - 0x2dcd: "ER_GRP_RPL_SEND_STATS_ERROR", - 0x2dce: "ER_GRP_RPL_MEMBER_STATS_INFO", - 0x2dcf: "ER_GRP_RPL_FLOW_CONTROL_STATS", - 0x2dd0: "ER_GRP_RPL_UNABLE_TO_CONVERT_PACKET_TO_EVENT", - 0x2dd1: "ER_GRP_RPL_PIPELINE_CREATE_FAILED", - 0x2dd2: "ER_GRP_RPL_PIPELINE_REINIT_FAILED_WRITE", - 0x2dd3: "ER_GRP_RPL_UNABLE_TO_CONVERT_EVENT_TO_PACKET", - 0x2dd4: "ER_GRP_RPL_PIPELINE_FLUSH_FAIL", - 0x2dd5: "ER_GRP_RPL_PIPELINE_REINIT_FAILED_READ", - 0x2dd6: "ER_GRP_RPL_STOP_REP_CHANNEL", - 0x2dd7: "ER_GRP_RPL_GCS_GR_ERROR_MSG", - 0x2dd8: "ER_GRP_RPL_SLAVE_IO_THREAD_UNBLOCKED", - 0x2dd9: "ER_GRP_RPL_SLAVE_IO_THREAD_ERROR_OUT", - 0x2dda: "ER_GRP_RPL_SLAVE_APPLIER_THREAD_UNBLOCKED", - 0x2ddb: "ER_GRP_RPL_SLAVE_APPLIER_THREAD_ERROR_OUT", - 0x2ddc: "ER_LDAP_AUTH_FAILED_TO_CREATE_OR_GET_CONNECTION", - 0x2ddd: "ER_LDAP_AUTH_DEINIT_FAILED", - 0x2dde: "ER_LDAP_AUTH_SKIPPING_USER_GROUP_SEARCH", - 0x2ddf: "ER_LDAP_AUTH_POOL_DISABLE_MAX_SIZE_ZERO", - 0x2de0: "ER_LDAP_AUTH_FAILED_TO_CREATE_LDAP_OBJECT_CREATOR", - 0x2de1: "ER_LDAP_AUTH_FAILED_TO_CREATE_LDAP_OBJECT", - 0x2de2: "ER_LDAP_AUTH_TLS_CONF", - 0x2de3: "ER_LDAP_AUTH_TLS_CONNECTION", - 0x2de4: "ER_LDAP_AUTH_CONN_POOL_NOT_CREATED", - 0x2de5: "ER_LDAP_AUTH_CONN_POOL_INITIALIZING", - 0x2de6: "ER_LDAP_AUTH_CONN_POOL_DEINITIALIZING", - 0x2de7: "ER_LDAP_AUTH_ZERO_MAX_POOL_SIZE_UNCHANGED", - 0x2de8: "ER_LDAP_AUTH_POOL_REINITIALIZING", - 0x2de9: "ER_LDAP_AUTH_FAILED_TO_WRITE_PACKET", - 0x2dea: "ER_LDAP_AUTH_SETTING_USERNAME", - 0x2deb: "ER_LDAP_AUTH_USER_AUTH_DATA", - 0x2dec: "ER_LDAP_AUTH_INFO_FOR_USER", - 0x2ded: "ER_LDAP_AUTH_USER_GROUP_SEARCH_INFO", - 0x2dee: "ER_LDAP_AUTH_GRP_SEARCH_SPECIAL_HDL", - 0x2def: "ER_LDAP_AUTH_GRP_IS_FULL_DN", - 0x2df0: "ER_LDAP_AUTH_USER_NOT_FOUND_IN_ANY_GRP", - 0x2df1: "ER_LDAP_AUTH_USER_FOUND_IN_MANY_GRPS", - 0x2df2: "ER_LDAP_AUTH_USER_HAS_MULTIPLE_GRP_NAMES", - 0x2df3: "ER_LDAP_AUTH_SEARCHED_USER_GRP_NAME", - 0x2df4: "ER_LDAP_AUTH_OBJECT_CREATE_TIMESTAMP", - 0x2df5: "ER_LDAP_AUTH_CERTIFICATE_NAME", - 0x2df6: "ER_LDAP_AUTH_FAILED_TO_POOL_DEINIT", - 0x2df7: "ER_LDAP_AUTH_FAILED_TO_INITIALIZE_POOL_IN_RECONSTRUCTING", - 0x2df8: "ER_LDAP_AUTH_FAILED_TO_INITIALIZE_POOL_IN_INIT_STATE", - 0x2df9: "ER_LDAP_AUTH_FAILED_TO_INITIALIZE_POOL_IN_DEINIT_STATE", - 0x2dfa: "ER_LDAP_AUTH_FAILED_TO_DEINITIALIZE_POOL_IN_RECONSTRUCT_STATE", - 0x2dfb: "ER_LDAP_AUTH_FAILED_TO_DEINITIALIZE_NOT_READY_POOL", - 0x2dfc: "ER_LDAP_AUTH_FAILED_TO_GET_CONNECTION_AS_PLUGIN_NOT_READY", - 0x2dfd: "ER_LDAP_AUTH_CONNECTION_POOL_INIT_FAILED", - 0x2dfe: "ER_LDAP_AUTH_MAX_ALLOWED_CONNECTION_LIMIT_HIT", - 0x2dff: "ER_LDAP_AUTH_MAX_POOL_SIZE_SET_FAILED", - 0x2e00: "ER_LDAP_AUTH_PLUGIN_FAILED_TO_READ_PACKET", - 0x2e01: "ER_LDAP_AUTH_CREATING_LDAP_CONNECTION", - 0x2e02: "ER_LDAP_AUTH_GETTING_CONNECTION_FROM_POOL", - 0x2e03: "ER_LDAP_AUTH_RETURNING_CONNECTION_TO_POOL", - 0x2e04: "ER_LDAP_AUTH_SEARCH_USER_GROUP_ATTR_NOT_FOUND", - 0x2e05: "ER_LDAP_AUTH_LDAP_INFO_NULL", - 0x2e06: "ER_LDAP_AUTH_FREEING_CONNECTION", - 0x2e07: "ER_LDAP_AUTH_CONNECTION_PUSHED_TO_POOL", - 0x2e08: "ER_LDAP_AUTH_CONNECTION_CREATOR_ENTER", - 0x2e09: "ER_LDAP_AUTH_STARTING_TLS", - 0x2e0a: "ER_LDAP_AUTH_CONNECTION_GET_LDAP_INFO_NULL", - 0x2e0b: "ER_LDAP_AUTH_DELETING_CONNECTION_KEY", - 0x2e0c: "ER_LDAP_AUTH_POOLED_CONNECTION_KEY", - 0x2e0d: "ER_LDAP_AUTH_CREATE_CONNECTION_KEY", - 0x2e0e: "ER_LDAP_AUTH_COMMUNICATION_HOST_INFO", - 0x2e0f: "ER_LDAP_AUTH_METHOD_TO_CLIENT", - 0x2e10: "ER_LDAP_AUTH_SASL_REQUEST_FROM_CLIENT", - 0x2e11: "ER_LDAP_AUTH_SASL_PROCESS_SASL", - 0x2e12: "ER_LDAP_AUTH_SASL_BIND_SUCCESS_INFO", - 0x2e13: "ER_LDAP_AUTH_STARTED_FOR_USER", - 0x2e14: "ER_LDAP_AUTH_DISTINGUISHED_NAME", - 0x2e15: "ER_LDAP_AUTH_INIT_FAILED", - 0x2e16: "ER_LDAP_AUTH_OR_GROUP_RETRIEVAL_FAILED", - 0x2e17: "ER_LDAP_AUTH_USER_GROUP_SEARCH_FAILED", - 0x2e18: "ER_LDAP_AUTH_USER_BIND_FAILED", - 0x2e19: "ER_LDAP_AUTH_POOL_GET_FAILED_TO_CREATE_CONNECTION", - 0x2e1a: "ER_LDAP_AUTH_FAILED_TO_CREATE_LDAP_CONNECTION", - 0x2e1b: "ER_LDAP_AUTH_FAILED_TO_ESTABLISH_TLS_CONNECTION", - 0x2e1c: "ER_LDAP_AUTH_FAILED_TO_SEARCH_DN", - 0x2e1d: "ER_LDAP_AUTH_CONNECTION_POOL_REINIT_ENTER", - 0x2e1e: "ER_SYSTEMD_NOTIFY_PATH_TOO_LONG", - 0x2e1f: "ER_SYSTEMD_NOTIFY_CONNECT_FAILED", - 0x2e20: "ER_SYSTEMD_NOTIFY_WRITE_FAILED", - 0x2e21: "ER_FOUND_MISSING_GTIDS", - 0x2e22: "ER_PID_FILE_PRIV_DIRECTORY_INSECURE", - 0x2e23: "ER_CANT_CHECK_PID_PATH", - 0x2e24: "ER_VALIDATE_PWD_STATUS_VAR_REGISTRATION_FAILED", - 0x2e25: "ER_VALIDATE_PWD_STATUS_VAR_UNREGISTRATION_FAILED", - 0x2e26: "ER_VALIDATE_PWD_DICT_FILE_OPEN_FAILED", - 0x2e27: "ER_VALIDATE_PWD_COULD_BE_NULL", - 0x2e28: "ER_VALIDATE_PWD_STRING_CONV_TO_LOWERCASE_FAILED", - 0x2e29: "ER_VALIDATE_PWD_STRING_CONV_TO_BUFFER_FAILED", - 0x2e2a: "ER_VALIDATE_PWD_STRING_HANDLER_MEM_ALLOCATION_FAILED", - 0x2e2b: "ER_VALIDATE_PWD_STRONG_POLICY_DICT_FILE_UNSPECIFIED", - 0x2e2c: "ER_VALIDATE_PWD_CONVERT_TO_BUFFER_FAILED", - 0x2e2d: "ER_VALIDATE_PWD_VARIABLE_REGISTRATION_FAILED", - 0x2e2e: "ER_VALIDATE_PWD_VARIABLE_UNREGISTRATION_FAILED", - 0x2e2f: "ER_KEYRING_MIGRATION_EXTRA_OPTIONS", - 0x2e31: "ER_IB_MSG_0", - 0x2e32: "ER_IB_MSG_1", - 0x2e33: "ER_IB_MSG_2", - 0x2e34: "ER_IB_MSG_3", - 0x2e35: "ER_IB_MSG_4", - 0x2e36: "ER_IB_MSG_5", - 0x2e37: "ER_IB_MSG_6", - 0x2e38: "ER_IB_MSG_7", - 0x2e39: "ER_IB_MSG_8", - 0x2e3a: "ER_IB_MSG_9", - 0x2e3b: "ER_IB_MSG_10", - 0x2e3c: "ER_IB_MSG_11", - 0x2e3d: "ER_IB_MSG_12", - 0x2e3e: "ER_IB_MSG_13", - 0x2e3f: "ER_IB_MSG_14", - 0x2e40: "ER_IB_MSG_15", - 0x2e41: "ER_IB_MSG_16", - 0x2e42: "ER_IB_MSG_17", - 0x2e43: "ER_IB_MSG_18", - 0x2e44: "ER_IB_MSG_19", - 0x2e45: "ER_IB_MSG_20", - 0x2e46: "ER_IB_MSG_21", - 0x2e47: "ER_IB_MSG_22", - 0x2e48: "ER_IB_MSG_23", - 0x2e49: "ER_IB_MSG_24", - 0x2e4a: "ER_IB_MSG_25", - 0x2e4b: "ER_IB_MSG_26", - 0x2e4c: "ER_IB_MSG_27", - 0x2e4d: "ER_IB_MSG_28", - 0x2e4e: "ER_IB_MSG_29", - 0x2e4f: "ER_IB_MSG_30", - 0x2e50: "ER_IB_MSG_31", - 0x2e51: "ER_IB_MSG_32", - 0x2e52: "ER_IB_MSG_33", - 0x2e53: "ER_IB_MSG_34", - 0x2e54: "ER_IB_MSG_35", - 0x2e55: "ER_IB_MSG_36", - 0x2e56: "ER_IB_MSG_37", - 0x2e57: "ER_IB_MSG_38", - 0x2e58: "ER_IB_MSG_39", - 0x2e59: "ER_IB_MSG_40", - 0x2e5a: "ER_IB_MSG_41", - 0x2e5b: "ER_IB_MSG_42", - 0x2e5c: "ER_IB_MSG_43", - 0x2e5d: "ER_IB_MSG_44", - 0x2e5e: "ER_IB_MSG_45", - 0x2e5f: "ER_IB_MSG_46", - 0x2e60: "ER_IB_MSG_47", - 0x2e61: "ER_IB_MSG_48", - 0x2e62: "ER_IB_MSG_49", - 0x2e63: "ER_IB_MSG_50", - 0x2e64: "ER_IB_MSG_51", - 0x2e65: "ER_IB_MSG_52", - 0x2e66: "ER_IB_MSG_53", - 0x2e67: "ER_IB_MSG_54", - 0x2e68: "ER_IB_MSG_55", - 0x2e69: "ER_IB_MSG_56", - 0x2e6a: "ER_IB_MSG_57", - 0x2e6b: "ER_IB_MSG_58", - 0x2e6c: "ER_IB_MSG_59", - 0x2e6d: "ER_IB_MSG_60", - 0x2e6e: "ER_IB_MSG_61", - 0x2e6f: "ER_IB_MSG_62", - 0x2e70: "ER_IB_MSG_63", - 0x2e71: "ER_IB_MSG_64", - 0x2e72: "ER_IB_MSG_65", - 0x2e73: "ER_IB_MSG_66", - 0x2e74: "ER_IB_MSG_67", - 0x2e75: "ER_IB_MSG_68", - 0x2e76: "ER_IB_MSG_69", - 0x2e77: "ER_IB_MSG_70", - 0x2e78: "ER_IB_MSG_71", - 0x2e79: "ER_IB_MSG_72", - 0x2e7a: "ER_IB_MSG_73", - 0x2e7b: "ER_IB_MSG_74", - 0x2e7c: "ER_IB_MSG_75", - 0x2e7d: "ER_IB_MSG_76", - 0x2e7e: "ER_IB_MSG_77", - 0x2e7f: "ER_IB_MSG_78", - 0x2e80: "ER_IB_MSG_79", - 0x2e81: "ER_IB_MSG_80", - 0x2e82: "ER_IB_MSG_81", - 0x2e83: "ER_IB_MSG_82", - 0x2e84: "ER_IB_MSG_83", - 0x2e85: "ER_IB_MSG_84", - 0x2e86: "ER_IB_MSG_85", - 0x2e87: "ER_IB_MSG_86", - 0x2e88: "ER_IB_MSG_87", - 0x2e89: "ER_IB_MSG_88", - 0x2e8a: "ER_IB_MSG_89", - 0x2e8b: "ER_IB_MSG_90", - 0x2e8c: "ER_IB_MSG_91", - 0x2e8d: "ER_IB_MSG_92", - 0x2e8e: "ER_IB_MSG_93", - 0x2e8f: "ER_IB_MSG_94", - 0x2e90: "ER_IB_MSG_95", - 0x2e91: "ER_IB_MSG_96", - 0x2e92: "ER_IB_MSG_97", - 0x2e93: "ER_IB_MSG_98", - 0x2e94: "ER_IB_MSG_99", - 0x2e95: "ER_IB_MSG_100", - 0x2e96: "ER_IB_MSG_101", - 0x2e97: "ER_IB_MSG_102", - 0x2e98: "ER_IB_MSG_103", - 0x2e99: "ER_IB_MSG_104", - 0x2e9a: "ER_IB_MSG_105", - 0x2e9b: "ER_IB_MSG_106", - 0x2e9c: "ER_IB_MSG_107", - 0x2e9d: "ER_IB_MSG_108", - 0x2e9e: "ER_IB_MSG_109", - 0x2e9f: "ER_IB_MSG_110", - 0x2ea0: "ER_IB_MSG_111", - 0x2ea1: "ER_IB_MSG_112", - 0x2ea2: "ER_IB_MSG_113", - 0x2ea3: "ER_IB_MSG_114", - 0x2ea4: "ER_IB_MSG_115", - 0x2ea5: "ER_IB_MSG_116", - 0x2ea6: "ER_IB_MSG_117", - 0x2ea7: "ER_IB_MSG_118", - 0x2ea8: "ER_IB_MSG_119", - 0x2ea9: "ER_IB_MSG_120", - 0x2eaa: "ER_IB_MSG_121", - 0x2eab: "ER_IB_MSG_122", - 0x2eac: "ER_IB_MSG_123", - 0x2ead: "ER_IB_MSG_124", - 0x2eae: "ER_IB_MSG_125", - 0x2eaf: "ER_IB_MSG_126", - 0x2eb0: "ER_IB_MSG_127", - 0x2eb1: "ER_IB_MSG_128", - 0x2eb2: "ER_IB_MSG_129", - 0x2eb3: "ER_IB_MSG_130", - 0x2eb4: "ER_IB_MSG_131", - 0x2eb5: "ER_IB_MSG_132", - 0x2eb6: "ER_IB_MSG_133", - 0x2eb7: "ER_IB_MSG_134", - 0x2eb8: "ER_IB_MSG_135", - 0x2eb9: "ER_IB_MSG_136", - 0x2eba: "ER_IB_MSG_137", - 0x2ebb: "ER_IB_MSG_138", - 0x2ebc: "ER_IB_MSG_139", - 0x2ebd: "ER_IB_MSG_140", - 0x2ebe: "ER_IB_MSG_141", - 0x2ebf: "ER_IB_MSG_142", - 0x2ec0: "ER_IB_MSG_143", - 0x2ec1: "ER_IB_MSG_144", - 0x2ec2: "ER_IB_MSG_145", - 0x2ec3: "ER_IB_MSG_146", - 0x2ec4: "ER_IB_MSG_147", - 0x2ec5: "ER_IB_MSG_148", - 0x2ec6: "ER_IB_MSG_149", - 0x2ec7: "ER_IB_MSG_150", - 0x2ec8: "ER_IB_MSG_151", - 0x2ec9: "ER_IB_MSG_152", - 0x2eca: "ER_IB_MSG_153", - 0x2ecb: "ER_IB_MSG_154", - 0x2ecc: "ER_IB_MSG_155", - 0x2ecd: "ER_IB_MSG_156", - 0x2ece: "ER_IB_MSG_157", - 0x2ecf: "ER_IB_MSG_158", - 0x2ed0: "ER_IB_MSG_159", - 0x2ed1: "ER_IB_MSG_160", - 0x2ed2: "ER_IB_MSG_161", - 0x2ed3: "ER_IB_MSG_162", - 0x2ed4: "ER_IB_MSG_163", - 0x2ed5: "ER_IB_MSG_164", - 0x2ed6: "ER_IB_MSG_165", - 0x2ed7: "ER_IB_MSG_166", - 0x2ed8: "ER_IB_MSG_167", - 0x2ed9: "ER_IB_MSG_168", - 0x2eda: "ER_IB_MSG_169", - 0x2edb: "ER_IB_MSG_170", - 0x2edc: "ER_IB_MSG_171", - 0x2edd: "ER_IB_MSG_172", - 0x2ede: "ER_IB_MSG_173", - 0x2edf: "ER_IB_MSG_174", - 0x2ee0: "ER_IB_MSG_175", - 0x2ee1: "ER_IB_MSG_176", - 0x2ee2: "ER_IB_MSG_177", - 0x2ee3: "ER_IB_MSG_178", - 0x2ee4: "ER_IB_MSG_179", - 0x2ee5: "ER_IB_MSG_180", - 0x2ee6: "ER_IB_MSG_181", - 0x2ee7: "ER_IB_MSG_182", - 0x2ee8: "ER_IB_MSG_183", - 0x2ee9: "ER_IB_MSG_184", - 0x2eea: "ER_IB_MSG_185", - 0x2eeb: "ER_IB_MSG_186", - 0x2eec: "ER_IB_MSG_187", - 0x2eed: "ER_IB_MSG_188", - 0x2eee: "ER_IB_MSG_189", - 0x2eef: "ER_IB_MSG_190", - 0x2ef0: "ER_IB_MSG_191", - 0x2ef1: "ER_IB_MSG_192", - 0x2ef2: "ER_IB_MSG_193", - 0x2ef3: "ER_IB_MSG_194", - 0x2ef4: "ER_IB_MSG_195", - 0x2ef5: "ER_IB_MSG_196", - 0x2ef6: "ER_IB_MSG_197", - 0x2ef7: "ER_IB_MSG_198", - 0x2ef8: "ER_IB_MSG_199", - 0x2ef9: "ER_IB_MSG_200", - 0x2efa: "ER_IB_MSG_201", - 0x2efb: "ER_IB_MSG_202", - 0x2efc: "ER_IB_MSG_203", - 0x2efd: "ER_IB_MSG_204", - 0x2efe: "ER_IB_MSG_205", - 0x2eff: "ER_IB_MSG_206", - 0x2f00: "ER_IB_MSG_207", - 0x2f01: "ER_IB_MSG_208", - 0x2f02: "ER_IB_MSG_209", - 0x2f03: "ER_IB_MSG_210", - 0x2f04: "ER_IB_MSG_211", - 0x2f05: "ER_IB_MSG_212", - 0x2f06: "ER_IB_MSG_213", - 0x2f07: "ER_IB_MSG_214", - 0x2f08: "ER_IB_MSG_215", - 0x2f09: "ER_IB_MSG_216", - 0x2f0a: "ER_IB_MSG_217", - 0x2f0b: "ER_IB_MSG_218", - 0x2f0c: "ER_IB_MSG_219", - 0x2f0d: "ER_IB_MSG_220", - 0x2f0e: "ER_IB_MSG_221", - 0x2f0f: "ER_IB_MSG_222", - 0x2f10: "ER_IB_MSG_223", - 0x2f11: "ER_IB_MSG_224", - 0x2f12: "ER_IB_MSG_225", - 0x2f13: "ER_IB_MSG_226", - 0x2f14: "ER_IB_MSG_227", - 0x2f15: "ER_IB_MSG_228", - 0x2f16: "ER_IB_MSG_229", - 0x2f17: "ER_IB_MSG_230", - 0x2f18: "ER_IB_MSG_231", - 0x2f19: "ER_IB_MSG_232", - 0x2f1a: "ER_IB_MSG_233", - 0x2f1b: "ER_IB_MSG_234", - 0x2f1c: "ER_IB_MSG_235", - 0x2f1d: "ER_IB_MSG_236", - 0x2f1e: "ER_IB_MSG_237", - 0x2f1f: "ER_IB_MSG_238", - 0x2f20: "ER_IB_MSG_239", - 0x2f21: "ER_IB_MSG_240", - 0x2f22: "ER_IB_MSG_241", - 0x2f23: "ER_IB_MSG_242", - 0x2f24: "ER_IB_MSG_243", - 0x2f25: "ER_IB_MSG_244", - 0x2f26: "ER_IB_MSG_245", - 0x2f27: "ER_IB_MSG_246", - 0x2f28: "ER_IB_MSG_247", - 0x2f29: "ER_IB_MSG_248", - 0x2f2a: "ER_IB_MSG_249", - 0x2f2b: "ER_IB_MSG_250", - 0x2f2c: "ER_IB_MSG_251", - 0x2f2d: "ER_IB_MSG_252", - 0x2f2e: "ER_IB_MSG_253", - 0x2f2f: "ER_IB_MSG_254", - 0x2f30: "ER_IB_MSG_255", - 0x2f31: "ER_IB_MSG_256", - 0x2f32: "ER_IB_MSG_257", - 0x2f33: "ER_IB_MSG_258", - 0x2f34: "ER_IB_MSG_259", - 0x2f35: "ER_IB_MSG_260", - 0x2f36: "ER_IB_MSG_261", - 0x2f37: "ER_IB_MSG_262", - 0x2f38: "ER_IB_MSG_263", - 0x2f39: "ER_IB_MSG_264", - 0x2f3a: "ER_IB_MSG_265", - 0x2f3b: "ER_IB_MSG_266", - 0x2f3c: "ER_IB_MSG_267", - 0x2f3d: "ER_IB_MSG_268", - 0x2f3e: "ER_IB_MSG_269", - 0x2f3f: "ER_IB_MSG_270", - 0x2f40: "ER_IB_MSG_271", - 0x2f41: "ER_IB_MSG_272", - 0x2f42: "ER_IB_MSG_273", - 0x2f43: "ER_IB_MSG_274", - 0x2f44: "ER_IB_MSG_275", - 0x2f45: "ER_IB_MSG_276", - 0x2f46: "ER_IB_MSG_277", - 0x2f47: "ER_IB_MSG_278", - 0x2f48: "ER_IB_MSG_279", - 0x2f49: "ER_IB_MSG_280", - 0x2f4a: "ER_IB_MSG_281", - 0x2f4b: "ER_IB_MSG_282", - 0x2f4c: "ER_IB_MSG_283", - 0x2f4d: "ER_IB_MSG_284", - 0x2f4e: "ER_IB_MSG_285", - 0x2f4f: "ER_IB_MSG_286", - 0x2f50: "ER_IB_MSG_287", - 0x2f51: "ER_IB_MSG_288", - 0x2f52: "ER_IB_MSG_289", - 0x2f53: "ER_IB_MSG_290", - 0x2f54: "ER_IB_MSG_291", - 0x2f55: "ER_IB_MSG_292", - 0x2f56: "ER_IB_MSG_293", - 0x2f57: "ER_IB_MSG_294", - 0x2f58: "ER_IB_MSG_295", - 0x2f59: "ER_IB_MSG_296", - 0x2f5a: "ER_IB_MSG_297", - 0x2f5b: "ER_IB_MSG_298", - 0x2f5c: "ER_IB_MSG_299", - 0x2f5d: "ER_IB_MSG_300", - 0x2f5e: "ER_IB_MSG_301", - 0x2f5f: "ER_IB_MSG_302", - 0x2f60: "ER_IB_MSG_303", - 0x2f61: "ER_IB_MSG_304", - 0x2f62: "ER_IB_MSG_305", - 0x2f63: "ER_IB_MSG_306", - 0x2f64: "ER_IB_MSG_307", - 0x2f65: "ER_IB_MSG_308", - 0x2f66: "ER_IB_MSG_309", - 0x2f67: "ER_IB_MSG_310", - 0x2f68: "ER_IB_MSG_311", - 0x2f69: "ER_IB_MSG_312", - 0x2f6a: "ER_IB_MSG_313", - 0x2f6b: "ER_IB_MSG_314", - 0x2f6c: "ER_IB_MSG_315", - 0x2f6d: "ER_IB_MSG_316", - 0x2f6e: "ER_IB_MSG_317", - 0x2f6f: "ER_IB_MSG_318", - 0x2f70: "ER_IB_MSG_319", - 0x2f71: "ER_IB_MSG_320", - 0x2f72: "ER_IB_MSG_321", - 0x2f73: "ER_IB_MSG_322", - 0x2f74: "ER_IB_MSG_323", - 0x2f75: "ER_IB_MSG_324", - 0x2f76: "ER_IB_MSG_325", - 0x2f77: "ER_IB_MSG_326", - 0x2f78: "ER_IB_MSG_327", - 0x2f79: "ER_IB_MSG_328", - 0x2f7a: "ER_IB_MSG_329", - 0x2f7b: "ER_IB_MSG_330", - 0x2f7c: "ER_IB_MSG_331", - 0x2f7d: "ER_IB_MSG_332", - 0x2f7e: "ER_IB_MSG_333", - 0x2f7f: "ER_IB_MSG_334", - 0x2f80: "ER_IB_MSG_335", - 0x2f81: "ER_IB_MSG_336", - 0x2f82: "ER_IB_MSG_337", - 0x2f83: "ER_IB_MSG_338", - 0x2f84: "ER_IB_MSG_339", - 0x2f85: "ER_IB_MSG_340", - 0x2f86: "ER_IB_MSG_341", - 0x2f87: "ER_IB_MSG_342", - 0x2f88: "ER_IB_MSG_343", - 0x2f89: "ER_IB_MSG_344", - 0x2f8a: "ER_IB_MSG_345", - 0x2f8b: "ER_IB_MSG_346", - 0x2f8c: "ER_IB_MSG_347", - 0x2f8d: "ER_IB_MSG_348", - 0x2f8e: "ER_IB_MSG_349", - 0x2f8f: "ER_IB_MSG_350", - 0x2f90: "ER_IB_MSG_351", - 0x2f91: "ER_IB_MSG_352", - 0x2f92: "ER_IB_MSG_353", - 0x2f93: "ER_IB_MSG_354", - 0x2f94: "ER_IB_MSG_355", - 0x2f95: "ER_IB_MSG_356", - 0x2f96: "ER_IB_MSG_357", - 0x2f97: "ER_IB_MSG_358", - 0x2f98: "ER_IB_MSG_359", - 0x2f99: "ER_IB_MSG_360", - 0x2f9a: "ER_IB_MSG_361", - 0x2f9b: "ER_IB_MSG_362", - 0x2f9c: "ER_IB_MSG_363", - 0x2f9d: "ER_IB_MSG_364", - 0x2f9e: "ER_IB_MSG_365", - 0x2f9f: "ER_IB_MSG_366", - 0x2fa0: "ER_IB_MSG_367", - 0x2fa1: "ER_IB_MSG_368", - 0x2fa2: "ER_IB_MSG_369", - 0x2fa3: "ER_IB_MSG_370", - 0x2fa4: "ER_IB_MSG_371", - 0x2fa5: "ER_IB_MSG_372", - 0x2fa6: "ER_IB_MSG_373", - 0x2fa7: "ER_IB_MSG_374", - 0x2fa8: "ER_IB_MSG_375", - 0x2fa9: "ER_IB_MSG_376", - 0x2faa: "ER_IB_MSG_377", - 0x2fab: "ER_IB_MSG_378", - 0x2fac: "ER_IB_MSG_379", - 0x2fad: "ER_IB_MSG_380", - 0x2fae: "ER_IB_MSG_381", - 0x2faf: "ER_IB_MSG_382", - 0x2fb0: "ER_IB_MSG_383", - 0x2fb1: "ER_IB_MSG_384", - 0x2fb2: "ER_IB_MSG_385", - 0x2fb3: "ER_IB_MSG_386", - 0x2fb4: "ER_IB_MSG_387", - 0x2fb5: "ER_IB_MSG_388", - 0x2fb6: "ER_IB_MSG_389", - 0x2fb7: "ER_IB_MSG_390", - 0x2fb8: "ER_IB_MSG_391", - 0x2fb9: "ER_IB_MSG_392", - 0x2fba: "ER_IB_MSG_393", - 0x2fbb: "ER_IB_MSG_394", - 0x2fbc: "ER_IB_MSG_395", - 0x2fbd: "ER_IB_MSG_396", - 0x2fbe: "ER_IB_MSG_397", - 0x2fbf: "ER_IB_MSG_398", - 0x2fc0: "ER_IB_MSG_399", - 0x2fc1: "ER_IB_MSG_400", - 0x2fc2: "ER_IB_MSG_401", - 0x2fc3: "ER_IB_MSG_402", - 0x2fc4: "ER_IB_MSG_403", - 0x2fc5: "ER_IB_MSG_404", - 0x2fc6: "ER_IB_MSG_405", - 0x2fc7: "ER_IB_MSG_406", - 0x2fc8: "ER_IB_MSG_407", - 0x2fc9: "ER_IB_MSG_408", - 0x2fca: "ER_IB_MSG_409", - 0x2fcb: "ER_IB_MSG_410", - 0x2fcc: "ER_IB_MSG_411", - 0x2fcd: "ER_IB_MSG_412", - 0x2fce: "ER_IB_MSG_413", - 0x2fcf: "ER_IB_MSG_414", - 0x2fd0: "ER_IB_MSG_415", - 0x2fd1: "ER_IB_MSG_416", - 0x2fd2: "ER_IB_MSG_417", - 0x2fd3: "ER_IB_MSG_418", - 0x2fd4: "ER_IB_MSG_419", - 0x2fd5: "ER_IB_MSG_420", - 0x2fd6: "ER_IB_MSG_421", - 0x2fd7: "ER_IB_MSG_422", - 0x2fd8: "ER_IB_MSG_423", - 0x2fd9: "ER_IB_MSG_424", - 0x2fda: "ER_IB_MSG_425", - 0x2fdb: "ER_IB_MSG_426", - 0x2fdc: "ER_IB_MSG_427", - 0x2fdd: "ER_IB_MSG_428", - 0x2fde: "ER_IB_MSG_429", - 0x2fdf: "ER_IB_MSG_430", - 0x2fe0: "ER_IB_MSG_431", - 0x2fe1: "ER_IB_MSG_432", - 0x2fe2: "ER_IB_MSG_433", - 0x2fe3: "ER_IB_MSG_434", - 0x2fe4: "ER_IB_MSG_435", - 0x2fe5: "ER_IB_MSG_436", - 0x2fe6: "ER_IB_MSG_437", - 0x2fe7: "ER_IB_MSG_438", - 0x2fe8: "ER_IB_MSG_439", - 0x2fe9: "ER_IB_MSG_440", - 0x2fea: "ER_IB_MSG_441", - 0x2feb: "ER_IB_MSG_442", - 0x2fec: "ER_IB_MSG_443", - 0x2fed: "ER_IB_MSG_444", - 0x2fee: "ER_IB_MSG_445", - 0x2fef: "ER_IB_MSG_446", - 0x2ff0: "ER_IB_MSG_447", - 0x2ff1: "ER_IB_MSG_448", - 0x2ff2: "ER_IB_MSG_449", - 0x2ff3: "ER_IB_MSG_450", - 0x2ff4: "ER_IB_MSG_451", - 0x2ff5: "ER_IB_MSG_452", - 0x2ff6: "ER_IB_MSG_453", - 0x2ff7: "ER_IB_MSG_454", - 0x2ff8: "ER_IB_MSG_455", - 0x2ff9: "ER_IB_MSG_456", - 0x2ffa: "ER_IB_MSG_457", - 0x2ffb: "ER_IB_MSG_458", - 0x2ffc: "ER_IB_MSG_459", - 0x2ffd: "ER_IB_MSG_460", - 0x2ffe: "ER_IB_MSG_461", - 0x2fff: "ER_IB_MSG_462", + 0x299A: "ER_NDB_BINLOG_SKIPPING_OLD_SCHEMA_OPERATION", + 0x299B: "ER_NDB_CLUSTER_FAILURE", + 0x299C: "ER_NDB_TABLES_INITIALLY_READ_ONLY_ON_RECONNECT", + 0x299D: "ER_NDB_IGNORING_UNKNOWN_EVENT", + 0x299E: "ER_NDB_BINLOG_OPENING_INDEX", + 0x299F: "ER_NDB_BINLOG_CANT_LOCK_NDB_BINLOG_INDEX", + 0x29A0: "ER_NDB_BINLOG_INJECTING_RANDOM_WRITE_FAILURE", + 0x29A1: "ER_NDB_BINLOG_CANT_WRITE_TO_NDB_BINLOG_INDEX", + 0x29A2: "ER_NDB_BINLOG_WRITING_TO_NDB_BINLOG_INDEX", + 0x29A3: "ER_NDB_BINLOG_CANT_COMMIT_TO_NDB_BINLOG_INDEX", + 0x29A4: "ER_NDB_BINLOG_WRITE_TO_NDB_BINLOG_INDEX_FAILED_AFTER_KILL", + 0x29A5: "ER_NDB_BINLOG_USING_SERVER_ID_0_SLAVES_WILL_NOT", + 0x29A6: "ER_NDB_SERVER_ID_RESERVED_OR_TOO_LARGE", + 0x29A7: "ER_NDB_BINLOG_NDB_LOG_TRANSACTION_ID_REQUIRES_V2_ROW_EVENTS", + 0x29A8: "ER_NDB_BINLOG_NDB_LOG_APPLY_STATUS_FORCING_FULL_USE_WRITE", + 0x29A9: "ER_NDB_BINLOG_GENERIC_MESSAGE", + 0x29AA: "ER_NDB_CONFLICT_GENERIC_MESSAGE", + 0x29AB: "ER_NDB_TRANS_DEPENDENCY_TRACKER_ERROR", + 0x29AC: "ER_NDB_CONFLICT_FN_PARSE_ERROR", + 0x29AD: "ER_NDB_CONFLICT_FN_SETUP_ERROR", + 0x29AE: "ER_NDB_BINLOG_FAILED_TO_GET_TABLE", + 0x29AF: "ER_NDB_BINLOG_NOT_LOGGING", + 0x29B0: "ER_NDB_BINLOG_CREATE_TABLE_EVENT_FAILED", + 0x29B1: "ER_NDB_BINLOG_CREATE_TABLE_EVENT_INFO", + 0x29B2: "ER_NDB_BINLOG_DISCOVER_TABLE_EVENT_INFO", + 0x29B3: "ER_NDB_BINLOG_BLOB_REQUIRES_PK", + 0x29B4: "ER_NDB_BINLOG_CANT_CREATE_EVENT_IN_DB", + 0x29B5: "ER_NDB_BINLOG_CANT_CREATE_EVENT_IN_DB_AND_CANT_DROP", + 0x29B6: "ER_NDB_BINLOG_CANT_CREATE_EVENT_IN_DB_DROPPED", + 0x29B7: "ER_NDB_BINLOG_DISCOVER_REUSING_OLD_EVENT_OPS", + 0x29B8: "ER_NDB_BINLOG_CREATING_NDBEVENTOPERATION_FAILED", + 0x29B9: "ER_NDB_BINLOG_CANT_CREATE_BLOB", + 0x29BA: "ER_NDB_BINLOG_NDBEVENT_EXECUTE_FAILED", + 0x29BB: "ER_NDB_CREATE_EVENT_OPS_LOGGING_INFO", + 0x29BC: "ER_NDB_BINLOG_CANT_DROP_EVENT_FROM_DB", + 0x29BD: "ER_NDB_TIMED_OUT_IN_DROP_TABLE", + 0x29BE: "ER_NDB_BINLOG_UNHANDLED_ERROR_FOR_TABLE", + 0x29BF: "ER_NDB_BINLOG_CLUSTER_FAILURE", + 0x29C0: "ER_NDB_BINLOG_UNKNOWN_NON_DATA_EVENT", + 0x29C1: "ER_NDB_BINLOG_INJECTOR_DISCARDING_ROW_EVENT_METADATA", + 0x29C2: "ER_NDB_REMAINING_OPEN_TABLES", + 0x29C3: "ER_NDB_REMAINING_OPEN_TABLE_INFO", + 0x29C4: "ER_NDB_COULD_NOT_GET_APPLY_STATUS_SHARE", + 0x29C5: "ER_NDB_BINLOG_SERVER_SHUTDOWN_DURING_NDB_CLUSTER_START", + 0x29C6: "ER_NDB_BINLOG_CLUSTER_RESTARTED_RESET_MASTER_SUGGESTED", + 0x29C7: "ER_NDB_BINLOG_CLUSTER_HAS_RECONNECTED", + 0x29C8: "ER_NDB_BINLOG_STARTING_LOG_AT_EPOCH", + 0x29C9: "ER_NDB_BINLOG_NDB_TABLES_WRITABLE", + 0x29CA: "ER_NDB_BINLOG_SHUTDOWN_DETECTED", + 0x29CB: "ER_NDB_BINLOG_LOST_SCHEMA_CONNECTION_WAITING", + 0x29CC: "ER_NDB_BINLOG_LOST_SCHEMA_CONNECTION_CONTINUING", + 0x29CD: "ER_NDB_BINLOG_ERROR_HANDLING_SCHEMA_EVENT", + 0x29CE: "ER_NDB_BINLOG_CANT_INJECT_APPLY_STATUS_WRITE_ROW", + 0x29CF: "ER_NDB_BINLOG_ERROR_DURING_GCI_ROLLBACK", + 0x29D0: "ER_NDB_BINLOG_ERROR_DURING_GCI_COMMIT", + 0x29D1: "ER_NDB_BINLOG_LATEST_TRX_IN_EPOCH_NOT_IN_BINLOG", + 0x29D2: "ER_NDB_BINLOG_RELEASING_EXTRA_SHARE_REFERENCES", + 0x29D3: "ER_NDB_BINLOG_REMAINING_OPEN_TABLES", + 0x29D4: "ER_NDB_BINLOG_REMAINING_OPEN_TABLE_INFO", + 0x29D5: "ER_TREE_CORRUPT_PARENT_SHOULD_POINT_AT_PARENT", + 0x29D6: "ER_TREE_CORRUPT_ROOT_SHOULD_BE_BLACK", + 0x29D7: "ER_TREE_CORRUPT_2_CONSECUTIVE_REDS", + 0x29D8: "ER_TREE_CORRUPT_RIGHT_IS_LEFT", + 0x29D9: "ER_TREE_CORRUPT_INCORRECT_BLACK_COUNT", + 0x29DA: "ER_WRONG_COUNT_FOR_ORIGIN", + 0x29DB: "ER_WRONG_COUNT_FOR_KEY", + 0x29DC: "ER_WRONG_COUNT_OF_ELEMENTS", + 0x29DD: "ER_RPL_ERROR_READING_SLAVE_WORKER_CONFIGURATION", + 0x29DE: "ER_RPL_ERROR_WRITING_SLAVE_WORKER_CONFIGURATION", + 0x29DF: "ER_RPL_FAILED_TO_OPEN_RELAY_LOG", + 0x29E0: "ER_RPL_WORKER_CANT_READ_RELAY_LOG", + 0x29E1: "ER_RPL_WORKER_CANT_FIND_NEXT_RELAY_LOG", + 0x29E2: "ER_RPL_MTS_SLAVE_COORDINATOR_HAS_WAITED", + 0x29E3: "ER_BINLOG_FAILED_TO_WRITE_DROP_FOR_TEMP_TABLES", + 0x29E4: "ER_BINLOG_OOM_WRITING_DELETE_WHILE_OPENING_HEAP_TABLE", + 0x29E5: "ER_FAILED_TO_REPAIR_TABLE", + 0x29E6: "ER_FAILED_TO_REMOVE_TEMP_TABLE", + 0x29E7: "ER_SYSTEM_TABLE_NOT_TRANSACTIONAL", + 0x29E8: "ER_RPL_ERROR_WRITING_MASTER_CONFIGURATION", + 0x29E9: "ER_RPL_ERROR_READING_MASTER_CONFIGURATION", + 0x29EA: "ER_RPL_SSL_INFO_IN_MASTER_INFO_IGNORED", + 0x29EB: "ER_PLUGIN_FAILED_DEINITIALIZATION", + 0x29EC: "ER_PLUGIN_HAS_NONZERO_REFCOUNT_AFTER_DEINITIALIZATION", + 0x29ED: "ER_PLUGIN_SHUTTING_DOWN_PLUGIN", + 0x29EE: "ER_PLUGIN_REGISTRATION_FAILED", + 0x29EF: "ER_PLUGIN_CANT_OPEN_PLUGIN_TABLE", + 0x29F0: "ER_PLUGIN_CANT_LOAD", + 0x29F1: "ER_PLUGIN_LOAD_PARAMETER_TOO_LONG", + 0x29F2: "ER_PLUGIN_FORCING_SHUTDOWN", + 0x29F3: "ER_PLUGIN_HAS_NONZERO_REFCOUNT_AFTER_SHUTDOWN", + 0x29F4: "ER_PLUGIN_UNKNOWN_VARIABLE_TYPE", + 0x29F5: "ER_PLUGIN_VARIABLE_SET_READ_ONLY", + 0x29F6: "ER_PLUGIN_VARIABLE_MISSING_NAME", + 0x29F7: "ER_PLUGIN_VARIABLE_NOT_ALLOCATED_THREAD_LOCAL", + 0x29F8: "ER_PLUGIN_OOM", + 0x29F9: "ER_PLUGIN_BAD_OPTIONS", + 0x29FA: "ER_PLUGIN_PARSING_OPTIONS_FAILED", + 0x29FB: "ER_PLUGIN_DISABLED", + 0x29FC: "ER_PLUGIN_HAS_CONFLICTING_SYSTEM_VARIABLES", + 0x29FD: "ER_PLUGIN_CANT_SET_PERSISTENT_OPTIONS", + 0x29FE: "ER_MY_NET_WRITE_FAILED_FALLING_BACK_ON_STDERR", + 0x29FF: "ER_RETRYING_REPAIR_WITHOUT_QUICK", + 0x2A00: "ER_RETRYING_REPAIR_WITH_KEYCACHE", + 0x2A01: "ER_FOUND_ROWS_WHILE_REPAIRING", + 0x2A02: "ER_ERROR_DURING_OPTIMIZE_TABLE", + 0x2A03: "ER_ERROR_ENABLING_KEYS", + 0x2A04: "ER_CHECKING_TABLE", + 0x2A05: "ER_RECOVERING_TABLE", + 0x2A06: "ER_CANT_CREATE_TABLE_SHARE_FROM_FRM", + 0x2A07: "ER_CANT_LOCK_TABLE", + 0x2A08: "ER_CANT_ALLOC_TABLE_OBJECT", + 0x2A09: "ER_CANT_CREATE_HANDLER_OBJECT_FOR_TABLE", + 0x2A0A: "ER_CANT_SET_HANDLER_REFERENCE_FOR_TABLE", + 0x2A0B: "ER_CANT_LOCK_TABLESPACE", + 0x2A0C: "ER_CANT_UPGRADE_GENERATED_COLUMNS_TO_DD", + 0x2A0D: "ER_DD_ERROR_CREATING_ENTRY", + 0x2A0E: "ER_DD_CANT_FETCH_TABLE_DATA", + 0x2A0F: "ER_DD_CANT_FIX_SE_DATA", + 0x2A10: "ER_DD_CANT_CREATE_SP", + 0x2A11: "ER_CANT_OPEN_DB_OPT_USING_DEFAULT_CHARSET", + 0x2A12: "ER_CANT_CREATE_CACHE_FOR_DB_OPT", + 0x2A13: "ER_CANT_IDENTIFY_CHARSET_USING_DEFAULT", + 0x2A14: "ER_DB_OPT_NOT_FOUND_USING_DEFAULT_CHARSET", + 0x2A15: "ER_EVENT_CANT_GET_TIMEZONE_FROM_FIELD", + 0x2A16: "ER_EVENT_CANT_FIND_TIMEZONE", + 0x2A17: "ER_EVENT_CANT_GET_CHARSET", + 0x2A18: "ER_EVENT_CANT_GET_COLLATION", + 0x2A19: "ER_EVENT_CANT_OPEN_TABLE_MYSQL_EVENT", + 0x2A1A: "ER_CANT_PARSE_STORED_ROUTINE_BODY", + 0x2A1B: "ER_CANT_OPEN_TABLE_MYSQL_PROC", + 0x2A1C: "ER_CANT_READ_TABLE_MYSQL_PROC", + 0x2A1D: "ER_FILE_EXISTS_DURING_UPGRADE", + 0x2A1E: "ER_CANT_OPEN_DATADIR_AFTER_UPGRADE_FAILURE", + 0x2A1F: "ER_CANT_SET_PATH_FOR", + 0x2A20: "ER_CANT_OPEN_DIR", + 0x2A21: "ER_NDB_EMPTY_NODEID_IN_NDB_CLUSTER_CONNECTION_POOL_NODEIDS", + 0x2A22: "ER_NDB_CANT_PARSE_NDB_CLUSTER_CONNECTION_POOL_NODEIDS", + 0x2A23: "ER_NDB_INVALID_NODEID_IN_NDB_CLUSTER_CONNECTION_POOL_NODEIDS", + 0x2A24: "ER_NDB_DUPLICATE_NODEID_IN_NDB_CLUSTER_CONNECTION_POOL_NODEIDS", + 0x2A25: "ER_NDB_POOL_SIZE_MUST_MATCH_NDB_CLUSTER_CONNECTION_POOL_NODEIDS", + 0x2A26: "ER_NDB_NODEID_NOT_FIRST_IN_NDB_CLUSTER_CONNECTION_POOL_NODEIDS", + 0x2A27: "ER_NDB_USING_NODEID", + 0x2A28: "ER_NDB_CANT_ALLOC_GLOBAL_NDB_CLUSTER_CONNECTION", + 0x2A29: "ER_NDB_CANT_ALLOC_GLOBAL_NDB_OBJECT", + 0x2A2A: "ER_NDB_USING_NODEID_LIST", + 0x2A2B: "ER_NDB_CANT_ALLOC_NDB_CLUSTER_CONNECTION", + 0x2A2C: "ER_NDB_STARTING_CONNECT_THREAD", + 0x2A2D: "ER_NDB_NODE_INFO", + 0x2A2E: "ER_NDB_CANT_START_CONNECT_THREAD", + 0x2A2F: "ER_NDB_GENERIC_ERROR", + 0x2A30: "ER_NDB_CPU_MASK_TOO_SHORT", + 0x2A31: "ER_EVENT_ERROR_CREATING_QUERY_TO_WRITE_TO_BINLOG", + 0x2A32: "ER_EVENT_SCHEDULER_ERROR_LOADING_FROM_DB", + 0x2A33: "ER_EVENT_SCHEDULER_ERROR_GETTING_EVENT_OBJECT", + 0x2A34: "ER_EVENT_SCHEDULER_GOT_BAD_DATA_FROM_TABLE", + 0x2A35: "ER_EVENT_CANT_GET_LOCK_FOR_DROPPING_EVENT", + 0x2A36: "ER_EVENT_UNABLE_TO_DROP_EVENT", + 0x2A37: "ER_BINLOG_ATTACHING_THREAD_MEMORY_FINALLY_AVAILABLE", + 0x2A38: "ER_BINLOG_CANT_RESIZE_CACHE", + 0x2A39: "ER_BINLOG_FILE_BEING_READ_NOT_PURGED", + 0x2A3A: "ER_BINLOG_IO_ERROR_READING_HEADER", + 0x2A3B: "ER_BINLOG_CANT_OPEN_LOG", + 0x2A3C: "ER_BINLOG_CANT_CREATE_CACHE_FOR_LOG", + 0x2A3D: "ER_BINLOG_FILE_EXTENSION_NUMBER_EXHAUSTED", + 0x2A3E: "ER_BINLOG_FILE_NAME_TOO_LONG", + 0x2A3F: "ER_BINLOG_FILE_EXTENSION_NUMBER_RUNNING_LOW", + 0x2A40: "ER_BINLOG_CANT_OPEN_FOR_LOGGING", + 0x2A41: "ER_BINLOG_FAILED_TO_SYNC_INDEX_FILE", + 0x2A42: "ER_BINLOG_ERROR_READING_GTIDS_FROM_RELAY_LOG", + 0x2A43: "ER_BINLOG_EVENTS_READ_FROM_RELAY_LOG_INFO", + 0x2A44: "ER_BINLOG_ERROR_READING_GTIDS_FROM_BINARY_LOG", + 0x2A45: "ER_BINLOG_EVENTS_READ_FROM_BINLOG_INFO", + 0x2A46: "ER_BINLOG_CANT_GENERATE_NEW_FILE_NAME", + 0x2A47: "ER_BINLOG_FAILED_TO_SYNC_INDEX_FILE_IN_OPEN", + 0x2A48: "ER_BINLOG_CANT_USE_FOR_LOGGING", + 0x2A49: "ER_BINLOG_FAILED_TO_CLOSE_INDEX_FILE_WHILE_REBUILDING", + 0x2A4A: "ER_BINLOG_FAILED_TO_DELETE_INDEX_FILE_WHILE_REBUILDING", + 0x2A4B: "ER_BINLOG_FAILED_TO_RENAME_INDEX_FILE_WHILE_REBUILDING", + 0x2A4C: "ER_BINLOG_FAILED_TO_OPEN_INDEX_FILE_AFTER_REBUILDING", + 0x2A4D: "ER_BINLOG_CANT_APPEND_LOG_TO_TMP_INDEX", + 0x2A4E: "ER_BINLOG_CANT_LOCATE_OLD_BINLOG_OR_RELAY_LOG_FILES", + 0x2A4F: "ER_BINLOG_CANT_DELETE_FILE", + 0x2A50: "ER_BINLOG_CANT_SET_TMP_INDEX_NAME", + 0x2A51: "ER_BINLOG_FAILED_TO_OPEN_TEMPORARY_INDEX_FILE", + 0x2A52: "ER_BINLOG_ERROR_GETTING_NEXT_LOG_FROM_INDEX", + 0x2A53: "ER_BINLOG_CANT_OPEN_TMP_INDEX", + 0x2A54: "ER_BINLOG_CANT_COPY_INDEX_TO_TMP", + 0x2A55: "ER_BINLOG_CANT_CLOSE_TMP_INDEX", + 0x2A56: "ER_BINLOG_CANT_MOVE_TMP_TO_INDEX", + 0x2A57: "ER_BINLOG_PURGE_LOGS_CALLED_WITH_FILE_NOT_IN_INDEX", + 0x2A58: "ER_BINLOG_PURGE_LOGS_CANT_SYNC_INDEX_FILE", + 0x2A59: "ER_BINLOG_PURGE_LOGS_CANT_COPY_TO_REGISTER_FILE", + 0x2A5A: "ER_BINLOG_PURGE_LOGS_CANT_FLUSH_REGISTER_FILE", + 0x2A5B: "ER_BINLOG_PURGE_LOGS_CANT_UPDATE_INDEX_FILE", + 0x2A5C: "ER_BINLOG_PURGE_LOGS_FAILED_TO_PURGE_LOG", + 0x2A5D: "ER_BINLOG_FAILED_TO_SET_PURGE_INDEX_FILE_NAME", + 0x2A5E: "ER_BINLOG_FAILED_TO_OPEN_REGISTER_FILE", + 0x2A5F: "ER_BINLOG_FAILED_TO_REINIT_REGISTER_FILE", + 0x2A60: "ER_BINLOG_FAILED_TO_READ_REGISTER_FILE", + 0x2A61: "ER_CANT_STAT_FILE", + 0x2A62: "ER_BINLOG_CANT_DELETE_LOG_FILE_DOES_INDEX_MATCH_FILES", + 0x2A63: "ER_BINLOG_CANT_DELETE_FILE_AND_READ_BINLOG_INDEX", + 0x2A64: "ER_BINLOG_FAILED_TO_DELETE_LOG_FILE", + 0x2A65: "ER_BINLOG_LOGGING_INCIDENT_TO_STOP_SLAVES", + 0x2A66: "ER_BINLOG_CANT_FIND_LOG_IN_INDEX", + 0x2A67: "ER_BINLOG_RECOVERING_AFTER_CRASH_USING", + 0x2A68: "ER_BINLOG_CANT_OPEN_CRASHED_BINLOG", + 0x2A69: "ER_BINLOG_CANT_TRIM_CRASHED_BINLOG", + 0x2A6A: "ER_BINLOG_CRASHED_BINLOG_TRIMMED", + 0x2A6B: "ER_BINLOG_CANT_CLEAR_IN_USE_FLAG_FOR_CRASHED_BINLOG", + 0x2A6C: "ER_BINLOG_FAILED_TO_RUN_AFTER_SYNC_HOOK", + 0x2A6D: "ER_TURNING_LOGGING_OFF_FOR_THE_DURATION", + 0x2A6E: "ER_BINLOG_FAILED_TO_RUN_AFTER_FLUSH_HOOK", + 0x2A6F: "ER_BINLOG_CRASH_RECOVERY_FAILED", + 0x2A70: "ER_BINLOG_WARNING_SUPPRESSED", + 0x2A71: "ER_NDB_LOG_ENTRY", + 0x2A72: "ER_NDB_LOG_ENTRY_WITH_PREFIX", + 0x2A73: "ER_NDB_BINLOG_CANT_CREATE_PURGE_THD", + 0x2A74: "ER_INNODB_UNKNOWN_COLLATION", + 0x2A75: "ER_INNODB_INVALID_LOG_GROUP_HOME_DIR", + 0x2A76: "ER_INNODB_INVALID_INNODB_UNDO_DIRECTORY", + 0x2A77: "ER_INNODB_ILLEGAL_COLON_IN_POOL", + 0x2A78: "ER_INNODB_INVALID_PAGE_SIZE", + 0x2A79: "ER_INNODB_DIRTY_WATER_MARK_NOT_LOW", + 0x2A7A: "ER_INNODB_IO_CAPACITY_EXCEEDS_MAX", + 0x2A7B: "ER_INNODB_FILES_SAME", + 0x2A7C: "ER_INNODB_UNREGISTERED_TRX_ACTIVE", + 0x2A7D: "ER_INNODB_CLOSING_CONNECTION_ROLLS_BACK", + 0x2A7E: "ER_INNODB_TRX_XLATION_TABLE_OOM", + 0x2A7F: "ER_INNODB_CANT_FIND_INDEX_IN_INNODB_DD", + 0x2A80: "ER_INNODB_INDEX_COLUMN_INFO_UNLIKE_MYSQLS", + 0x2A81: "ER_INNODB_CANT_OPEN_TABLE", + 0x2A82: "ER_INNODB_CANT_BUILD_INDEX_XLATION_TABLE_FOR", + 0x2A83: "ER_INNODB_PK_NOT_IN_MYSQL", + 0x2A84: "ER_INNODB_PK_ONLY_IN_MYSQL", + 0x2A85: "ER_INNODB_CLUSTERED_INDEX_PRIVATE", + 0x2A86: "ER_INNODB_PARTITION_TABLE_LOWERCASED", + 0x2A87: "ER_ERRMSG_REPLACEMENT_DODGY", + 0x2A88: "ER_ERRMSG_REPLACEMENTS_FAILED", + 0x2A89: "ER_NPIPE_CANT_CREATE", + 0x2A8A: "ER_PARTITION_MOVE_CREATED_DUPLICATE_ROW_PLEASE_FIX", + 0x2A8B: "ER_AUDIT_CANT_ABORT_COMMAND", + 0x2A8C: "ER_AUDIT_CANT_ABORT_EVENT", + 0x2A8D: "ER_AUDIT_WARNING", + 0x2A8E: "ER_NDB_NUMBER_OF_CHANNELS", + 0x2A8F: "ER_NDB_SLAVE_PARALLEL_WORKERS", + 0x2A90: "ER_NDB_DISTRIBUTING_ERR", + 0x2A91: "ER_RPL_SLAVE_INSECURE_CHANGE_MASTER", + 0x2A92: "ER_RPL_SLAVE_FLUSH_RELAY_LOGS_NOT_ALLOWED", + 0x2A93: "ER_RPL_SLAVE_INCORRECT_CHANNEL", + 0x2A94: "ER_FAILED_TO_FIND_DL_ENTRY", + 0x2A95: "ER_FAILED_TO_OPEN_SHARED_LIBRARY", + 0x2A96: "ER_THREAD_PRIORITY_IGNORED", + 0x2A97: "ER_BINLOG_CACHE_SIZE_TOO_LARGE", + 0x2A98: "ER_BINLOG_STMT_CACHE_SIZE_TOO_LARGE", + 0x2A99: "ER_FAILED_TO_GENERATE_UNIQUE_LOGFILE", + 0x2A9A: "ER_FAILED_TO_READ_FILE", + 0x2A9B: "ER_FAILED_TO_WRITE_TO_FILE", + 0x2A9C: "ER_BINLOG_UNSAFE_MESSAGE_AND_STATEMENT", + 0x2A9D: "ER_FORCE_CLOSE_THREAD", + 0x2A9E: "ER_SERVER_SHUTDOWN_COMPLETE", + 0x2A9F: "ER_RPL_CANT_HAVE_SAME_BASENAME", + 0x2AA0: "ER_RPL_GTID_MODE_REQUIRES_ENFORCE_GTID_CONSISTENCY_ON", + 0x2AA1: "ER_WARN_NO_SERVERID_SPECIFIED", + 0x2AA2: "ER_ABORTING_USER_CONNECTION", + 0x2AA3: "ER_SQL_MODE_MERGED_WITH_STRICT_MODE", + 0x2AA4: "ER_GTID_PURGED_WAS_UPDATED", + 0x2AA5: "ER_GTID_EXECUTED_WAS_UPDATED", + 0x2AA6: "ER_DEPRECATE_MSG_WITH_REPLACEMENT", + 0x2AA7: "ER_TRG_CREATION_CTX_NOT_SET", + 0x2AA8: "ER_FILE_HAS_OLD_FORMAT", + 0x2AA9: "ER_VIEW_CREATION_CTX_NOT_SET", + 0x2AAA: "ER_TABLE_NAME_CAUSES_TOO_LONG_PATH", + 0x2AAB: "ER_TABLE_UPGRADE_REQUIRED", + 0x2AAC: "ER_GET_ERRNO_FROM_STORAGE_ENGINE", + 0x2AAD: "ER_ACCESS_DENIED_ERROR_WITHOUT_PASSWORD", + 0x2AAE: "ER_ACCESS_DENIED_ERROR_WITH_PASSWORD", + 0x2AAF: "ER_ACCESS_DENIED_FOR_USER_ACCOUNT_LOCKED", + 0x2AB0: "ER_MUST_CHANGE_EXPIRED_PASSWORD", + 0x2AB1: "ER_SYSTEM_TABLES_NOT_SUPPORTED_BY_STORAGE_ENGINE", + 0x2AB2: "ER_FILESORT_TERMINATED", + 0x2AB3: "ER_SERVER_STARTUP_MSG", + 0x2AB4: "ER_FAILED_TO_FIND_LOCALE_NAME", + 0x2AB5: "ER_FAILED_TO_FIND_COLLATION_NAME", + 0x2AB6: "ER_SERVER_OUT_OF_RESOURCES", + 0x2AB7: "ER_SERVER_OUTOFMEMORY", + 0x2AB8: "ER_INVALID_COLLATION_FOR_CHARSET", + 0x2AB9: "ER_CANT_START_ERROR_LOG_SERVICE", + 0x2ABA: "ER_CREATING_NEW_UUID_FIRST_START", + 0x2ABB: "ER_FAILED_TO_GET_ABSOLUTE_PATH", + 0x2ABC: "ER_PERFSCHEMA_COMPONENTS_INFRASTRUCTURE_BOOTSTRAP", + 0x2ABD: "ER_PERFSCHEMA_COMPONENTS_INFRASTRUCTURE_SHUTDOWN", + 0x2ABE: "ER_DUP_FD_OPEN_FAILED", + 0x2ABF: "ER_SYSTEM_VIEW_INIT_FAILED", + 0x2AC0: "ER_RESOURCE_GROUP_POST_INIT_FAILED", + 0x2AC1: "ER_RESOURCE_GROUP_SUBSYSTEM_INIT_FAILED", + 0x2AC2: "ER_FAILED_START_MYSQLD_DAEMON", + 0x2AC3: "ER_CANNOT_CHANGE_TO_ROOT_DIR", + 0x2AC4: "ER_PERSISTENT_PRIVILEGES_BOOTSTRAP", + 0x2AC5: "ER_BASEDIR_SET_TO", + 0x2AC6: "ER_RPL_FILTER_ADD_WILD_DO_TABLE_FAILED", + 0x2AC7: "ER_RPL_FILTER_ADD_WILD_IGNORE_TABLE_FAILED", + 0x2AC8: "ER_PRIVILEGE_SYSTEM_INIT_FAILED", + 0x2AC9: "ER_CANNOT_SET_LOG_ERROR_SERVICES", + 0x2ACA: "ER_PERFSCHEMA_TABLES_INIT_FAILED", + 0x2ACB: "ER_TX_EXTRACTION_ALGORITHM_FOR_BINLOG_TX_DEPEDENCY_TRACKING", + 0x2ACC: "ER_INVALID_REPLICATION_TIMESTAMPS", + 0x2ACD: "ER_RPL_TIMESTAMPS_RETURNED_TO_NORMAL", + 0x2ACE: "ER_BINLOG_FILE_OPEN_FAILED", + 0x2ACF: "ER_BINLOG_EVENT_WRITE_TO_STMT_CACHE_FAILED", + 0x2AD0: "ER_SLAVE_RELAY_LOG_TRUNCATE_INFO", + 0x2AD1: "ER_SLAVE_RELAY_LOG_PURGE_FAILED", + 0x2AD2: "ER_RPL_SLAVE_FILTER_CREATE_FAILED", + 0x2AD3: "ER_RPL_SLAVE_GLOBAL_FILTERS_COPY_FAILED", + 0x2AD4: "ER_RPL_SLAVE_RESET_FILTER_OPTIONS", + 0x2AD5: "ER_MISSING_GRANT_SYSTEM_TABLE", + 0x2AD6: "ER_MISSING_ACL_SYSTEM_TABLE", + 0x2AD7: "ER_ANONYMOUS_AUTH_ID_NOT_ALLOWED_IN_MANDATORY_ROLES", + 0x2AD8: "ER_UNKNOWN_AUTH_ID_IN_MANDATORY_ROLE", + 0x2AD9: "ER_WRITE_ROW_TO_PARTITION_FAILED", + 0x2ADA: "ER_RESOURCE_GROUP_METADATA_UPDATE_SKIPPED", + 0x2ADB: "ER_FAILED_TO_PERSIST_RESOURCE_GROUP_METADATA", + 0x2ADC: "ER_FAILED_TO_DESERIALIZE_RESOURCE_GROUP", + 0x2ADD: "ER_FAILED_TO_UPDATE_RESOURCE_GROUP", + 0x2ADE: "ER_RESOURCE_GROUP_VALIDATION_FAILED", + 0x2ADF: "ER_FAILED_TO_ALLOCATE_MEMORY_FOR_RESOURCE_GROUP", + 0x2AE0: "ER_FAILED_TO_ALLOCATE_MEMORY_FOR_RESOURCE_GROUP_HASH", + 0x2AE1: "ER_FAILED_TO_ADD_RESOURCE_GROUP_TO_MAP", + 0x2AE2: "ER_RESOURCE_GROUP_IS_DISABLED", + 0x2AE3: "ER_FAILED_TO_APPLY_RESOURCE_GROUP_CONTROLLER", + 0x2AE4: "ER_FAILED_TO_ACQUIRE_LOCK_ON_RESOURCE_GROUP", + 0x2AE5: "ER_PFS_NOTIFICATION_FUNCTION_REGISTER_FAILED", + 0x2AE6: "ER_RES_GRP_SET_THR_AFFINITY_FAILED", + 0x2AE7: "ER_RES_GRP_SET_THR_AFFINITY_TO_CPUS_FAILED", + 0x2AE8: "ER_RES_GRP_THD_UNBIND_FROM_CPU_FAILED", + 0x2AE9: "ER_RES_GRP_SET_THREAD_PRIORITY_FAILED", + 0x2AEA: "ER_RES_GRP_FAILED_TO_DETERMINE_NICE_CAPABILITY", + 0x2AEB: "ER_RES_GRP_FAILED_TO_GET_THREAD_HANDLE", + 0x2AEC: "ER_RES_GRP_GET_THREAD_PRIO_NOT_SUPPORTED", + 0x2AED: "ER_RES_GRP_FAILED_DETERMINE_CPU_COUNT", + 0x2AEE: "ER_RES_GRP_FEATURE_NOT_AVAILABLE", + 0x2AEF: "ER_RES_GRP_INVALID_THREAD_PRIORITY", + 0x2AF0: "ER_RES_GRP_SOLARIS_PROCESSOR_BIND_TO_CPUID_FAILED", + 0x2AF1: "ER_RES_GRP_SOLARIS_PROCESSOR_BIND_TO_THREAD_FAILED", + 0x2AF2: "ER_RES_GRP_SOLARIS_PROCESSOR_AFFINITY_FAILED", + 0x2AF3: "ER_DD_UPGRADE_RENAME_IDX_STATS_FILE_FAILED", + 0x2AF4: "ER_DD_UPGRADE_DD_OPEN_FAILED", + 0x2AF5: "ER_DD_UPGRADE_FAILED_TO_FETCH_TABLESPACES", + 0x2AF6: "ER_DD_UPGRADE_FAILED_TO_ACQUIRE_TABLESPACE", + 0x2AF7: "ER_DD_UPGRADE_FAILED_TO_RESOLVE_TABLESPACE_ENGINE", + 0x2AF8: "ER_FAILED_TO_CREATE_SDI_FOR_TABLESPACE", + 0x2AF9: "ER_FAILED_TO_STORE_SDI_FOR_TABLESPACE", + 0x2AFA: "ER_DD_UPGRADE_FAILED_TO_FETCH_TABLES", + 0x2AFB: "ER_DD_UPGRADE_DD_POPULATED", + 0x2AFC: "ER_DD_UPGRADE_INFO_FILE_OPEN_FAILED", + 0x2AFD: "ER_DD_UPGRADE_INFO_FILE_CLOSE_FAILED", + 0x2AFE: "ER_DD_UPGRADE_TABLESPACE_MIGRATION_FAILED", + 0x2AFF: "ER_DD_UPGRADE_FAILED_TO_CREATE_TABLE_STATS", + 0x2B00: "ER_DD_UPGRADE_TABLE_STATS_MIGRATE_COMPLETED", + 0x2B01: "ER_DD_UPGRADE_FAILED_TO_CREATE_INDEX_STATS", + 0x2B02: "ER_DD_UPGRADE_INDEX_STATS_MIGRATE_COMPLETED", + 0x2B03: "ER_DD_UPGRADE_FAILED_FIND_VALID_DATA_DIR", + 0x2B04: "ER_DD_UPGRADE_START", + 0x2B05: "ER_DD_UPGRADE_FAILED_INIT_DD_SE", + 0x2B06: "ER_DD_UPGRADE_FOUND_PARTIALLY_UPGRADED_DD_ABORT", + 0x2B07: "ER_DD_UPGRADE_FOUND_PARTIALLY_UPGRADED_DD_CONTINUE", + 0x2B08: "ER_DD_UPGRADE_SE_LOGS_FAILED", + 0x2B09: "ER_DD_UPGRADE_SDI_INFO_UPDATE_FAILED", + 0x2B0A: "ER_SKIP_UPDATING_METADATA_IN_SE_RO_MODE", + 0x2B0B: "ER_CREATED_SYSTEM_WITH_VERSION", + 0x2B0C: "ER_UNKNOWN_ERROR_DETECTED_IN_SE", + 0x2B0D: "ER_READ_LOG_EVENT_FAILED", + 0x2B0E: "ER_ROW_DATA_TOO_BIG_TO_WRITE_IN_BINLOG", + 0x2B0F: "ER_FAILED_TO_CONSTRUCT_DROP_EVENT_QUERY", + 0x2B10: "ER_FAILED_TO_BINLOG_DROP_EVENT", + 0x2B11: "ER_FAILED_TO_START_SLAVE_THREAD", + 0x2B12: "ER_RPL_IO_THREAD_KILLED", + 0x2B13: "ER_SLAVE_RECONNECT_FAILED", + 0x2B14: "ER_SLAVE_KILLED_AFTER_RECONNECT", + 0x2B15: "ER_SLAVE_NOT_STARTED_ON_SOME_CHANNELS", + 0x2B16: "ER_FAILED_TO_ADD_RPL_FILTER", + 0x2B17: "ER_PER_CHANNEL_RPL_FILTER_CONF_FOR_GRP_RPL", + 0x2B18: "ER_RPL_FILTERS_NOT_ATTACHED_TO_CHANNEL", + 0x2B19: "ER_FAILED_TO_BUILD_DO_AND_IGNORE_TABLE_HASHES", + 0x2B1A: "ER_CLONE_PLUGIN_NOT_LOADED", + 0x2B1B: "ER_CLONE_HANDLER_EXISTS", + 0x2B1C: "ER_FAILED_TO_CREATE_CLONE_HANDLER", + 0x2B1D: "ER_CYCLE_TIMER_IS_NOT_AVAILABLE", + 0x2B1E: "ER_NANOSECOND_TIMER_IS_NOT_AVAILABLE", + 0x2B1F: "ER_MICROSECOND_TIMER_IS_NOT_AVAILABLE", + 0x2B20: "ER_PFS_MALLOC_ARRAY_OVERFLOW", + 0x2B21: "ER_PFS_MALLOC_ARRAY_OOM", + 0x2B22: "ER_INNODB_FAILED_TO_FIND_IDX_WITH_KEY_NO", + 0x2B23: "ER_INNODB_FAILED_TO_FIND_IDX", + 0x2B24: "ER_INNODB_FAILED_TO_FIND_IDX_FROM_DICT_CACHE", + 0x2B25: "ER_INNODB_ACTIVE_INDEX_CHANGE_FAILED", + 0x2B26: "ER_INNODB_DIFF_IN_REF_LEN", + 0x2B27: "ER_WRONG_TYPE_FOR_COLUMN_PREFIX_IDX_FLD", + 0x2B28: "ER_INNODB_CANNOT_CREATE_TABLE", + 0x2B29: "ER_INNODB_INTERNAL_INDEX", + 0x2B2A: "ER_INNODB_IDX_CNT_MORE_THAN_DEFINED_IN_MYSQL", + 0x2B2B: "ER_INNODB_IDX_CNT_FEWER_THAN_DEFINED_IN_MYSQL", + 0x2B2C: "ER_INNODB_IDX_COLUMN_CNT_DIFF", + 0x2B2D: "ER_INNODB_USE_MONITOR_GROUP_NAME", + 0x2B2E: "ER_INNODB_MONITOR_DEFAULT_VALUE_NOT_DEFINED", + 0x2B2F: "ER_INNODB_MONITOR_IS_ENABLED", + 0x2B30: "ER_INNODB_INVALID_MONITOR_COUNTER_NAME", + 0x2B31: "ER_WIN_LOAD_LIBRARY_FAILED", + 0x2B32: "ER_PARTITION_HANDLER_ADMIN_MSG", + 0x2B33: "ER_RPL_RLI_INIT_INFO_MSG", + 0x2B34: "ER_DD_UPGRADE_TABLE_INTACT_ERROR", + 0x2B35: "ER_SERVER_INIT_COMPILED_IN_COMMANDS", + 0x2B36: "ER_MYISAM_CHECK_METHOD_ERROR", + 0x2B37: "ER_MYISAM_CRASHED_ERROR", + 0x2B38: "ER_WAITPID_FAILED", + 0x2B39: "ER_FAILED_TO_FIND_MYSQLD_STATUS", + 0x2B3A: "ER_INNODB_ERROR_LOGGER_MSG", + 0x2B3B: "ER_INNODB_ERROR_LOGGER_FATAL_MSG", + 0x2B3C: "ER_DEPRECATED_SYNTAX_WITH_REPLACEMENT", + 0x2B3D: "ER_DEPRECATED_SYNTAX_NO_REPLACEMENT", + 0x2B3E: "ER_DEPRECATE_MSG_NO_REPLACEMENT", + 0x2B3F: "ER_LOG_PRINTF_MSG", + 0x2B40: "ER_BINLOG_LOGGING_NOT_POSSIBLE", + 0x2B41: "ER_FAILED_TO_SET_PERSISTED_OPTIONS", + 0x2B42: "ER_COMPONENTS_FAILED_TO_ACQUIRE_SERVICE_IMPLEMENTATION", + 0x2B43: "ER_RES_GRP_INVALID_VCPU_RANGE", + 0x2B44: "ER_RES_GRP_INVALID_VCPU_ID", + 0x2B45: "ER_ERROR_DURING_FLUSH_LOG_COMMIT_PHASE", + 0x2B46: "ER_DROP_DATABASE_FAILED_RMDIR_MANUALLY", + 0x2B47: "ER_EXPIRE_LOGS_DAYS_IGNORED", + 0x2B48: "ER_BINLOG_MALFORMED_OR_OLD_RELAY_LOG", + 0x2B49: "ER_DD_UPGRADE_VIEW_COLUMN_NAME_TOO_LONG", + 0x2B4A: "ER_TABLE_NEEDS_DUMP_UPGRADE", + 0x2B4B: "ER_DD_UPGRADE_FAILED_TO_UPDATE_VER_NO_IN_TABLESPACE", + 0x2B4C: "ER_KEYRING_MIGRATION_FAILED", + 0x2B4D: "ER_KEYRING_MIGRATION_SUCCESSFUL", + 0x2B4E: "ER_RESTART_RECEIVED_INFO", + 0x2B4F: "ER_LCTN_CHANGED", + 0x2B50: "ER_DD_INITIALIZE", + 0x2B51: "ER_DD_RESTART", + 0x2B52: "ER_DD_UPGRADE", + 0x2B53: "ER_DD_UPGRADE_OFF", + 0x2B54: "ER_DD_UPGRADE_VERSION_NOT_SUPPORTED", + 0x2B55: "ER_DD_UPGRADE_SCHEMA_UNAVAILABLE", + 0x2B56: "ER_DD_MINOR_DOWNGRADE", + 0x2B57: "ER_DD_MINOR_DOWNGRADE_VERSION_NOT_SUPPORTED", + 0x2B58: "ER_DD_NO_VERSION_FOUND", + 0x2B59: "ER_THREAD_POOL_NOT_SUPPORTED_ON_PLATFORM", + 0x2B5A: "ER_THREAD_POOL_SIZE_TOO_LOW", + 0x2B5B: "ER_THREAD_POOL_SIZE_TOO_HIGH", + 0x2B5C: "ER_THREAD_POOL_ALGORITHM_INVALID", + 0x2B5D: "ER_THREAD_POOL_INVALID_STALL_LIMIT", + 0x2B5E: "ER_THREAD_POOL_INVALID_PRIO_KICKUP_TIMER", + 0x2B5F: "ER_THREAD_POOL_MAX_UNUSED_THREADS_INVALID", + 0x2B60: "ER_THREAD_POOL_CON_HANDLER_INIT_FAILED", + 0x2B61: "ER_THREAD_POOL_INIT_FAILED", + 0x2B62: "ER_THREAD_POOL_PLUGIN_STARTED", + 0x2B63: "ER_THREAD_POOL_CANNOT_SET_THREAD_SPECIFIC_DATA", + 0x2B64: "ER_THREAD_POOL_FAILED_TO_CREATE_CONNECT_HANDLER_THD", + 0x2B65: "ER_THREAD_POOL_FAILED_TO_CREATE_THD_AND_AUTH_CONN", + 0x2B66: "ER_THREAD_POOL_FAILED_PROCESS_CONNECT_EVENT", + 0x2B67: "ER_THREAD_POOL_FAILED_TO_CREATE_POOL", + 0x2B68: "ER_THREAD_POOL_RATE_LIMITED_ERROR_MSGS", + 0x2B69: "ER_TRHEAD_POOL_LOW_LEVEL_INIT_FAILED", + 0x2B6A: "ER_THREAD_POOL_LOW_LEVEL_REARM_FAILED", + 0x2B6B: "ER_THREAD_POOL_BUFFER_TOO_SMALL", + 0x2B6C: "ER_MECAB_NOT_SUPPORTED", + 0x2B6D: "ER_MECAB_NOT_VERIFIED", + 0x2B6E: "ER_MECAB_CREATING_MODEL", + 0x2B6F: "ER_MECAB_FAILED_TO_CREATE_MODEL", + 0x2B70: "ER_MECAB_FAILED_TO_CREATE_TRIGGER", + 0x2B71: "ER_MECAB_UNSUPPORTED_CHARSET", + 0x2B72: "ER_MECAB_CHARSET_LOADED", + 0x2B73: "ER_MECAB_PARSE_FAILED", + 0x2B74: "ER_MECAB_OOM_WHILE_PARSING_TEXT", + 0x2B75: "ER_MECAB_CREATE_LATTICE_FAILED", + 0x2B76: "ER_SEMISYNC_TRACE_ENTER_FUNC", + 0x2B77: "ER_SEMISYNC_TRACE_EXIT_WITH_INT_EXIT_CODE", + 0x2B78: "ER_SEMISYNC_TRACE_EXIT_WITH_BOOL_EXIT_CODE", + 0x2B79: "ER_SEMISYNC_TRACE_EXIT", + 0x2B7A: "ER_SEMISYNC_RPL_INIT_FOR_TRX", + 0x2B7B: "ER_SEMISYNC_FAILED_TO_ALLOCATE_TRX_NODE", + 0x2B7C: "ER_SEMISYNC_BINLOG_WRITE_OUT_OF_ORDER", + 0x2B7D: "ER_SEMISYNC_INSERT_LOG_INFO_IN_ENTRY", + 0x2B7E: "ER_SEMISYNC_PROBE_LOG_INFO_IN_ENTRY", + 0x2B7F: "ER_SEMISYNC_CLEARED_ALL_ACTIVE_TRANSACTION_NODES", + 0x2B80: "ER_SEMISYNC_CLEARED_ACTIVE_TRANSACTION_TILL_POS", + 0x2B81: "ER_SEMISYNC_REPLY_MAGIC_NO_ERROR", + 0x2B82: "ER_SEMISYNC_REPLY_PKT_LENGTH_TOO_SMALL", + 0x2B83: "ER_SEMISYNC_REPLY_BINLOG_FILE_TOO_LARGE", + 0x2B84: "ER_SEMISYNC_SERVER_REPLY", + 0x2B85: "ER_SEMISYNC_FUNCTION_CALLED_TWICE", + 0x2B86: "ER_SEMISYNC_RPL_ENABLED_ON_MASTER", + 0x2B87: "ER_SEMISYNC_MASTER_OOM", + 0x2B88: "ER_SEMISYNC_DISABLED_ON_MASTER", + 0x2B89: "ER_SEMISYNC_FORCED_SHUTDOWN", + 0x2B8A: "ER_SEMISYNC_MASTER_GOT_REPLY_AT_POS", + 0x2B8B: "ER_SEMISYNC_MASTER_SIGNAL_ALL_WAITING_THREADS", + 0x2B8C: "ER_SEMISYNC_MASTER_TRX_WAIT_POS", + 0x2B8D: "ER_SEMISYNC_BINLOG_REPLY_IS_AHEAD", + 0x2B8E: "ER_SEMISYNC_MOVE_BACK_WAIT_POS", + 0x2B8F: "ER_SEMISYNC_INIT_WAIT_POS", + 0x2B90: "ER_SEMISYNC_WAIT_TIME_FOR_BINLOG_SENT", + 0x2B91: "ER_SEMISYNC_WAIT_FOR_BINLOG_TIMEDOUT", + 0x2B92: "ER_SEMISYNC_WAIT_TIME_ASSESSMENT_FOR_COMMIT_TRX_FAILED", + 0x2B93: "ER_SEMISYNC_RPL_SWITCHED_OFF", + 0x2B94: "ER_SEMISYNC_RPL_SWITCHED_ON", + 0x2B95: "ER_SEMISYNC_NO_SPACE_IN_THE_PKT", + 0x2B96: "ER_SEMISYNC_SYNC_HEADER_UPDATE_INFO", + 0x2B97: "ER_SEMISYNC_FAILED_TO_INSERT_TRX_NODE", + 0x2B98: "ER_SEMISYNC_TRX_SKIPPED_AT_POS", + 0x2B99: "ER_SEMISYNC_MASTER_FAILED_ON_NET_FLUSH", + 0x2B9A: "ER_SEMISYNC_RECEIVED_ACK_IS_SMALLER", + 0x2B9B: "ER_SEMISYNC_ADD_ACK_TO_SLOT", + 0x2B9C: "ER_SEMISYNC_UPDATE_EXISTING_SLAVE_ACK", + 0x2B9D: "ER_SEMISYNC_FAILED_TO_START_ACK_RECEIVER_THD", + 0x2B9E: "ER_SEMISYNC_STARTING_ACK_RECEIVER_THD", + 0x2B9F: "ER_SEMISYNC_FAILED_TO_WAIT_ON_DUMP_SOCKET", + 0x2BA0: "ER_SEMISYNC_STOPPING_ACK_RECEIVER_THREAD", + 0x2BA1: "ER_SEMISYNC_FAILED_REGISTER_SLAVE_TO_RECEIVER", + 0x2BA2: "ER_SEMISYNC_START_BINLOG_DUMP_TO_SLAVE", + 0x2BA3: "ER_SEMISYNC_STOP_BINLOG_DUMP_TO_SLAVE", + 0x2BA4: "ER_SEMISYNC_UNREGISTER_TRX_OBSERVER_FAILED", + 0x2BA5: "ER_SEMISYNC_UNREGISTER_BINLOG_STORAGE_OBSERVER_FAILED", + 0x2BA6: "ER_SEMISYNC_UNREGISTER_BINLOG_TRANSMIT_OBSERVER_FAILED", + 0x2BA7: "ER_SEMISYNC_UNREGISTERED_REPLICATOR", + 0x2BA8: "ER_SEMISYNC_SOCKET_FD_TOO_LARGE", + 0x2BA9: "ER_SEMISYNC_SLAVE_REPLY", + 0x2BAA: "ER_SEMISYNC_MISSING_MAGIC_NO_FOR_SEMISYNC_PKT", + 0x2BAB: "ER_SEMISYNC_SLAVE_START", + 0x2BAC: "ER_SEMISYNC_SLAVE_REPLY_WITH_BINLOG_INFO", + 0x2BAD: "ER_SEMISYNC_SLAVE_NET_FLUSH_REPLY_FAILED", + 0x2BAE: "ER_SEMISYNC_SLAVE_SEND_REPLY_FAILED", + 0x2BAF: "ER_SEMISYNC_EXECUTION_FAILED_ON_MASTER", + 0x2BB0: "ER_SEMISYNC_NOT_SUPPORTED_BY_MASTER", + 0x2BB1: "ER_SEMISYNC_SLAVE_SET_FAILED", + 0x2BB2: "ER_SEMISYNC_FAILED_TO_STOP_ACK_RECEIVER_THD", + 0x2BB3: "ER_FIREWALL_FAILED_TO_READ_FIREWALL_TABLES", + 0x2BB4: "ER_FIREWALL_FAILED_TO_REG_DYNAMIC_PRIVILEGES", + 0x2BB5: "ER_FIREWALL_RECORDING_STMT_WAS_TRUNCATED", + 0x2BB6: "ER_FIREWALL_RECORDING_STMT_WITHOUT_TEXT", + 0x2BB7: "ER_FIREWALL_SUSPICIOUS_STMT", + 0x2BB8: "ER_FIREWALL_ACCESS_DENIED", + 0x2BB9: "ER_FIREWALL_SKIPPED_UNKNOWN_USER_MODE", + 0x2BBA: "ER_FIREWALL_RELOADING_CACHE", + 0x2BBB: "ER_FIREWALL_RESET_FOR_USER", + 0x2BBC: "ER_FIREWALL_STATUS_FLUSHED", + 0x2BBD: "ER_KEYRING_LOGGER_ERROR_MSG", + 0x2BBE: "ER_AUDIT_LOG_FILTER_IS_NOT_INSTALLED", + 0x2BBF: "ER_AUDIT_LOG_SWITCHING_TO_INCLUDE_LIST", + 0x2BC0: "ER_AUDIT_LOG_CANNOT_SET_LOG_POLICY_WITH_OTHER_POLICIES", + 0x2BC1: "ER_AUDIT_LOG_ONLY_INCLUDE_LIST_USED", + 0x2BC2: "ER_AUDIT_LOG_INDEX_MAP_CANNOT_ACCESS_DIR", + 0x2BC3: "ER_AUDIT_LOG_WRITER_RENAME_FILE_FAILED", + 0x2BC4: "ER_AUDIT_LOG_WRITER_DEST_FILE_ALREADY_EXISTS", + 0x2BC5: "ER_AUDIT_LOG_WRITER_RENAME_FILE_FAILED_REMOVE_FILE_MANUALLY", + 0x2BC6: "ER_AUDIT_LOG_WRITER_INCOMPLETE_FILE_RENAMED", + 0x2BC7: "ER_AUDIT_LOG_WRITER_FAILED_TO_WRITE_TO_FILE", + 0x2BC8: "ER_AUDIT_LOG_EC_WRITER_FAILED_TO_INIT_ENCRYPTION", + 0x2BC9: "ER_AUDIT_LOG_EC_WRITER_FAILED_TO_INIT_COMPRESSION", + 0x2BCA: "ER_AUDIT_LOG_EC_WRITER_FAILED_TO_CREATE_FILE", + 0x2BCB: "ER_AUDIT_LOG_RENAME_LOG_FILE_BEFORE_FLUSH", + 0x2BCC: "ER_AUDIT_LOG_FILTER_RESULT_MSG", + 0x2BCD: "ER_AUDIT_LOG_JSON_READER_FAILED_TO_PARSE", + 0x2BCE: "ER_AUDIT_LOG_JSON_READER_BUF_TOO_SMALL", + 0x2BCF: "ER_AUDIT_LOG_JSON_READER_FAILED_TO_OPEN_FILE", + 0x2BD0: "ER_AUDIT_LOG_JSON_READER_FILE_PARSING_ERROR", + 0x2BD1: "ER_AUDIT_LOG_FILTER_INVALID_COLUMN_COUNT", + 0x2BD2: "ER_AUDIT_LOG_FILTER_INVALID_COLUMN_DEFINITION", + 0x2BD3: "ER_AUDIT_LOG_FILTER_FAILED_TO_STORE_TABLE_FLDS", + 0x2BD4: "ER_AUDIT_LOG_FILTER_FAILED_TO_UPDATE_TABLE", + 0x2BD5: "ER_AUDIT_LOG_FILTER_FAILED_TO_INSERT_INTO_TABLE", + 0x2BD6: "ER_AUDIT_LOG_FILTER_FAILED_TO_DELETE_FROM_TABLE", + 0x2BD7: "ER_AUDIT_LOG_FILTER_FAILED_TO_INIT_TABLE_FOR_READ", + 0x2BD8: "ER_AUDIT_LOG_FILTER_FAILED_TO_READ_TABLE", + 0x2BD9: "ER_AUDIT_LOG_FILTER_FAILED_TO_CLOSE_TABLE_AFTER_READING", + 0x2BDA: "ER_AUDIT_LOG_FILTER_USER_AND_HOST_CANNOT_BE_EMPTY", + 0x2BDB: "ER_AUDIT_LOG_FILTER_FLD_FILTERNAME_CANNOT_BE_EMPTY", + 0x2BDC: "ER_VALIDATE_PWD_DICT_FILE_NOT_SPECIFIED", + 0x2BDD: "ER_VALIDATE_PWD_DICT_FILE_NOT_LOADED", + 0x2BDE: "ER_VALIDATE_PWD_DICT_FILE_TOO_BIG", + 0x2BDF: "ER_VALIDATE_PWD_FAILED_TO_READ_DICT_FILE", + 0x2BE0: "ER_VALIDATE_PWD_FAILED_TO_GET_FLD_FROM_SECURITY_CTX", + 0x2BE1: "ER_VALIDATE_PWD_FAILED_TO_GET_SECURITY_CTX", + 0x2BE2: "ER_VALIDATE_PWD_LENGTH_CHANGED", + 0x2BE3: "ER_REWRITER_QUERY_ERROR_MSG", + 0x2BE4: "ER_REWRITER_QUERY_FAILED", + 0x2BE5: "ER_XPLUGIN_STARTUP_FAILED", + 0x2BE6: "ER_XPLUGIN_SERVER_EXITING", + 0x2BE7: "ER_XPLUGIN_SERVER_EXITED", + 0x2BE8: "ER_XPLUGIN_USING_SSL_CONF_FROM_SERVER", + 0x2BE9: "ER_XPLUGIN_USING_SSL_CONF_FROM_MYSQLX", + 0x2BEA: "ER_XPLUGIN_FAILED_TO_USE_SSL_CONF", + 0x2BEB: "ER_XPLUGIN_USING_SSL_FOR_TLS_CONNECTION", + 0x2BEC: "ER_XPLUGIN_REFERENCE_TO_SECURE_CONN_WITH_XPLUGIN", + 0x2BED: "ER_XPLUGIN_ERROR_MSG", + 0x2BEE: "ER_SHA_PWD_FAILED_TO_PARSE_AUTH_STRING", + 0x2BEF: "ER_SHA_PWD_FAILED_TO_GENERATE_MULTI_ROUND_HASH", + 0x2BF0: "ER_SHA_PWD_AUTH_REQUIRES_RSA_OR_SSL", + 0x2BF1: "ER_SHA_PWD_RSA_KEY_TOO_LONG", + 0x2BF2: "ER_PLUGIN_COMMON_FAILED_TO_OPEN_FILTER_TABLES", + 0x2BF3: "ER_PLUGIN_COMMON_FAILED_TO_OPEN_TABLE", + 0x2BF4: "ER_AUTH_LDAP_ERROR_LOGGER_ERROR_MSG", + 0x2BF5: "ER_CONN_CONTROL_ERROR_MSG", + 0x2BF6: "ER_GRP_RPL_ERROR_MSG", + 0x2BF7: "ER_SHA_PWD_SALT_FOR_USER_CORRUPT", + 0x2BF8: "ER_SYS_VAR_COMPONENT_OOM", + 0x2BF9: "ER_SYS_VAR_COMPONENT_VARIABLE_SET_READ_ONLY", + 0x2BFA: "ER_SYS_VAR_COMPONENT_UNKNOWN_VARIABLE_TYPE", + 0x2BFB: "ER_SYS_VAR_COMPONENT_FAILED_TO_PARSE_VARIABLE_OPTIONS", + 0x2BFC: "ER_SYS_VAR_COMPONENT_FAILED_TO_MAKE_VARIABLE_PERSISTENT", + 0x2BFD: "ER_COMPONENT_FILTER_CONFUSED", + 0x2BFE: "ER_STOP_SLAVE_IO_THREAD_DISK_SPACE", + 0x2BFF: "ER_LOG_FILE_CANNOT_OPEN", + 0x2C04: "ER_PERSIST_OPTION_STATUS", + 0x2C05: "ER_NOT_IMPLEMENTED_GET_TABLESPACE_STATISTICS", + 0x2C08: "ER_SSL_FIPS_MODE_ERROR", + 0x2C09: "ER_CONN_INIT_CONNECT_IGNORED", + 0x2C0A: "ER_UNSUPPORTED_SQL_MODE", + 0x2C0B: "ER_REWRITER_OOM", + 0x2C0C: "ER_REWRITER_TABLE_MALFORMED_ERROR", + 0x2C0D: "ER_REWRITER_LOAD_FAILED", + 0x2C0E: "ER_REWRITER_READ_FAILED", + 0x2C0F: "ER_CONN_CONTROL_EVENT_COORDINATOR_INIT_FAILED", + 0x2C10: "ER_CONN_CONTROL_STAT_CONN_DELAY_TRIGGERED_UPDATE_FAILED", + 0x2C11: "ER_CONN_CONTROL_STAT_CONN_DELAY_TRIGGERED_RESET_FAILED", + 0x2C12: "ER_CONN_CONTROL_INVALID_CONN_DELAY_TYPE", + 0x2C13: "ER_CONN_CONTROL_DELAY_ACTION_INIT_FAILED", + 0x2C14: "ER_CONN_CONTROL_FAILED_TO_SET_CONN_DELAY", + 0x2C15: "ER_CONN_CONTROL_FAILED_TO_UPDATE_CONN_DELAY_HASH", + 0x2C16: "ER_XPLUGIN_FORCE_STOP_CLIENT", + 0x2C17: "ER_XPLUGIN_MAX_AUTH_ATTEMPTS_REACHED", + 0x2C18: "ER_XPLUGIN_BUFFER_PAGE_ALLOC_FAILED", + 0x2C19: "ER_XPLUGIN_DETECTED_HANGING_CLIENTS", + 0x2C1A: "ER_XPLUGIN_FAILED_TO_ACCEPT_CLIENT", + 0x2C1B: "ER_XPLUGIN_FAILED_TO_SCHEDULE_CLIENT", + 0x2C1C: "ER_XPLUGIN_FAILED_TO_PREPARE_IO_INTERFACES", + 0x2C1D: "ER_XPLUGIN_SRV_SESSION_INIT_THREAD_FAILED", + 0x2C1E: "ER_XPLUGIN_UNABLE_TO_USE_USER_SESSION_ACCOUNT", + 0x2C1F: "ER_XPLUGIN_REFERENCE_TO_USER_ACCOUNT_DOC_SECTION", + 0x2C20: "ER_XPLUGIN_UNEXPECTED_EXCEPTION_DISPATCHING_CMD", + 0x2C21: "ER_XPLUGIN_EXCEPTION_IN_TASK_SCHEDULER", + 0x2C22: "ER_XPLUGIN_TASK_SCHEDULING_FAILED", + 0x2C23: "ER_XPLUGIN_EXCEPTION_IN_EVENT_LOOP", + 0x2C24: "ER_XPLUGIN_LISTENER_SETUP_FAILED", + 0x2C25: "ER_XPLUING_NET_STARTUP_FAILED", + 0x2C26: "ER_XPLUGIN_FAILED_AT_SSL_CONF", + 0x2C27: "ER_XPLUGIN_CLIENT_SSL_HANDSHAKE_FAILED", + 0x2C28: "ER_XPLUGIN_SSL_HANDSHAKE_WITH_SERVER_FAILED", + 0x2C29: "ER_XPLUGIN_FAILED_TO_CREATE_SESSION_FOR_CONN", + 0x2C2A: "ER_XPLUGIN_FAILED_TO_INITIALIZE_SESSION", + 0x2C2B: "ER_XPLUGIN_MESSAGE_TOO_LONG", + 0x2C2C: "ER_XPLUGIN_UNINITIALIZED_MESSAGE", + 0x2C2D: "ER_XPLUGIN_FAILED_TO_SET_MIN_NUMBER_OF_WORKERS", + 0x2C2E: "ER_XPLUGIN_UNABLE_TO_ACCEPT_CONNECTION", + 0x2C2F: "ER_XPLUGIN_ALL_IO_INTERFACES_DISABLED", + 0x2C30: "ER_XPLUGIN_INVALID_MSG_DURING_CLIENT_INIT", + 0x2C31: "ER_XPLUGIN_CLOSING_CLIENTS_ON_SHUTDOWN", + 0x2C32: "ER_XPLUGIN_ERROR_READING_SOCKET", + 0x2C33: "ER_XPLUGIN_PEER_DISCONNECTED_WHILE_READING_MSG_BODY", + 0x2C34: "ER_XPLUGIN_READ_FAILED_CLOSING_CONNECTION", + 0x2C35: "ER_XPLUGIN_INVALID_AUTH_METHOD", + 0x2C36: "ER_XPLUGIN_UNEXPECTED_MSG_DURING_AUTHENTICATION", + 0x2C37: "ER_XPLUGIN_ERROR_WRITING_TO_CLIENT", + 0x2C38: "ER_XPLUGIN_SCHEDULER_STARTED", + 0x2C39: "ER_XPLUGIN_SCHEDULER_STOPPED", + 0x2C3A: "ER_XPLUGIN_LISTENER_SYS_VARIABLE_ERROR", + 0x2C3B: "ER_XPLUGIN_LISTENER_STATUS_MSG", + 0x2C3C: "ER_XPLUGIN_RETRYING_BIND_ON_PORT", + 0x2C3D: "ER_XPLUGIN_SHUTDOWN_TRIGGERED", + 0x2C3E: "ER_XPLUGIN_USER_ACCOUNT_WITH_ALL_PERMISSIONS", + 0x2C3F: "ER_XPLUGIN_EXISTING_USER_ACCOUNT_WITH_INCOMPLETE_GRANTS", + 0x2C40: "ER_XPLUGIN_SERVER_STARTS_HANDLING_CONNECTIONS", + 0x2C41: "ER_XPLUGIN_SERVER_STOPPED_HANDLING_CONNECTIONS", + 0x2C42: "ER_XPLUGIN_FAILED_TO_INTERRUPT_SESSION", + 0x2C43: "ER_XPLUGIN_CLIENT_RELEASE_TRIGGERED", + 0x2C44: "ER_XPLUGIN_IPv6_AVAILABLE", + 0x2C45: "ER_XPLUGIN_UNIX_SOCKET_NOT_CONFIGURED", + 0x2C46: "ER_XPLUGIN_CLIENT_KILL_MSG", + 0x2C47: "ER_XPLUGIN_FAILED_TO_GET_SECURITY_CTX", + 0x2C48: "ER_XPLUGIN_FAILED_TO_SWITCH_SECURITY_CTX_TO_ROOT", + 0x2C49: "ER_XPLUGIN_FAILED_TO_CLOSE_SQL_SESSION", + 0x2C4A: "ER_XPLUGIN_FAILED_TO_EXECUTE_ADMIN_CMD", + 0x2C4B: "ER_XPLUGIN_EMPTY_ADMIN_CMD", + 0x2C4C: "ER_XPLUGIN_FAILED_TO_GET_SYS_VAR", + 0x2C4D: "ER_XPLUGIN_FAILED_TO_GET_CREATION_STMT", + 0x2C4E: "ER_XPLUGIN_FAILED_TO_GET_ENGINE_INFO", + 0x2C4F: "ER_XPLUGIN_FAIL_TO_GET_RESULT_DATA", + 0x2C50: "ER_XPLUGIN_CAPABILITY_EXPIRED_PASSWORD", + 0x2C51: "ER_XPLUGIN_FAILED_TO_SET_SO_REUSEADDR_FLAG", + 0x2C52: "ER_XPLUGIN_FAILED_TO_OPEN_INTERNAL_SESSION", + 0x2C53: "ER_XPLUGIN_FAILED_TO_SWITCH_CONTEXT", + 0x2C54: "ER_XPLUGIN_FAILED_TO_UNREGISTER_UDF", + 0x2C55: "ER_XPLUGIN_GET_PEER_ADDRESS_FAILED", + 0x2C56: "ER_XPLUGIN_CAPABILITY_CLIENT_INTERACTIVE_FAILED", + 0x2C57: "ER_XPLUGIN_FAILED_TO_RESET_IPV6_V6ONLY_FLAG", + 0x2C58: "ER_KEYRING_INVALID_KEY_TYPE", + 0x2C59: "ER_KEYRING_INVALID_KEY_LENGTH", + 0x2C5A: "ER_KEYRING_FAILED_TO_CREATE_KEYRING_DIR", + 0x2C5B: "ER_KEYRING_FILE_INIT_FAILED", + 0x2C5C: "ER_KEYRING_INTERNAL_EXCEPTION_FAILED_FILE_INIT", + 0x2C5D: "ER_KEYRING_FAILED_TO_GENERATE_KEY", + 0x2C5E: "ER_KEYRING_CHECK_KEY_FAILED_DUE_TO_INVALID_KEY", + 0x2C5F: "ER_KEYRING_CHECK_KEY_FAILED_DUE_TO_EMPTY_KEY_ID", + 0x2C60: "ER_KEYRING_OPERATION_FAILED_DUE_TO_INTERNAL_ERROR", + 0x2C61: "ER_KEYRING_INCORRECT_FILE", + 0x2C62: "ER_KEYRING_FOUND_MALFORMED_BACKUP_FILE", + 0x2C63: "ER_KEYRING_FAILED_TO_RESTORE_FROM_BACKUP_FILE", + 0x2C64: "ER_KEYRING_FAILED_TO_FLUSH_KEYRING_TO_FILE", + 0x2C65: "ER_KEYRING_FAILED_TO_GET_FILE_STAT", + 0x2C66: "ER_KEYRING_FAILED_TO_REMOVE_FILE", + 0x2C67: "ER_KEYRING_FAILED_TO_TRUNCATE_FILE", + 0x2C68: "ER_KEYRING_UNKNOWN_ERROR", + 0x2C69: "ER_KEYRING_FAILED_TO_SET_KEYRING_FILE_DATA", + 0x2C6A: "ER_KEYRING_FILE_IO_ERROR", + 0x2C6B: "ER_KEYRING_FAILED_TO_LOAD_KEYRING_CONTENT", + 0x2C6C: "ER_KEYRING_FAILED_TO_FLUSH_KEYS_TO_KEYRING", + 0x2C6D: "ER_KEYRING_FAILED_TO_FLUSH_KEYS_TO_KEYRING_BACKUP", + 0x2C6E: "ER_KEYRING_KEY_FETCH_FAILED_DUE_TO_EMPTY_KEY_ID", + 0x2C6F: "ER_KEYRING_FAILED_TO_REMOVE_KEY_DUE_TO_EMPTY_ID", + 0x2C70: "ER_KEYRING_OKV_INCORRECT_KEY_VAULT_CONFIGURED", + 0x2C71: "ER_KEYRING_OKV_INIT_FAILED_DUE_TO_INCORRECT_CONF", + 0x2C72: "ER_KEYRING_OKV_INIT_FAILED_DUE_TO_INTERNAL_ERROR", + 0x2C73: "ER_KEYRING_OKV_INVALID_KEY_TYPE", + 0x2C74: "ER_KEYRING_OKV_INVALID_KEY_LENGTH_FOR_CIPHER", + 0x2C75: "ER_KEYRING_OKV_FAILED_TO_GENERATE_KEY_DUE_TO_INTERNAL_ERROR", + 0x2C76: "ER_KEYRING_OKV_FAILED_TO_FIND_SERVER_ENTRY", + 0x2C77: "ER_KEYRING_OKV_FAILED_TO_FIND_STANDBY_SERVER_ENTRY", + 0x2C78: "ER_KEYRING_OKV_FAILED_TO_PARSE_CONF_FILE", + 0x2C79: "ER_KEYRING_OKV_FAILED_TO_LOAD_KEY_UID", + 0x2C7A: "ER_KEYRING_OKV_FAILED_TO_INIT_SSL_LAYER", + 0x2C7B: "ER_KEYRING_OKV_FAILED_TO_INIT_CLIENT", + 0x2C7C: "ER_KEYRING_OKV_CONNECTION_TO_SERVER_FAILED", + 0x2C7D: "ER_KEYRING_OKV_FAILED_TO_REMOVE_KEY", + 0x2C7E: "ER_KEYRING_OKV_FAILED_TO_ADD_ATTRIBUTE", + 0x2C7F: "ER_KEYRING_OKV_FAILED_TO_GENERATE_KEY", + 0x2C80: "ER_KEYRING_OKV_FAILED_TO_STORE_KEY", + 0x2C81: "ER_KEYRING_OKV_FAILED_TO_ACTIVATE_KEYS", + 0x2C82: "ER_KEYRING_OKV_FAILED_TO_FETCH_KEY", + 0x2C83: "ER_KEYRING_OKV_FAILED_TO_STORE_OR_GENERATE_KEY", + 0x2C84: "ER_KEYRING_OKV_FAILED_TO_RETRIEVE_KEY_SIGNATURE", + 0x2C85: "ER_KEYRING_OKV_FAILED_TO_RETRIEVE_KEY", + 0x2C86: "ER_KEYRING_OKV_FAILED_TO_LOAD_SSL_TRUST_STORE", + 0x2C87: "ER_KEYRING_OKV_FAILED_TO_SET_CERTIFICATE_FILE", + 0x2C88: "ER_KEYRING_OKV_FAILED_TO_SET_KEY_FILE", + 0x2C89: "ER_KEYRING_OKV_KEY_MISMATCH", + 0x2C8A: "ER_KEYRING_ENCRYPTED_FILE_INCORRECT_KEYRING_FILE", + 0x2C8B: "ER_KEYRING_ENCRYPTED_FILE_DECRYPTION_FAILED", + 0x2C8C: "ER_KEYRING_ENCRYPTED_FILE_FOUND_MALFORMED_BACKUP_FILE", + 0x2C8D: "ER_KEYRING_ENCRYPTED_FILE_FAILED_TO_RESTORE_KEYRING", + 0x2C8E: "ER_KEYRING_ENCRYPTED_FILE_FAILED_TO_FLUSH_KEYRING", + 0x2C8F: "ER_KEYRING_ENCRYPTED_FILE_ENCRYPTION_FAILED", + 0x2C90: "ER_KEYRING_ENCRYPTED_FILE_INVALID_KEYRING_DIR", + 0x2C91: "ER_KEYRING_ENCRYPTED_FILE_FAILED_TO_CREATE_KEYRING_DIR", + 0x2C92: "ER_KEYRING_ENCRYPTED_FILE_PASSWORD_IS_INVALID", + 0x2C93: "ER_KEYRING_ENCRYPTED_FILE_PASSWORD_IS_TOO_LONG", + 0x2C94: "ER_KEYRING_ENCRYPTED_FILE_INIT_FAILURE", + 0x2C95: "ER_KEYRING_ENCRYPTED_FILE_INIT_FAILED_DUE_TO_INTERNAL_ERROR", + 0x2C96: "ER_KEYRING_ENCRYPTED_FILE_GEN_KEY_FAILED_DUE_TO_INTERNAL_ERROR", + 0x2C97: "ER_KEYRING_AWS_FAILED_TO_SET_CMK_ID", + 0x2C98: "ER_KEYRING_AWS_FAILED_TO_SET_REGION", + 0x2C99: "ER_KEYRING_AWS_FAILED_TO_OPEN_CONF_FILE", + 0x2C9A: "ER_KEYRING_AWS_FAILED_TO_ACCESS_KEY_ID_FROM_CONF_FILE", + 0x2C9B: "ER_KEYRING_AWS_FAILED_TO_ACCESS_KEY_FROM_CONF_FILE", + 0x2C9C: "ER_KEYRING_AWS_INVALID_CONF_FILE_PATH", + 0x2C9D: "ER_KEYRING_AWS_INVALID_DATA_FILE_PATH", + 0x2C9E: "ER_KEYRING_AWS_FAILED_TO_ACCESS_OR_CREATE_KEYRING_DIR", + 0x2C9F: "ER_KEYRING_AWS_FAILED_TO_ACCESS_OR_CREATE_KEYRING_DATA_FILE", + 0x2CA0: "ER_KEYRING_AWS_FAILED_TO_INIT_DUE_TO_INTERNAL_ERROR", + 0x2CA1: "ER_KEYRING_AWS_FAILED_TO_ACCESS_DATA_FILE", + 0x2CA2: "ER_KEYRING_AWS_CMK_ID_NOT_SET", + 0x2CA3: "ER_KEYRING_AWS_FAILED_TO_GET_KMS_CREDENTIAL_FROM_CONF_FILE", + 0x2CA4: "ER_KEYRING_AWS_INIT_FAILURE", + 0x2CA5: "ER_KEYRING_AWS_FAILED_TO_INIT_DUE_TO_PLUGIN_INTERNAL_ERROR", + 0x2CA6: "ER_KEYRING_AWS_INVALID_KEY_LENGTH_FOR_CIPHER", + 0x2CA7: "ER_KEYRING_AWS_FAILED_TO_GENERATE_KEY_DUE_TO_INTERNAL_ERROR", + 0x2CA8: "ER_KEYRING_AWS_INCORRECT_FILE", + 0x2CA9: "ER_KEYRING_AWS_FOUND_MALFORMED_BACKUP_FILE", + 0x2CAA: "ER_KEYRING_AWS_FAILED_TO_RESTORE_FROM_BACKUP_FILE", + 0x2CAB: "ER_KEYRING_AWS_FAILED_TO_FLUSH_KEYRING_TO_FILE", + 0x2CAC: "ER_KEYRING_AWS_INCORRECT_REGION", + 0x2CAD: "ER_KEYRING_AWS_FAILED_TO_CONNECT_KMS", + 0x2CAE: "ER_KEYRING_AWS_FAILED_TO_GENERATE_NEW_KEY", + 0x2CAF: "ER_KEYRING_AWS_FAILED_TO_ENCRYPT_KEY", + 0x2CB0: "ER_KEYRING_AWS_FAILED_TO_RE_ENCRYPT_KEY", + 0x2CB1: "ER_KEYRING_AWS_FAILED_TO_DECRYPT_KEY", + 0x2CB2: "ER_KEYRING_AWS_FAILED_TO_ROTATE_CMK", + 0x2CB3: "ER_GRP_RPL_GTID_ALREADY_USED", + 0x2CB4: "ER_GRP_RPL_APPLIER_THD_KILLED", + 0x2CB5: "ER_GRP_RPL_EVENT_HANDLING_ERROR", + 0x2CB6: "ER_GRP_RPL_ERROR_GTID_EXECUTION_INFO", + 0x2CB7: "ER_GRP_RPL_CERTIFICATE_SIZE_ERROR", + 0x2CB8: "ER_GRP_RPL_CREATE_APPLIER_CACHE_ERROR", + 0x2CB9: "ER_GRP_RPL_UNBLOCK_WAITING_THD", + 0x2CBA: "ER_GRP_RPL_APPLIER_PIPELINE_NOT_DISPOSED", + 0x2CBB: "ER_GRP_RPL_APPLIER_THD_EXECUTION_ABORTED", + 0x2CBC: "ER_GRP_RPL_APPLIER_EXECUTION_FATAL_ERROR", + 0x2CBD: "ER_GRP_RPL_ERROR_STOPPING_CHANNELS", + 0x2CBE: "ER_GRP_RPL_ERROR_SENDING_SINGLE_PRIMARY_MSSG", + 0x2CBF: "ER_GRP_RPL_UPDATE_TRANS_SNAPSHOT_VER_ERROR", + 0x2CC0: "ER_GRP_RPL_SIDNO_FETCH_ERROR", + 0x2CC1: "ER_GRP_RPL_BROADCAST_COMMIT_TRANS_MSSG_FAILED", + 0x2CC2: "ER_GRP_RPL_GROUP_NAME_PARSE_ERROR", + 0x2CC3: "ER_GRP_RPL_ADD_GRPSID_TO_GRPGTIDSID_MAP_ERROR", + 0x2CC4: "ER_GRP_RPL_UPDATE_GRPGTID_EXECUTED_ERROR", + 0x2CC5: "ER_GRP_RPL_DONOR_TRANS_INFO_ERROR", + 0x2CC6: "ER_GRP_RPL_SERVER_CONN_ERROR", + 0x2CC7: "ER_GRP_RPL_ERROR_FETCHING_GTID_EXECUTED_SET", + 0x2CC8: "ER_GRP_RPL_ADD_GTID_TO_GRPGTID_EXECUTED_ERROR", + 0x2CC9: "ER_GRP_RPL_ERROR_FETCHING_GTID_SET", + 0x2CCA: "ER_GRP_RPL_ADD_RETRIEVED_SET_TO_GRP_GTID_EXECUTED_ERROR", + 0x2CCB: "ER_GRP_RPL_CERTIFICATION_INITIALIZATION_FAILURE", + 0x2CCC: "ER_GRP_RPL_UPDATE_LAST_CONFLICT_FREE_TRANS_ERROR", + 0x2CCD: "ER_GRP_RPL_UPDATE_TRANS_SNAPSHOT_REF_VER_ERROR", + 0x2CCE: "ER_GRP_RPL_FETCH_TRANS_SIDNO_ERROR", + 0x2CCF: "ER_GRP_RPL_ERROR_VERIFYING_SIDNO", + 0x2CD0: "ER_GRP_RPL_CANT_GENERATE_GTID", + 0x2CD1: "ER_GRP_RPL_INVALID_GTID_SET", + 0x2CD2: "ER_GRP_RPL_UPDATE_GTID_SET_ERROR", + 0x2CD3: "ER_GRP_RPL_RECEIVED_SET_MISSING_GTIDS", + 0x2CD4: "ER_GRP_RPL_SKIP_COMPUTATION_TRANS_COMMITTED", + 0x2CD5: "ER_GRP_RPL_NULL_PACKET", + 0x2CD6: "ER_GRP_RPL_CANT_READ_GTID", + 0x2CD7: "ER_GRP_RPL_PROCESS_GTID_SET_ERROR", + 0x2CD8: "ER_GRP_RPL_PROCESS_INTERSECTION_GTID_SET_ERROR", + 0x2CD9: "ER_GRP_RPL_SET_STABLE_TRANS_ERROR", + 0x2CDA: "ER_GRP_RPL_CANT_READ_GRP_GTID_EXTRACTED", + 0x2CDB: "ER_GRP_RPL_CANT_READ_WRITE_SET_ITEM", + 0x2CDC: "ER_GRP_RPL_INIT_CERTIFICATION_INFO_FAILURE", + 0x2CDD: "ER_GRP_RPL_CONFLICT_DETECTION_DISABLED", + 0x2CDE: "ER_GRP_RPL_MSG_DISCARDED", + 0x2CDF: "ER_GRP_RPL_MISSING_GRP_RPL_APPLIER", + 0x2CE0: "ER_GRP_RPL_CERTIFIER_MSSG_PROCESS_ERROR", + 0x2CE1: "ER_GRP_RPL_SRV_NOT_ONLINE", + 0x2CE2: "ER_GRP_RPL_SRV_ONLINE", + 0x2CE3: "ER_GRP_RPL_DISABLE_SRV_READ_MODE_RESTRICTED", + 0x2CE4: "ER_GRP_RPL_MEM_ONLINE", + 0x2CE5: "ER_GRP_RPL_MEM_UNREACHABLE", + 0x2CE6: "ER_GRP_RPL_MEM_REACHABLE", + 0x2CE7: "ER_GRP_RPL_SRV_BLOCKED", + 0x2CE8: "ER_GRP_RPL_SRV_BLOCKED_FOR_SECS", + 0x2CE9: "ER_GRP_RPL_CHANGE_GRP_MEM_NOT_PROCESSED", + 0x2CEA: "ER_GRP_RPL_MEMBER_CONTACT_RESTORED", + 0x2CEB: "ER_GRP_RPL_MEMBER_REMOVED", + 0x2CEC: "ER_GRP_RPL_PRIMARY_MEMBER_LEFT_GRP", + 0x2CED: "ER_GRP_RPL_MEMBER_ADDED", + 0x2CEE: "ER_GRP_RPL_MEMBER_EXIT_PLUGIN_ERROR", + 0x2CEF: "ER_GRP_RPL_MEMBER_CHANGE", + 0x2CF0: "ER_GRP_RPL_MEMBER_LEFT_GRP", + 0x2CF1: "ER_GRP_RPL_MEMBER_EXPELLED", + 0x2CF2: "ER_GRP_RPL_SESSION_OPEN_FAILED", + 0x2CF3: "ER_GRP_RPL_NEW_PRIMARY_ELECTED", + 0x2CF4: "ER_GRP_RPL_DISABLE_READ_ONLY_FAILED", + 0x2CF5: "ER_GRP_RPL_ENABLE_READ_ONLY_FAILED", + 0x2CF6: "ER_GRP_RPL_SRV_PRIMARY_MEM", + 0x2CF7: "ER_GRP_RPL_SRV_SECONDARY_MEM", + 0x2CF8: "ER_GRP_RPL_NO_SUITABLE_PRIMARY_MEM", + 0x2CF9: "ER_GRP_RPL_SUPER_READ_ONLY_ACTIVATE_ERROR", + 0x2CFA: "ER_GRP_RPL_EXCEEDS_AUTO_INC_VALUE", + 0x2CFB: "ER_GRP_RPL_DATA_NOT_PROVIDED_BY_MEM", + 0x2CFC: "ER_GRP_RPL_MEMBER_ALREADY_EXISTS", + 0x2CFD: "ER_GRP_RPL_GRP_CHANGE_INFO_EXTRACT_ERROR", + 0x2CFE: "ER_GRP_RPL_GTID_EXECUTED_EXTRACT_ERROR", + 0x2CFF: "ER_GRP_RPL_GTID_SET_EXTRACT_ERROR", + 0x2D00: "ER_GRP_RPL_START_FAILED", + 0x2D01: "ER_GRP_RPL_MEMBER_VER_INCOMPATIBLE", + 0x2D02: "ER_GRP_RPL_TRANS_NOT_PRESENT_IN_GRP", + 0x2D03: "ER_GRP_RPL_TRANS_GREATER_THAN_GRP", + 0x2D04: "ER_GRP_RPL_MEMBER_VERSION_LOWER_THAN_GRP", + 0x2D05: "ER_GRP_RPL_LOCAL_GTID_SETS_PROCESS_ERROR", + 0x2D06: "ER_GRP_RPL_MEMBER_TRANS_GREATER_THAN_GRP", + 0x2D07: "ER_GRP_RPL_BLOCK_SIZE_DIFF_FROM_GRP", + 0x2D08: "ER_GRP_RPL_TRANS_WRITE_SET_EXTRACT_DIFF_FROM_GRP", + 0x2D09: "ER_GRP_RPL_MEMBER_CFG_INCOMPATIBLE_WITH_GRP_CFG", + 0x2D0A: "ER_GRP_RPL_MEMBER_STOP_RPL_CHANNELS_ERROR", + 0x2D0B: "ER_GRP_RPL_PURGE_APPLIER_LOGS", + 0x2D0C: "ER_GRP_RPL_RESET_APPLIER_MODULE_LOGS_ERROR", + 0x2D0D: "ER_GRP_RPL_APPLIER_THD_SETUP_ERROR", + 0x2D0E: "ER_GRP_RPL_APPLIER_THD_START_ERROR", + 0x2D0F: "ER_GRP_RPL_APPLIER_THD_STOP_ERROR", + 0x2D10: "ER_GRP_RPL_FETCH_TRANS_DATA_FAILED", + 0x2D11: "ER_GRP_RPL_SLAVE_IO_THD_PRIMARY_UNKNOWN", + 0x2D12: "ER_GRP_RPL_SALVE_IO_THD_ON_SECONDARY_MEMBER", + 0x2D13: "ER_GRP_RPL_SLAVE_SQL_THD_PRIMARY_UNKNOWN", + 0x2D14: "ER_GRP_RPL_SLAVE_SQL_THD_ON_SECONDARY_MEMBER", + 0x2D15: "ER_GRP_RPL_NEEDS_INNODB_TABLE", + 0x2D16: "ER_GRP_RPL_PRIMARY_KEY_NOT_DEFINED", + 0x2D17: "ER_GRP_RPL_FK_WITH_CASCADE_UNSUPPORTED", + 0x2D18: "ER_GRP_RPL_AUTO_INC_RESET", + 0x2D19: "ER_GRP_RPL_AUTO_INC_OFFSET_RESET", + 0x2D1A: "ER_GRP_RPL_AUTO_INC_SET", + 0x2D1B: "ER_GRP_RPL_AUTO_INC_OFFSET_SET", + 0x2D1C: "ER_GRP_RPL_FETCH_TRANS_CONTEXT_FAILED", + 0x2D1D: "ER_GRP_RPL_FETCH_FORMAT_DESC_LOG_EVENT_FAILED", + 0x2D1E: "ER_GRP_RPL_FETCH_TRANS_CONTEXT_LOG_EVENT_FAILED", + 0x2D1F: "ER_GRP_RPL_FETCH_SNAPSHOT_VERSION_FAILED", + 0x2D20: "ER_GRP_RPL_FETCH_GTID_LOG_EVENT_FAILED", + 0x2D21: "ER_GRP_RPL_UPDATE_SERV_CERTIFICATE_FAILED", + 0x2D22: "ER_GRP_RPL_ADD_GTID_INFO_WITH_LOCAL_GTID_FAILED", + 0x2D23: "ER_GRP_RPL_ADD_GTID_INFO_WITHOUT_LOCAL_GTID_FAILED", + 0x2D24: "ER_GRP_RPL_NOTIFY_CERTIFICATION_OUTCOME_FAILED", + 0x2D25: "ER_GRP_RPL_ADD_GTID_INFO_WITH_REMOTE_GTID_FAILED", + 0x2D26: "ER_GRP_RPL_ADD_GTID_INFO_WITHOUT_REMOTE_GTID_FAILED", + 0x2D27: "ER_GRP_RPL_FETCH_VIEW_CHANGE_LOG_EVENT_FAILED", + 0x2D28: "ER_GRP_RPL_CONTACT_WITH_SRV_FAILED", + 0x2D29: "ER_GRP_RPL_SRV_WAIT_TIME_OUT", + 0x2D2A: "ER_GRP_RPL_FETCH_LOG_EVENT_FAILED", + 0x2D2B: "ER_GRP_RPL_START_GRP_RPL_FAILED", + 0x2D2C: "ER_GRP_RPL_CONN_INTERNAL_PLUGIN_FAIL", + 0x2D2D: "ER_GRP_RPL_SUPER_READ_ON", + 0x2D2E: "ER_GRP_RPL_SUPER_READ_OFF", + 0x2D2F: "ER_GRP_RPL_KILLED_SESSION_ID", + 0x2D30: "ER_GRP_RPL_KILLED_FAILED_ID", + 0x2D31: "ER_GRP_RPL_INTERNAL_QUERY", + 0x2D32: "ER_GRP_RPL_COPY_FROM_EMPTY_STRING", + 0x2D33: "ER_GRP_RPL_QUERY_FAIL", + 0x2D34: "ER_GRP_RPL_CREATE_SESSION_UNABLE", + 0x2D35: "ER_GRP_RPL_MEMBER_NOT_FOUND", + 0x2D36: "ER_GRP_RPL_MAXIMUM_CONNECTION_RETRIES_REACHED", + 0x2D37: "ER_GRP_RPL_ALL_DONORS_LEFT_ABORT_RECOVERY", + 0x2D38: "ER_GRP_RPL_ESTABLISH_RECOVERY_WITH_DONOR", + 0x2D39: "ER_GRP_RPL_ESTABLISH_RECOVERY_WITH_ANOTHER_DONOR", + 0x2D3A: "ER_GRP_RPL_NO_VALID_DONOR", + 0x2D3B: "ER_GRP_RPL_CONFIG_RECOVERY", + 0x2D3C: "ER_GRP_RPL_ESTABLISHING_CONN_GRP_REC_DONOR", + 0x2D3D: "ER_GRP_RPL_CREATE_GRP_RPL_REC_CHANNEL", + 0x2D3E: "ER_GRP_RPL_DONOR_SERVER_CONN", + 0x2D3F: "ER_GRP_RPL_CHECK_STATUS_TABLE", + 0x2D40: "ER_GRP_RPL_STARTING_GRP_REC", + 0x2D41: "ER_GRP_RPL_DONOR_CONN_TERMINATION", + 0x2D42: "ER_GRP_RPL_STOPPING_GRP_REC", + 0x2D43: "ER_GRP_RPL_PURGE_REC", + 0x2D44: "ER_GRP_RPL_UNABLE_TO_KILL_CONN_REC_DONOR_APPLIER", + 0x2D45: "ER_GRP_RPL_UNABLE_TO_KILL_CONN_REC_DONOR_FAILOVER", + 0x2D46: "ER_GRP_RPL_FAILED_TO_NOTIFY_GRP_MEMBERSHIP_EVENT", + 0x2D47: "ER_GRP_RPL_FAILED_TO_BROADCAST_GRP_MEMBERSHIP_NOTIFICATION", + 0x2D48: "ER_GRP_RPL_FAILED_TO_BROADCAST_MEMBER_STATUS_NOTIFICATION", + 0x2D49: "ER_GRP_RPL_OOM_FAILED_TO_GENERATE_IDENTIFICATION_HASH", + 0x2D4A: "ER_GRP_RPL_WRITE_IDENT_HASH_BASE64_ENCODING_FAILED", + 0x2D4B: "ER_GRP_RPL_INVALID_BINLOG_FORMAT", + 0x2D4C: "ER_GRP_RPL_BINLOG_CHECKSUM_SET", + 0x2D4D: "ER_GRP_RPL_TRANS_WRITE_SET_EXTRACTION_NOT_SET", + 0x2D4E: "ER_GRP_RPL_UNSUPPORTED_TRANS_ISOLATION", + 0x2D4F: "ER_GRP_RPL_CANNOT_EXECUTE_TRANS_WHILE_STOPPING", + 0x2D50: "ER_GRP_RPL_CANNOT_EXECUTE_TRANS_WHILE_RECOVERING", + 0x2D51: "ER_GRP_RPL_CANNOT_EXECUTE_TRANS_IN_ERROR_STATE", + 0x2D52: "ER_GRP_RPL_CANNOT_EXECUTE_TRANS_IN_OFFLINE_MODE", + 0x2D53: "ER_GRP_RPL_MULTIPLE_CACHE_TYPE_NOT_SUPPORTED_FOR_SESSION", + 0x2D54: "ER_GRP_RPL_FAILED_TO_REINIT_BINLOG_CACHE_FOR_READ", + 0x2D55: "ER_GRP_RPL_FAILED_TO_CREATE_TRANS_CONTEXT", + 0x2D56: "ER_GRP_RPL_FAILED_TO_EXTRACT_TRANS_WRITE_SET", + 0x2D57: "ER_GRP_RPL_FAILED_TO_GATHER_TRANS_WRITE_SET", + 0x2D58: "ER_GRP_RPL_TRANS_SIZE_EXCEEDS_LIMIT", + 0x2D59: "ER_GRP_RPL_REINIT_OF_INTERNAL_CACHE_FOR_READ_FAILED", + 0x2D5A: "ER_GRP_RPL_APPENDING_DATA_TO_INTERNAL_CACHE_FAILED", + 0x2D5B: "ER_GRP_RPL_WRITE_TO_BINLOG_CACHE_FAILED", + 0x2D5C: "ER_GRP_RPL_FAILED_TO_REGISTER_TRANS_OUTCOME_NOTIFICTION", + 0x2D5D: "ER_GRP_RPL_MSG_TOO_LONG_BROADCASTING_TRANS_FAILED", + 0x2D5E: "ER_GRP_RPL_BROADCASTING_TRANS_TO_GRP_FAILED", + 0x2D5F: "ER_GRP_RPL_ERROR_WHILE_WAITING_FOR_CONFLICT_DETECTION", + 0x2D60: "ER_GRP_RPL_REINIT_OF_INTERNAL_CACHE_FOR_WRITE_FAILED", + 0x2D61: "ER_GRP_RPL_FAILED_TO_CREATE_COMMIT_CACHE", + 0x2D62: "ER_GRP_RPL_REINIT_OF_COMMIT_CACHE_FOR_WRITE_FAILED", + 0x2D63: "ER_GRP_RPL_PREV_REC_SESSION_RUNNING", + 0x2D64: "ER_GRP_RPL_FATAL_REC_PROCESS", + 0x2D65: "ER_GRP_RPL_WHILE_STOPPING_REP_CHANNEL", + 0x2D66: "ER_GRP_RPL_UNABLE_TO_EVALUATE_APPLIER_STATUS", + 0x2D67: "ER_GRP_RPL_ONLY_ONE_SERVER_ALIVE", + 0x2D68: "ER_GRP_RPL_CERTIFICATION_REC_PROCESS", + 0x2D69: "ER_GRP_RPL_UNABLE_TO_ENSURE_EXECUTION_REC", + 0x2D6A: "ER_GRP_RPL_WHILE_SENDING_MSG_REC", + 0x2D6B: "ER_GRP_RPL_READ_UNABLE_FOR_SUPER_READ_ONLY", + 0x2D6C: "ER_GRP_RPL_READ_UNABLE_FOR_READ_ONLY_SUPER_READ_ONLY", + 0x2D6D: "ER_GRP_RPL_UNABLE_TO_RESET_SERVER_READ_MODE", + 0x2D6E: "ER_GRP_RPL_UNABLE_TO_CERTIFY_PLUGIN_TRANS", + 0x2D6F: "ER_GRP_RPL_UNBLOCK_CERTIFIED_TRANS", + 0x2D70: "ER_GRP_RPL_SERVER_WORKING_AS_SECONDARY", + 0x2D71: "ER_GRP_RPL_FAILED_TO_START_WITH_INVALID_SERVER_ID", + 0x2D72: "ER_GRP_RPL_FORCE_MEMBERS_MUST_BE_EMPTY", + 0x2D73: "ER_GRP_RPL_PLUGIN_STRUCT_INIT_NOT_POSSIBLE_ON_SERVER_START", + 0x2D74: "ER_GRP_RPL_FAILED_TO_ENABLE_SUPER_READ_ONLY_MODE", + 0x2D75: "ER_GRP_RPL_FAILED_TO_INIT_COMMUNICATION_ENGINE", + 0x2D76: "ER_GRP_RPL_FAILED_TO_START_ON_SECONDARY_WITH_ASYNC_CHANNELS", + 0x2D77: "ER_GRP_RPL_FAILED_TO_START_COMMUNICATION_ENGINE", + 0x2D78: "ER_GRP_RPL_TIMEOUT_ON_VIEW_AFTER_JOINING_GRP", + 0x2D79: "ER_GRP_RPL_FAILED_TO_CALL_GRP_COMMUNICATION_INTERFACE", + 0x2D7A: "ER_GRP_RPL_MEMBER_SERVER_UUID_IS_INCOMPATIBLE_WITH_GRP", + 0x2D7B: "ER_GRP_RPL_MEMBER_CONF_INFO", + 0x2D7C: "ER_GRP_RPL_FAILED_TO_CONFIRM_IF_SERVER_LEFT_GRP", + 0x2D7D: "ER_GRP_RPL_SERVER_IS_ALREADY_LEAVING", + 0x2D7E: "ER_GRP_RPL_SERVER_ALREADY_LEFT", + 0x2D7F: "ER_GRP_RPL_WAITING_FOR_VIEW_UPDATE", + 0x2D80: "ER_GRP_RPL_TIMEOUT_RECEIVING_VIEW_CHANGE_ON_SHUTDOWN", + 0x2D81: "ER_GRP_RPL_REQUESTING_NON_MEMBER_SERVER_TO_LEAVE", + 0x2D82: "ER_GRP_RPL_IS_STOPPING", + 0x2D83: "ER_GRP_RPL_IS_STOPPED", + 0x2D84: "ER_GRP_RPL_FAILED_TO_ENABLE_READ_ONLY_MODE_ON_SHUTDOWN", + 0x2D85: "ER_GRP_RPL_RECOVERY_MODULE_TERMINATION_TIMED_OUT_ON_SHUTDOWN", + 0x2D86: "ER_GRP_RPL_APPLIER_TERMINATION_TIMED_OUT_ON_SHUTDOWN", + 0x2D87: "ER_GRP_RPL_FAILED_TO_SHUTDOWN_REGISTRY_MODULE", + 0x2D88: "ER_GRP_RPL_FAILED_TO_INIT_HANDLER", + 0x2D89: "ER_GRP_RPL_FAILED_TO_REGISTER_SERVER_STATE_OBSERVER", + 0x2D8A: "ER_GRP_RPL_FAILED_TO_REGISTER_TRANS_STATE_OBSERVER", + 0x2D8B: "ER_GRP_RPL_FAILED_TO_REGISTER_BINLOG_STATE_OBSERVER", + 0x2D8C: "ER_GRP_RPL_FAILED_TO_START_ON_BOOT", + 0x2D8D: "ER_GRP_RPL_FAILED_TO_STOP_ON_PLUGIN_UNINSTALL", + 0x2D8E: "ER_GRP_RPL_FAILED_TO_UNREGISTER_SERVER_STATE_OBSERVER", + 0x2D8F: "ER_GRP_RPL_FAILED_TO_UNREGISTER_TRANS_STATE_OBSERVER", + 0x2D90: "ER_GRP_RPL_FAILED_TO_UNREGISTER_BINLOG_STATE_OBSERVER", + 0x2D91: "ER_GRP_RPL_ALL_OBSERVERS_UNREGISTERED", + 0x2D92: "ER_GRP_RPL_FAILED_TO_PARSE_THE_GRP_NAME", + 0x2D93: "ER_GRP_RPL_FAILED_TO_GENERATE_SIDNO_FOR_GRP", + 0x2D94: "ER_GRP_RPL_APPLIER_NOT_STARTED_DUE_TO_RUNNING_PREV_SHUTDOWN", + 0x2D95: "ER_GRP_RPL_FAILED_TO_INIT_APPLIER_MODULE", + 0x2D96: "ER_GRP_RPL_APPLIER_INITIALIZED", + 0x2D97: "ER_GRP_RPL_COMMUNICATION_SSL_CONF_INFO", + 0x2D98: "ER_GRP_RPL_ABORTS_AS_SSL_NOT_SUPPORTED_BY_MYSQLD", + 0x2D99: "ER_GRP_RPL_SSL_DISABLED", + 0x2D9A: "ER_GRP_RPL_UNABLE_TO_INIT_COMMUNICATION_ENGINE", + 0x2D9B: "ER_GRP_RPL_BINLOG_DISABLED", + 0x2D9C: "ER_GRP_RPL_GTID_MODE_OFF", + 0x2D9D: "ER_GRP_RPL_LOG_SLAVE_UPDATES_NOT_SET", + 0x2D9E: "ER_GRP_RPL_INVALID_TRANS_WRITE_SET_EXTRACTION_VALUE", + 0x2D9F: "ER_GRP_RPL_RELAY_LOG_INFO_REPO_MUST_BE_TABLE", + 0x2DA0: "ER_GRP_RPL_MASTER_INFO_REPO_MUST_BE_TABLE", + 0x2DA1: "ER_GRP_RPL_INCORRECT_TYPE_SET_FOR_PARALLEL_APPLIER", + 0x2DA2: "ER_GRP_RPL_SLAVE_PRESERVE_COMMIT_ORDER_NOT_SET", + 0x2DA3: "ER_GRP_RPL_SINGLE_PRIM_MODE_NOT_ALLOWED_WITH_UPDATE_EVERYWHERE", + 0x2DA4: "ER_GRP_RPL_MODULE_TERMINATE_ERROR", + 0x2DA5: "ER_GRP_RPL_GRP_NAME_OPTION_MANDATORY", + 0x2DA6: "ER_GRP_RPL_GRP_NAME_IS_TOO_LONG", + 0x2DA7: "ER_GRP_RPL_GRP_NAME_IS_NOT_VALID_UUID", + 0x2DA8: "ER_GRP_RPL_FLOW_CTRL_MIN_QUOTA_GREATER_THAN_MAX_QUOTA", + 0x2DA9: "ER_GRP_RPL_FLOW_CTRL_MIN_RECOVERY_QUOTA_GREATER_THAN_MAX_QUOTA", + 0x2DAA: "ER_GRP_RPL_FLOW_CTRL_MAX_QUOTA_SMALLER_THAN_MIN_QUOTAS", + 0x2DAB: "ER_GRP_RPL_INVALID_SSL_RECOVERY_STRING", + 0x2DAC: "ER_GRP_RPL_SUPPORTS_ONLY_ONE_FORCE_MEMBERS_SET", + 0x2DAD: "ER_GRP_RPL_FORCE_MEMBERS_SET_UPDATE_NOT_ALLOWED", + 0x2DAE: "ER_GRP_RPL_GRP_COMMUNICATION_INIT_WITH_CONF", + 0x2DAF: "ER_GRP_RPL_UNKNOWN_GRP_RPL_APPLIER_PIPELINE_REQUESTED", + 0x2DB0: "ER_GRP_RPL_FAILED_TO_BOOTSTRAP_EVENT_HANDLING_INFRASTRUCTURE", + 0x2DB1: "ER_GRP_RPL_APPLIER_HANDLER_NOT_INITIALIZED", + 0x2DB2: "ER_GRP_RPL_APPLIER_HANDLER_IS_IN_USE", + 0x2DB3: "ER_GRP_RPL_APPLIER_HANDLER_ROLE_IS_IN_USE", + 0x2DB4: "ER_GRP_RPL_FAILED_TO_INIT_APPLIER_HANDLER", + 0x2DB5: "ER_GRP_RPL_SQL_SERVICE_FAILED_TO_INIT_SESSION_THREAD", + 0x2DB6: "ER_GRP_RPL_SQL_SERVICE_COMM_SESSION_NOT_INITIALIZED", + 0x2DB7: "ER_GRP_RPL_SQL_SERVICE_SERVER_SESSION_KILLED", + 0x2DB8: "ER_GRP_RPL_SQL_SERVICE_FAILED_TO_RUN_SQL_QUERY", + 0x2DB9: "ER_GRP_RPL_SQL_SERVICE_SERVER_INTERNAL_FAILURE", + 0x2DBA: "ER_GRP_RPL_SQL_SERVICE_RETRIES_EXCEEDED_ON_SESSION_STATE", + 0x2DBB: "ER_GRP_RPL_SQL_SERVICE_FAILED_TO_FETCH_SECURITY_CTX", + 0x2DBC: "ER_GRP_RPL_SQL_SERVICE_SERVER_ACCESS_DENIED_FOR_USER", + 0x2DBD: "ER_GRP_RPL_SQL_SERVICE_MAX_CONN_ERROR_FROM_SERVER", + 0x2DBE: "ER_GRP_RPL_SQL_SERVICE_SERVER_ERROR_ON_CONN", + 0x2DBF: "ER_GRP_RPL_UNREACHABLE_MAJORITY_TIMEOUT_FOR_MEMBER", + 0x2DC0: "ER_GRP_RPL_SERVER_SET_TO_READ_ONLY_DUE_TO_ERRORS", + 0x2DC1: "ER_GRP_RPL_GMS_LISTENER_FAILED_TO_LOG_NOTIFICATION", + 0x2DC2: "ER_GRP_RPL_GRP_COMMUNICATION_ENG_INIT_FAILED", + 0x2DC3: "ER_GRP_RPL_SET_GRP_COMMUNICATION_ENG_LOGGER_FAILED", + 0x2DC4: "ER_GRP_RPL_DEBUG_OPTIONS", + 0x2DC5: "ER_GRP_RPL_INVALID_DEBUG_OPTIONS", + 0x2DC6: "ER_GRP_RPL_EXIT_GRP_GCS_ERROR", + 0x2DC7: "ER_GRP_RPL_GRP_MEMBER_OFFLINE", + 0x2DC8: "ER_GRP_RPL_GCS_INTERFACE_ERROR", + 0x2DC9: "ER_GRP_RPL_FORCE_MEMBER_VALUE_SET_ERROR", + 0x2DCA: "ER_GRP_RPL_FORCE_MEMBER_VALUE_SET", + 0x2DCB: "ER_GRP_RPL_FORCE_MEMBER_VALUE_TIME_OUT", + 0x2DCC: "ER_GRP_RPL_BROADCAST_COMMIT_MSSG_TOO_BIG", + 0x2DCD: "ER_GRP_RPL_SEND_STATS_ERROR", + 0x2DCE: "ER_GRP_RPL_MEMBER_STATS_INFO", + 0x2DCF: "ER_GRP_RPL_FLOW_CONTROL_STATS", + 0x2DD0: "ER_GRP_RPL_UNABLE_TO_CONVERT_PACKET_TO_EVENT", + 0x2DD1: "ER_GRP_RPL_PIPELINE_CREATE_FAILED", + 0x2DD2: "ER_GRP_RPL_PIPELINE_REINIT_FAILED_WRITE", + 0x2DD3: "ER_GRP_RPL_UNABLE_TO_CONVERT_EVENT_TO_PACKET", + 0x2DD4: "ER_GRP_RPL_PIPELINE_FLUSH_FAIL", + 0x2DD5: "ER_GRP_RPL_PIPELINE_REINIT_FAILED_READ", + 0x2DD6: "ER_GRP_RPL_STOP_REP_CHANNEL", + 0x2DD7: "ER_GRP_RPL_GCS_GR_ERROR_MSG", + 0x2DD8: "ER_GRP_RPL_SLAVE_IO_THREAD_UNBLOCKED", + 0x2DD9: "ER_GRP_RPL_SLAVE_IO_THREAD_ERROR_OUT", + 0x2DDA: "ER_GRP_RPL_SLAVE_APPLIER_THREAD_UNBLOCKED", + 0x2DDB: "ER_GRP_RPL_SLAVE_APPLIER_THREAD_ERROR_OUT", + 0x2DDC: "ER_LDAP_AUTH_FAILED_TO_CREATE_OR_GET_CONNECTION", + 0x2DDD: "ER_LDAP_AUTH_DEINIT_FAILED", + 0x2DDE: "ER_LDAP_AUTH_SKIPPING_USER_GROUP_SEARCH", + 0x2DDF: "ER_LDAP_AUTH_POOL_DISABLE_MAX_SIZE_ZERO", + 0x2DE0: "ER_LDAP_AUTH_FAILED_TO_CREATE_LDAP_OBJECT_CREATOR", + 0x2DE1: "ER_LDAP_AUTH_FAILED_TO_CREATE_LDAP_OBJECT", + 0x2DE2: "ER_LDAP_AUTH_TLS_CONF", + 0x2DE3: "ER_LDAP_AUTH_TLS_CONNECTION", + 0x2DE4: "ER_LDAP_AUTH_CONN_POOL_NOT_CREATED", + 0x2DE5: "ER_LDAP_AUTH_CONN_POOL_INITIALIZING", + 0x2DE6: "ER_LDAP_AUTH_CONN_POOL_DEINITIALIZING", + 0x2DE7: "ER_LDAP_AUTH_ZERO_MAX_POOL_SIZE_UNCHANGED", + 0x2DE8: "ER_LDAP_AUTH_POOL_REINITIALIZING", + 0x2DE9: "ER_LDAP_AUTH_FAILED_TO_WRITE_PACKET", + 0x2DEA: "ER_LDAP_AUTH_SETTING_USERNAME", + 0x2DEB: "ER_LDAP_AUTH_USER_AUTH_DATA", + 0x2DEC: "ER_LDAP_AUTH_INFO_FOR_USER", + 0x2DED: "ER_LDAP_AUTH_USER_GROUP_SEARCH_INFO", + 0x2DEE: "ER_LDAP_AUTH_GRP_SEARCH_SPECIAL_HDL", + 0x2DEF: "ER_LDAP_AUTH_GRP_IS_FULL_DN", + 0x2DF0: "ER_LDAP_AUTH_USER_NOT_FOUND_IN_ANY_GRP", + 0x2DF1: "ER_LDAP_AUTH_USER_FOUND_IN_MANY_GRPS", + 0x2DF2: "ER_LDAP_AUTH_USER_HAS_MULTIPLE_GRP_NAMES", + 0x2DF3: "ER_LDAP_AUTH_SEARCHED_USER_GRP_NAME", + 0x2DF4: "ER_LDAP_AUTH_OBJECT_CREATE_TIMESTAMP", + 0x2DF5: "ER_LDAP_AUTH_CERTIFICATE_NAME", + 0x2DF6: "ER_LDAP_AUTH_FAILED_TO_POOL_DEINIT", + 0x2DF7: "ER_LDAP_AUTH_FAILED_TO_INITIALIZE_POOL_IN_RECONSTRUCTING", + 0x2DF8: "ER_LDAP_AUTH_FAILED_TO_INITIALIZE_POOL_IN_INIT_STATE", + 0x2DF9: "ER_LDAP_AUTH_FAILED_TO_INITIALIZE_POOL_IN_DEINIT_STATE", + 0x2DFA: "ER_LDAP_AUTH_FAILED_TO_DEINITIALIZE_POOL_IN_RECONSTRUCT_STATE", + 0x2DFB: "ER_LDAP_AUTH_FAILED_TO_DEINITIALIZE_NOT_READY_POOL", + 0x2DFC: "ER_LDAP_AUTH_FAILED_TO_GET_CONNECTION_AS_PLUGIN_NOT_READY", + 0x2DFD: "ER_LDAP_AUTH_CONNECTION_POOL_INIT_FAILED", + 0x2DFE: "ER_LDAP_AUTH_MAX_ALLOWED_CONNECTION_LIMIT_HIT", + 0x2DFF: "ER_LDAP_AUTH_MAX_POOL_SIZE_SET_FAILED", + 0x2E00: "ER_LDAP_AUTH_PLUGIN_FAILED_TO_READ_PACKET", + 0x2E01: "ER_LDAP_AUTH_CREATING_LDAP_CONNECTION", + 0x2E02: "ER_LDAP_AUTH_GETTING_CONNECTION_FROM_POOL", + 0x2E03: "ER_LDAP_AUTH_RETURNING_CONNECTION_TO_POOL", + 0x2E04: "ER_LDAP_AUTH_SEARCH_USER_GROUP_ATTR_NOT_FOUND", + 0x2E05: "ER_LDAP_AUTH_LDAP_INFO_NULL", + 0x2E06: "ER_LDAP_AUTH_FREEING_CONNECTION", + 0x2E07: "ER_LDAP_AUTH_CONNECTION_PUSHED_TO_POOL", + 0x2E08: "ER_LDAP_AUTH_CONNECTION_CREATOR_ENTER", + 0x2E09: "ER_LDAP_AUTH_STARTING_TLS", + 0x2E0A: "ER_LDAP_AUTH_CONNECTION_GET_LDAP_INFO_NULL", + 0x2E0B: "ER_LDAP_AUTH_DELETING_CONNECTION_KEY", + 0x2E0C: "ER_LDAP_AUTH_POOLED_CONNECTION_KEY", + 0x2E0D: "ER_LDAP_AUTH_CREATE_CONNECTION_KEY", + 0x2E0E: "ER_LDAP_AUTH_COMMUNICATION_HOST_INFO", + 0x2E0F: "ER_LDAP_AUTH_METHOD_TO_CLIENT", + 0x2E10: "ER_LDAP_AUTH_SASL_REQUEST_FROM_CLIENT", + 0x2E11: "ER_LDAP_AUTH_SASL_PROCESS_SASL", + 0x2E12: "ER_LDAP_AUTH_SASL_BIND_SUCCESS_INFO", + 0x2E13: "ER_LDAP_AUTH_STARTED_FOR_USER", + 0x2E14: "ER_LDAP_AUTH_DISTINGUISHED_NAME", + 0x2E15: "ER_LDAP_AUTH_INIT_FAILED", + 0x2E16: "ER_LDAP_AUTH_OR_GROUP_RETRIEVAL_FAILED", + 0x2E17: "ER_LDAP_AUTH_USER_GROUP_SEARCH_FAILED", + 0x2E18: "ER_LDAP_AUTH_USER_BIND_FAILED", + 0x2E19: "ER_LDAP_AUTH_POOL_GET_FAILED_TO_CREATE_CONNECTION", + 0x2E1A: "ER_LDAP_AUTH_FAILED_TO_CREATE_LDAP_CONNECTION", + 0x2E1B: "ER_LDAP_AUTH_FAILED_TO_ESTABLISH_TLS_CONNECTION", + 0x2E1C: "ER_LDAP_AUTH_FAILED_TO_SEARCH_DN", + 0x2E1D: "ER_LDAP_AUTH_CONNECTION_POOL_REINIT_ENTER", + 0x2E1E: "ER_SYSTEMD_NOTIFY_PATH_TOO_LONG", + 0x2E1F: "ER_SYSTEMD_NOTIFY_CONNECT_FAILED", + 0x2E20: "ER_SYSTEMD_NOTIFY_WRITE_FAILED", + 0x2E21: "ER_FOUND_MISSING_GTIDS", + 0x2E22: "ER_PID_FILE_PRIV_DIRECTORY_INSECURE", + 0x2E23: "ER_CANT_CHECK_PID_PATH", + 0x2E24: "ER_VALIDATE_PWD_STATUS_VAR_REGISTRATION_FAILED", + 0x2E25: "ER_VALIDATE_PWD_STATUS_VAR_UNREGISTRATION_FAILED", + 0x2E26: "ER_VALIDATE_PWD_DICT_FILE_OPEN_FAILED", + 0x2E27: "ER_VALIDATE_PWD_COULD_BE_NULL", + 0x2E28: "ER_VALIDATE_PWD_STRING_CONV_TO_LOWERCASE_FAILED", + 0x2E29: "ER_VALIDATE_PWD_STRING_CONV_TO_BUFFER_FAILED", + 0x2E2A: "ER_VALIDATE_PWD_STRING_HANDLER_MEM_ALLOCATION_FAILED", + 0x2E2B: "ER_VALIDATE_PWD_STRONG_POLICY_DICT_FILE_UNSPECIFIED", + 0x2E2C: "ER_VALIDATE_PWD_CONVERT_TO_BUFFER_FAILED", + 0x2E2D: "ER_VALIDATE_PWD_VARIABLE_REGISTRATION_FAILED", + 0x2E2E: "ER_VALIDATE_PWD_VARIABLE_UNREGISTRATION_FAILED", + 0x2E2F: "ER_KEYRING_MIGRATION_EXTRA_OPTIONS", + 0x2E31: "ER_IB_MSG_0", + 0x2E32: "ER_IB_MSG_1", + 0x2E33: "ER_IB_MSG_2", + 0x2E34: "ER_IB_MSG_3", + 0x2E35: "ER_IB_MSG_4", + 0x2E36: "ER_IB_MSG_5", + 0x2E37: "ER_IB_MSG_6", + 0x2E38: "ER_IB_MSG_7", + 0x2E39: "ER_IB_MSG_8", + 0x2E3A: "ER_IB_MSG_9", + 0x2E3B: "ER_IB_MSG_10", + 0x2E3C: "ER_IB_MSG_11", + 0x2E3D: "ER_IB_MSG_12", + 0x2E3E: "ER_IB_MSG_13", + 0x2E3F: "ER_IB_MSG_14", + 0x2E40: "ER_IB_MSG_15", + 0x2E41: "ER_IB_MSG_16", + 0x2E42: "ER_IB_MSG_17", + 0x2E43: "ER_IB_MSG_18", + 0x2E44: "ER_IB_MSG_19", + 0x2E45: "ER_IB_MSG_20", + 0x2E46: "ER_IB_MSG_21", + 0x2E47: "ER_IB_MSG_22", + 0x2E48: "ER_IB_MSG_23", + 0x2E49: "ER_IB_MSG_24", + 0x2E4A: "ER_IB_MSG_25", + 0x2E4B: "ER_IB_MSG_26", + 0x2E4C: "ER_IB_MSG_27", + 0x2E4D: "ER_IB_MSG_28", + 0x2E4E: "ER_IB_MSG_29", + 0x2E4F: "ER_IB_MSG_30", + 0x2E50: "ER_IB_MSG_31", + 0x2E51: "ER_IB_MSG_32", + 0x2E52: "ER_IB_MSG_33", + 0x2E53: "ER_IB_MSG_34", + 0x2E54: "ER_IB_MSG_35", + 0x2E55: "ER_IB_MSG_36", + 0x2E56: "ER_IB_MSG_37", + 0x2E57: "ER_IB_MSG_38", + 0x2E58: "ER_IB_MSG_39", + 0x2E59: "ER_IB_MSG_40", + 0x2E5A: "ER_IB_MSG_41", + 0x2E5B: "ER_IB_MSG_42", + 0x2E5C: "ER_IB_MSG_43", + 0x2E5D: "ER_IB_MSG_44", + 0x2E5E: "ER_IB_MSG_45", + 0x2E5F: "ER_IB_MSG_46", + 0x2E60: "ER_IB_MSG_47", + 0x2E61: "ER_IB_MSG_48", + 0x2E62: "ER_IB_MSG_49", + 0x2E63: "ER_IB_MSG_50", + 0x2E64: "ER_IB_MSG_51", + 0x2E65: "ER_IB_MSG_52", + 0x2E66: "ER_IB_MSG_53", + 0x2E67: "ER_IB_MSG_54", + 0x2E68: "ER_IB_MSG_55", + 0x2E69: "ER_IB_MSG_56", + 0x2E6A: "ER_IB_MSG_57", + 0x2E6B: "ER_IB_MSG_58", + 0x2E6C: "ER_IB_MSG_59", + 0x2E6D: "ER_IB_MSG_60", + 0x2E6E: "ER_IB_MSG_61", + 0x2E6F: "ER_IB_MSG_62", + 0x2E70: "ER_IB_MSG_63", + 0x2E71: "ER_IB_MSG_64", + 0x2E72: "ER_IB_MSG_65", + 0x2E73: "ER_IB_MSG_66", + 0x2E74: "ER_IB_MSG_67", + 0x2E75: "ER_IB_MSG_68", + 0x2E76: "ER_IB_MSG_69", + 0x2E77: "ER_IB_MSG_70", + 0x2E78: "ER_IB_MSG_71", + 0x2E79: "ER_IB_MSG_72", + 0x2E7A: "ER_IB_MSG_73", + 0x2E7B: "ER_IB_MSG_74", + 0x2E7C: "ER_IB_MSG_75", + 0x2E7D: "ER_IB_MSG_76", + 0x2E7E: "ER_IB_MSG_77", + 0x2E7F: "ER_IB_MSG_78", + 0x2E80: "ER_IB_MSG_79", + 0x2E81: "ER_IB_MSG_80", + 0x2E82: "ER_IB_MSG_81", + 0x2E83: "ER_IB_MSG_82", + 0x2E84: "ER_IB_MSG_83", + 0x2E85: "ER_IB_MSG_84", + 0x2E86: "ER_IB_MSG_85", + 0x2E87: "ER_IB_MSG_86", + 0x2E88: "ER_IB_MSG_87", + 0x2E89: "ER_IB_MSG_88", + 0x2E8A: "ER_IB_MSG_89", + 0x2E8B: "ER_IB_MSG_90", + 0x2E8C: "ER_IB_MSG_91", + 0x2E8D: "ER_IB_MSG_92", + 0x2E8E: "ER_IB_MSG_93", + 0x2E8F: "ER_IB_MSG_94", + 0x2E90: "ER_IB_MSG_95", + 0x2E91: "ER_IB_MSG_96", + 0x2E92: "ER_IB_MSG_97", + 0x2E93: "ER_IB_MSG_98", + 0x2E94: "ER_IB_MSG_99", + 0x2E95: "ER_IB_MSG_100", + 0x2E96: "ER_IB_MSG_101", + 0x2E97: "ER_IB_MSG_102", + 0x2E98: "ER_IB_MSG_103", + 0x2E99: "ER_IB_MSG_104", + 0x2E9A: "ER_IB_MSG_105", + 0x2E9B: "ER_IB_MSG_106", + 0x2E9C: "ER_IB_MSG_107", + 0x2E9D: "ER_IB_MSG_108", + 0x2E9E: "ER_IB_MSG_109", + 0x2E9F: "ER_IB_MSG_110", + 0x2EA0: "ER_IB_MSG_111", + 0x2EA1: "ER_IB_MSG_112", + 0x2EA2: "ER_IB_MSG_113", + 0x2EA3: "ER_IB_MSG_114", + 0x2EA4: "ER_IB_MSG_115", + 0x2EA5: "ER_IB_MSG_116", + 0x2EA6: "ER_IB_MSG_117", + 0x2EA7: "ER_IB_MSG_118", + 0x2EA8: "ER_IB_MSG_119", + 0x2EA9: "ER_IB_MSG_120", + 0x2EAA: "ER_IB_MSG_121", + 0x2EAB: "ER_IB_MSG_122", + 0x2EAC: "ER_IB_MSG_123", + 0x2EAD: "ER_IB_MSG_124", + 0x2EAE: "ER_IB_MSG_125", + 0x2EAF: "ER_IB_MSG_126", + 0x2EB0: "ER_IB_MSG_127", + 0x2EB1: "ER_IB_MSG_128", + 0x2EB2: "ER_IB_MSG_129", + 0x2EB3: "ER_IB_MSG_130", + 0x2EB4: "ER_IB_MSG_131", + 0x2EB5: "ER_IB_MSG_132", + 0x2EB6: "ER_IB_MSG_133", + 0x2EB7: "ER_IB_MSG_134", + 0x2EB8: "ER_IB_MSG_135", + 0x2EB9: "ER_IB_MSG_136", + 0x2EBA: "ER_IB_MSG_137", + 0x2EBB: "ER_IB_MSG_138", + 0x2EBC: "ER_IB_MSG_139", + 0x2EBD: "ER_IB_MSG_140", + 0x2EBE: "ER_IB_MSG_141", + 0x2EBF: "ER_IB_MSG_142", + 0x2EC0: "ER_IB_MSG_143", + 0x2EC1: "ER_IB_MSG_144", + 0x2EC2: "ER_IB_MSG_145", + 0x2EC3: "ER_IB_MSG_146", + 0x2EC4: "ER_IB_MSG_147", + 0x2EC5: "ER_IB_MSG_148", + 0x2EC6: "ER_IB_MSG_149", + 0x2EC7: "ER_IB_MSG_150", + 0x2EC8: "ER_IB_MSG_151", + 0x2EC9: "ER_IB_MSG_152", + 0x2ECA: "ER_IB_MSG_153", + 0x2ECB: "ER_IB_MSG_154", + 0x2ECC: "ER_IB_MSG_155", + 0x2ECD: "ER_IB_MSG_156", + 0x2ECE: "ER_IB_MSG_157", + 0x2ECF: "ER_IB_MSG_158", + 0x2ED0: "ER_IB_MSG_159", + 0x2ED1: "ER_IB_MSG_160", + 0x2ED2: "ER_IB_MSG_161", + 0x2ED3: "ER_IB_MSG_162", + 0x2ED4: "ER_IB_MSG_163", + 0x2ED5: "ER_IB_MSG_164", + 0x2ED6: "ER_IB_MSG_165", + 0x2ED7: "ER_IB_MSG_166", + 0x2ED8: "ER_IB_MSG_167", + 0x2ED9: "ER_IB_MSG_168", + 0x2EDA: "ER_IB_MSG_169", + 0x2EDB: "ER_IB_MSG_170", + 0x2EDC: "ER_IB_MSG_171", + 0x2EDD: "ER_IB_MSG_172", + 0x2EDE: "ER_IB_MSG_173", + 0x2EDF: "ER_IB_MSG_174", + 0x2EE0: "ER_IB_MSG_175", + 0x2EE1: "ER_IB_MSG_176", + 0x2EE2: "ER_IB_MSG_177", + 0x2EE3: "ER_IB_MSG_178", + 0x2EE4: "ER_IB_MSG_179", + 0x2EE5: "ER_IB_MSG_180", + 0x2EE6: "ER_IB_MSG_181", + 0x2EE7: "ER_IB_MSG_182", + 0x2EE8: "ER_IB_MSG_183", + 0x2EE9: "ER_IB_MSG_184", + 0x2EEA: "ER_IB_MSG_185", + 0x2EEB: "ER_IB_MSG_186", + 0x2EEC: "ER_IB_MSG_187", + 0x2EED: "ER_IB_MSG_188", + 0x2EEE: "ER_IB_MSG_189", + 0x2EEF: "ER_IB_MSG_190", + 0x2EF0: "ER_IB_MSG_191", + 0x2EF1: "ER_IB_MSG_192", + 0x2EF2: "ER_IB_MSG_193", + 0x2EF3: "ER_IB_MSG_194", + 0x2EF4: "ER_IB_MSG_195", + 0x2EF5: "ER_IB_MSG_196", + 0x2EF6: "ER_IB_MSG_197", + 0x2EF7: "ER_IB_MSG_198", + 0x2EF8: "ER_IB_MSG_199", + 0x2EF9: "ER_IB_MSG_200", + 0x2EFA: "ER_IB_MSG_201", + 0x2EFB: "ER_IB_MSG_202", + 0x2EFC: "ER_IB_MSG_203", + 0x2EFD: "ER_IB_MSG_204", + 0x2EFE: "ER_IB_MSG_205", + 0x2EFF: "ER_IB_MSG_206", + 0x2F00: "ER_IB_MSG_207", + 0x2F01: "ER_IB_MSG_208", + 0x2F02: "ER_IB_MSG_209", + 0x2F03: "ER_IB_MSG_210", + 0x2F04: "ER_IB_MSG_211", + 0x2F05: "ER_IB_MSG_212", + 0x2F06: "ER_IB_MSG_213", + 0x2F07: "ER_IB_MSG_214", + 0x2F08: "ER_IB_MSG_215", + 0x2F09: "ER_IB_MSG_216", + 0x2F0A: "ER_IB_MSG_217", + 0x2F0B: "ER_IB_MSG_218", + 0x2F0C: "ER_IB_MSG_219", + 0x2F0D: "ER_IB_MSG_220", + 0x2F0E: "ER_IB_MSG_221", + 0x2F0F: "ER_IB_MSG_222", + 0x2F10: "ER_IB_MSG_223", + 0x2F11: "ER_IB_MSG_224", + 0x2F12: "ER_IB_MSG_225", + 0x2F13: "ER_IB_MSG_226", + 0x2F14: "ER_IB_MSG_227", + 0x2F15: "ER_IB_MSG_228", + 0x2F16: "ER_IB_MSG_229", + 0x2F17: "ER_IB_MSG_230", + 0x2F18: "ER_IB_MSG_231", + 0x2F19: "ER_IB_MSG_232", + 0x2F1A: "ER_IB_MSG_233", + 0x2F1B: "ER_IB_MSG_234", + 0x2F1C: "ER_IB_MSG_235", + 0x2F1D: "ER_IB_MSG_236", + 0x2F1E: "ER_IB_MSG_237", + 0x2F1F: "ER_IB_MSG_238", + 0x2F20: "ER_IB_MSG_239", + 0x2F21: "ER_IB_MSG_240", + 0x2F22: "ER_IB_MSG_241", + 0x2F23: "ER_IB_MSG_242", + 0x2F24: "ER_IB_MSG_243", + 0x2F25: "ER_IB_MSG_244", + 0x2F26: "ER_IB_MSG_245", + 0x2F27: "ER_IB_MSG_246", + 0x2F28: "ER_IB_MSG_247", + 0x2F29: "ER_IB_MSG_248", + 0x2F2A: "ER_IB_MSG_249", + 0x2F2B: "ER_IB_MSG_250", + 0x2F2C: "ER_IB_MSG_251", + 0x2F2D: "ER_IB_MSG_252", + 0x2F2E: "ER_IB_MSG_253", + 0x2F2F: "ER_IB_MSG_254", + 0x2F30: "ER_IB_MSG_255", + 0x2F31: "ER_IB_MSG_256", + 0x2F32: "ER_IB_MSG_257", + 0x2F33: "ER_IB_MSG_258", + 0x2F34: "ER_IB_MSG_259", + 0x2F35: "ER_IB_MSG_260", + 0x2F36: "ER_IB_MSG_261", + 0x2F37: "ER_IB_MSG_262", + 0x2F38: "ER_IB_MSG_263", + 0x2F39: "ER_IB_MSG_264", + 0x2F3A: "ER_IB_MSG_265", + 0x2F3B: "ER_IB_MSG_266", + 0x2F3C: "ER_IB_MSG_267", + 0x2F3D: "ER_IB_MSG_268", + 0x2F3E: "ER_IB_MSG_269", + 0x2F3F: "ER_IB_MSG_270", + 0x2F40: "ER_IB_MSG_271", + 0x2F41: "ER_IB_MSG_272", + 0x2F42: "ER_IB_MSG_273", + 0x2F43: "ER_IB_MSG_274", + 0x2F44: "ER_IB_MSG_275", + 0x2F45: "ER_IB_MSG_276", + 0x2F46: "ER_IB_MSG_277", + 0x2F47: "ER_IB_MSG_278", + 0x2F48: "ER_IB_MSG_279", + 0x2F49: "ER_IB_MSG_280", + 0x2F4A: "ER_IB_MSG_281", + 0x2F4B: "ER_IB_MSG_282", + 0x2F4C: "ER_IB_MSG_283", + 0x2F4D: "ER_IB_MSG_284", + 0x2F4E: "ER_IB_MSG_285", + 0x2F4F: "ER_IB_MSG_286", + 0x2F50: "ER_IB_MSG_287", + 0x2F51: "ER_IB_MSG_288", + 0x2F52: "ER_IB_MSG_289", + 0x2F53: "ER_IB_MSG_290", + 0x2F54: "ER_IB_MSG_291", + 0x2F55: "ER_IB_MSG_292", + 0x2F56: "ER_IB_MSG_293", + 0x2F57: "ER_IB_MSG_294", + 0x2F58: "ER_IB_MSG_295", + 0x2F59: "ER_IB_MSG_296", + 0x2F5A: "ER_IB_MSG_297", + 0x2F5B: "ER_IB_MSG_298", + 0x2F5C: "ER_IB_MSG_299", + 0x2F5D: "ER_IB_MSG_300", + 0x2F5E: "ER_IB_MSG_301", + 0x2F5F: "ER_IB_MSG_302", + 0x2F60: "ER_IB_MSG_303", + 0x2F61: "ER_IB_MSG_304", + 0x2F62: "ER_IB_MSG_305", + 0x2F63: "ER_IB_MSG_306", + 0x2F64: "ER_IB_MSG_307", + 0x2F65: "ER_IB_MSG_308", + 0x2F66: "ER_IB_MSG_309", + 0x2F67: "ER_IB_MSG_310", + 0x2F68: "ER_IB_MSG_311", + 0x2F69: "ER_IB_MSG_312", + 0x2F6A: "ER_IB_MSG_313", + 0x2F6B: "ER_IB_MSG_314", + 0x2F6C: "ER_IB_MSG_315", + 0x2F6D: "ER_IB_MSG_316", + 0x2F6E: "ER_IB_MSG_317", + 0x2F6F: "ER_IB_MSG_318", + 0x2F70: "ER_IB_MSG_319", + 0x2F71: "ER_IB_MSG_320", + 0x2F72: "ER_IB_MSG_321", + 0x2F73: "ER_IB_MSG_322", + 0x2F74: "ER_IB_MSG_323", + 0x2F75: "ER_IB_MSG_324", + 0x2F76: "ER_IB_MSG_325", + 0x2F77: "ER_IB_MSG_326", + 0x2F78: "ER_IB_MSG_327", + 0x2F79: "ER_IB_MSG_328", + 0x2F7A: "ER_IB_MSG_329", + 0x2F7B: "ER_IB_MSG_330", + 0x2F7C: "ER_IB_MSG_331", + 0x2F7D: "ER_IB_MSG_332", + 0x2F7E: "ER_IB_MSG_333", + 0x2F7F: "ER_IB_MSG_334", + 0x2F80: "ER_IB_MSG_335", + 0x2F81: "ER_IB_MSG_336", + 0x2F82: "ER_IB_MSG_337", + 0x2F83: "ER_IB_MSG_338", + 0x2F84: "ER_IB_MSG_339", + 0x2F85: "ER_IB_MSG_340", + 0x2F86: "ER_IB_MSG_341", + 0x2F87: "ER_IB_MSG_342", + 0x2F88: "ER_IB_MSG_343", + 0x2F89: "ER_IB_MSG_344", + 0x2F8A: "ER_IB_MSG_345", + 0x2F8B: "ER_IB_MSG_346", + 0x2F8C: "ER_IB_MSG_347", + 0x2F8D: "ER_IB_MSG_348", + 0x2F8E: "ER_IB_MSG_349", + 0x2F8F: "ER_IB_MSG_350", + 0x2F90: "ER_IB_MSG_351", + 0x2F91: "ER_IB_MSG_352", + 0x2F92: "ER_IB_MSG_353", + 0x2F93: "ER_IB_MSG_354", + 0x2F94: "ER_IB_MSG_355", + 0x2F95: "ER_IB_MSG_356", + 0x2F96: "ER_IB_MSG_357", + 0x2F97: "ER_IB_MSG_358", + 0x2F98: "ER_IB_MSG_359", + 0x2F99: "ER_IB_MSG_360", + 0x2F9A: "ER_IB_MSG_361", + 0x2F9B: "ER_IB_MSG_362", + 0x2F9C: "ER_IB_MSG_363", + 0x2F9D: "ER_IB_MSG_364", + 0x2F9E: "ER_IB_MSG_365", + 0x2F9F: "ER_IB_MSG_366", + 0x2FA0: "ER_IB_MSG_367", + 0x2FA1: "ER_IB_MSG_368", + 0x2FA2: "ER_IB_MSG_369", + 0x2FA3: "ER_IB_MSG_370", + 0x2FA4: "ER_IB_MSG_371", + 0x2FA5: "ER_IB_MSG_372", + 0x2FA6: "ER_IB_MSG_373", + 0x2FA7: "ER_IB_MSG_374", + 0x2FA8: "ER_IB_MSG_375", + 0x2FA9: "ER_IB_MSG_376", + 0x2FAA: "ER_IB_MSG_377", + 0x2FAB: "ER_IB_MSG_378", + 0x2FAC: "ER_IB_MSG_379", + 0x2FAD: "ER_IB_MSG_380", + 0x2FAE: "ER_IB_MSG_381", + 0x2FAF: "ER_IB_MSG_382", + 0x2FB0: "ER_IB_MSG_383", + 0x2FB1: "ER_IB_MSG_384", + 0x2FB2: "ER_IB_MSG_385", + 0x2FB3: "ER_IB_MSG_386", + 0x2FB4: "ER_IB_MSG_387", + 0x2FB5: "ER_IB_MSG_388", + 0x2FB6: "ER_IB_MSG_389", + 0x2FB7: "ER_IB_MSG_390", + 0x2FB8: "ER_IB_MSG_391", + 0x2FB9: "ER_IB_MSG_392", + 0x2FBA: "ER_IB_MSG_393", + 0x2FBB: "ER_IB_MSG_394", + 0x2FBC: "ER_IB_MSG_395", + 0x2FBD: "ER_IB_MSG_396", + 0x2FBE: "ER_IB_MSG_397", + 0x2FBF: "ER_IB_MSG_398", + 0x2FC0: "ER_IB_MSG_399", + 0x2FC1: "ER_IB_MSG_400", + 0x2FC2: "ER_IB_MSG_401", + 0x2FC3: "ER_IB_MSG_402", + 0x2FC4: "ER_IB_MSG_403", + 0x2FC5: "ER_IB_MSG_404", + 0x2FC6: "ER_IB_MSG_405", + 0x2FC7: "ER_IB_MSG_406", + 0x2FC8: "ER_IB_MSG_407", + 0x2FC9: "ER_IB_MSG_408", + 0x2FCA: "ER_IB_MSG_409", + 0x2FCB: "ER_IB_MSG_410", + 0x2FCC: "ER_IB_MSG_411", + 0x2FCD: "ER_IB_MSG_412", + 0x2FCE: "ER_IB_MSG_413", + 0x2FCF: "ER_IB_MSG_414", + 0x2FD0: "ER_IB_MSG_415", + 0x2FD1: "ER_IB_MSG_416", + 0x2FD2: "ER_IB_MSG_417", + 0x2FD3: "ER_IB_MSG_418", + 0x2FD4: "ER_IB_MSG_419", + 0x2FD5: "ER_IB_MSG_420", + 0x2FD6: "ER_IB_MSG_421", + 0x2FD7: "ER_IB_MSG_422", + 0x2FD8: "ER_IB_MSG_423", + 0x2FD9: "ER_IB_MSG_424", + 0x2FDA: "ER_IB_MSG_425", + 0x2FDB: "ER_IB_MSG_426", + 0x2FDC: "ER_IB_MSG_427", + 0x2FDD: "ER_IB_MSG_428", + 0x2FDE: "ER_IB_MSG_429", + 0x2FDF: "ER_IB_MSG_430", + 0x2FE0: "ER_IB_MSG_431", + 0x2FE1: "ER_IB_MSG_432", + 0x2FE2: "ER_IB_MSG_433", + 0x2FE3: "ER_IB_MSG_434", + 0x2FE4: "ER_IB_MSG_435", + 0x2FE5: "ER_IB_MSG_436", + 0x2FE6: "ER_IB_MSG_437", + 0x2FE7: "ER_IB_MSG_438", + 0x2FE8: "ER_IB_MSG_439", + 0x2FE9: "ER_IB_MSG_440", + 0x2FEA: "ER_IB_MSG_441", + 0x2FEB: "ER_IB_MSG_442", + 0x2FEC: "ER_IB_MSG_443", + 0x2FED: "ER_IB_MSG_444", + 0x2FEE: "ER_IB_MSG_445", + 0x2FEF: "ER_IB_MSG_446", + 0x2FF0: "ER_IB_MSG_447", + 0x2FF1: "ER_IB_MSG_448", + 0x2FF2: "ER_IB_MSG_449", + 0x2FF3: "ER_IB_MSG_450", + 0x2FF4: "ER_IB_MSG_451", + 0x2FF5: "ER_IB_MSG_452", + 0x2FF6: "ER_IB_MSG_453", + 0x2FF7: "ER_IB_MSG_454", + 0x2FF8: "ER_IB_MSG_455", + 0x2FF9: "ER_IB_MSG_456", + 0x2FFA: "ER_IB_MSG_457", + 0x2FFB: "ER_IB_MSG_458", + 0x2FFC: "ER_IB_MSG_459", + 0x2FFD: "ER_IB_MSG_460", + 0x2FFE: "ER_IB_MSG_461", + 0x2FFF: "ER_IB_MSG_462", 0x3000: "ER_IB_MSG_463", 0x3001: "ER_IB_MSG_464", 0x3002: "ER_IB_MSG_465", @@ -3646,12 +3646,12 @@ 0x3007: "ER_IB_MSG_470", 0x3008: "ER_IB_MSG_471", 0x3009: "ER_IB_MSG_472", - 0x300a: "ER_IB_MSG_473", - 0x300b: "ER_IB_MSG_474", - 0x300c: "ER_IB_MSG_475", - 0x300d: "ER_IB_MSG_476", - 0x300e: "ER_IB_MSG_477", - 0x300f: "ER_IB_MSG_478", + 0x300A: "ER_IB_MSG_473", + 0x300B: "ER_IB_MSG_474", + 0x300C: "ER_IB_MSG_475", + 0x300D: "ER_IB_MSG_476", + 0x300E: "ER_IB_MSG_477", + 0x300F: "ER_IB_MSG_478", 0x3010: "ER_IB_MSG_479", 0x3011: "ER_IB_MSG_480", 0x3012: "ER_IB_MSG_481", @@ -3662,12 +3662,12 @@ 0x3017: "ER_IB_MSG_486", 0x3018: "ER_IB_MSG_487", 0x3019: "ER_IB_MSG_488", - 0x301a: "ER_IB_MSG_489", - 0x301b: "ER_IB_MSG_490", - 0x301c: "ER_IB_MSG_491", - 0x301d: "ER_IB_MSG_492", - 0x301e: "ER_IB_MSG_493", - 0x301f: "ER_IB_MSG_494", + 0x301A: "ER_IB_MSG_489", + 0x301B: "ER_IB_MSG_490", + 0x301C: "ER_IB_MSG_491", + 0x301D: "ER_IB_MSG_492", + 0x301E: "ER_IB_MSG_493", + 0x301F: "ER_IB_MSG_494", 0x3020: "ER_IB_MSG_495", 0x3021: "ER_IB_MSG_496", 0x3022: "ER_IB_MSG_497", @@ -3678,12 +3678,12 @@ 0x3027: "ER_IB_MSG_502", 0x3028: "ER_IB_MSG_503", 0x3029: "ER_IB_MSG_504", - 0x302a: "ER_IB_MSG_505", - 0x302b: "ER_IB_MSG_506", - 0x302c: "ER_IB_MSG_507", - 0x302d: "ER_IB_MSG_508", - 0x302e: "ER_IB_MSG_509", - 0x302f: "ER_IB_MSG_510", + 0x302A: "ER_IB_MSG_505", + 0x302B: "ER_IB_MSG_506", + 0x302C: "ER_IB_MSG_507", + 0x302D: "ER_IB_MSG_508", + 0x302E: "ER_IB_MSG_509", + 0x302F: "ER_IB_MSG_510", 0x3030: "ER_IB_MSG_511", 0x3031: "ER_IB_MSG_512", 0x3032: "ER_IB_MSG_513", @@ -3694,12 +3694,12 @@ 0x3037: "ER_IB_MSG_518", 0x3038: "ER_IB_MSG_519", 0x3039: "ER_IB_MSG_520", - 0x303a: "ER_IB_MSG_521", - 0x303b: "ER_IB_MSG_522", - 0x303c: "ER_IB_MSG_523", - 0x303d: "ER_IB_MSG_524", - 0x303e: "ER_IB_MSG_525", - 0x303f: "ER_IB_MSG_526", + 0x303A: "ER_IB_MSG_521", + 0x303B: "ER_IB_MSG_522", + 0x303C: "ER_IB_MSG_523", + 0x303D: "ER_IB_MSG_524", + 0x303E: "ER_IB_MSG_525", + 0x303F: "ER_IB_MSG_526", 0x3040: "ER_IB_MSG_527", 0x3041: "ER_IB_MSG_528", 0x3042: "ER_IB_MSG_529", @@ -3710,12 +3710,12 @@ 0x3047: "ER_IB_MSG_534", 0x3048: "ER_IB_MSG_535", 0x3049: "ER_IB_MSG_536", - 0x304a: "ER_IB_MSG_537", - 0x304b: "ER_IB_MSG_538", - 0x304c: "ER_IB_MSG_539", - 0x304d: "ER_IB_MSG_540", - 0x304e: "ER_IB_MSG_541", - 0x304f: "ER_IB_MSG_542", + 0x304A: "ER_IB_MSG_537", + 0x304B: "ER_IB_MSG_538", + 0x304C: "ER_IB_MSG_539", + 0x304D: "ER_IB_MSG_540", + 0x304E: "ER_IB_MSG_541", + 0x304F: "ER_IB_MSG_542", 0x3050: "ER_IB_MSG_543", 0x3051: "ER_IB_MSG_544", 0x3052: "ER_IB_MSG_545", @@ -3726,12 +3726,12 @@ 0x3057: "ER_IB_MSG_550", 0x3058: "ER_IB_MSG_551", 0x3059: "ER_IB_MSG_552", - 0x305a: "ER_IB_MSG_553", - 0x305b: "ER_IB_MSG_554", - 0x305c: "ER_IB_MSG_555", - 0x305d: "ER_IB_MSG_556", - 0x305e: "ER_IB_MSG_557", - 0x305f: "ER_IB_MSG_558", + 0x305A: "ER_IB_MSG_553", + 0x305B: "ER_IB_MSG_554", + 0x305C: "ER_IB_MSG_555", + 0x305D: "ER_IB_MSG_556", + 0x305E: "ER_IB_MSG_557", + 0x305F: "ER_IB_MSG_558", 0x3060: "ER_IB_MSG_559", 0x3061: "ER_IB_MSG_560", 0x3062: "ER_IB_MSG_561", @@ -3742,12 +3742,12 @@ 0x3067: "ER_IB_MSG_566", 0x3068: "ER_IB_MSG_567", 0x3069: "ER_IB_MSG_568", - 0x306a: "ER_IB_MSG_569", - 0x306b: "ER_IB_MSG_570", - 0x306c: "ER_IB_MSG_571", - 0x306d: "ER_IB_MSG_572", - 0x306e: "ER_IB_MSG_573", - 0x306f: "ER_IB_MSG_574", + 0x306A: "ER_IB_MSG_569", + 0x306B: "ER_IB_MSG_570", + 0x306C: "ER_IB_MSG_571", + 0x306D: "ER_IB_MSG_572", + 0x306E: "ER_IB_MSG_573", + 0x306F: "ER_IB_MSG_574", 0x3070: "ER_IB_MSG_575", 0x3071: "ER_IB_MSG_576", 0x3072: "ER_IB_MSG_577", @@ -3758,12 +3758,12 @@ 0x3077: "ER_IB_MSG_582", 0x3078: "ER_IB_MSG_583", 0x3079: "ER_IB_MSG_584", - 0x307a: "ER_IB_MSG_585", - 0x307b: "ER_IB_MSG_586", - 0x307c: "ER_IB_MSG_587", - 0x307d: "ER_IB_MSG_588", - 0x307e: "ER_IB_MSG_589", - 0x307f: "ER_IB_MSG_590", + 0x307A: "ER_IB_MSG_585", + 0x307B: "ER_IB_MSG_586", + 0x307C: "ER_IB_MSG_587", + 0x307D: "ER_IB_MSG_588", + 0x307E: "ER_IB_MSG_589", + 0x307F: "ER_IB_MSG_590", 0x3080: "ER_IB_MSG_591", 0x3081: "ER_IB_MSG_592", 0x3082: "ER_IB_MSG_593", @@ -3774,12 +3774,12 @@ 0x3087: "ER_IB_MSG_598", 0x3088: "ER_IB_MSG_599", 0x3089: "ER_IB_MSG_600", - 0x308a: "ER_IB_MSG_601", - 0x308b: "ER_IB_MSG_602", - 0x308c: "ER_IB_MSG_603", - 0x308d: "ER_IB_MSG_604", - 0x308e: "ER_IB_MSG_605", - 0x308f: "ER_IB_MSG_606", + 0x308A: "ER_IB_MSG_601", + 0x308B: "ER_IB_MSG_602", + 0x308C: "ER_IB_MSG_603", + 0x308D: "ER_IB_MSG_604", + 0x308E: "ER_IB_MSG_605", + 0x308F: "ER_IB_MSG_606", 0x3090: "ER_IB_MSG_607", 0x3091: "ER_IB_MSG_608", 0x3092: "ER_IB_MSG_609", @@ -3790,108 +3790,108 @@ 0x3097: "ER_IB_MSG_614", 0x3098: "ER_IB_MSG_615", 0x3099: "ER_IB_MSG_616", - 0x309a: "ER_IB_MSG_617", - 0x309b: "ER_IB_MSG_618", - 0x309c: "ER_IB_MSG_619", - 0x309d: "ER_IB_MSG_620", - 0x309e: "ER_IB_MSG_621", - 0x309f: "ER_IB_MSG_622", - 0x30a0: "ER_IB_MSG_623", - 0x30a1: "ER_IB_MSG_624", - 0x30a2: "ER_IB_MSG_625", - 0x30a3: "ER_IB_MSG_626", - 0x30a4: "ER_IB_MSG_627", - 0x30a5: "ER_IB_MSG_628", - 0x30a6: "ER_IB_MSG_629", - 0x30a7: "ER_IB_MSG_630", - 0x30a8: "ER_IB_MSG_631", - 0x30a9: "ER_IB_MSG_632", - 0x30aa: "ER_IB_MSG_633", - 0x30ab: "ER_IB_MSG_634", - 0x30ac: "ER_IB_MSG_635", - 0x30ad: "ER_IB_MSG_636", - 0x30ae: "ER_IB_MSG_637", - 0x30af: "ER_IB_MSG_638", - 0x30b0: "ER_IB_MSG_639", - 0x30b1: "ER_IB_MSG_640", - 0x30b2: "ER_IB_MSG_641", - 0x30b3: "ER_IB_MSG_642", - 0x30b4: "ER_IB_MSG_643", - 0x30b5: "ER_IB_MSG_644", - 0x30b6: "ER_IB_MSG_645", - 0x30b7: "ER_IB_MSG_646", - 0x30b8: "ER_IB_MSG_647", - 0x30b9: "ER_IB_MSG_648", - 0x30ba: "ER_IB_MSG_649", - 0x30bb: "ER_IB_MSG_650", - 0x30bc: "ER_IB_MSG_651", - 0x30bd: "ER_IB_MSG_652", - 0x30be: "ER_IB_MSG_653", - 0x30bf: "ER_IB_MSG_654", - 0x30c0: "ER_IB_MSG_655", - 0x30c1: "ER_IB_MSG_656", - 0x30c2: "ER_IB_MSG_657", - 0x30c3: "ER_IB_MSG_658", - 0x30c4: "ER_IB_MSG_659", - 0x30c5: "ER_IB_MSG_660", - 0x30c6: "ER_IB_MSG_661", - 0x30c7: "ER_IB_MSG_662", - 0x30c8: "ER_IB_MSG_663", - 0x30c9: "ER_IB_MSG_664", - 0x30ca: "ER_IB_MSG_665", - 0x30cb: "ER_IB_MSG_666", - 0x30cc: "ER_IB_MSG_667", - 0x30cd: "ER_IB_MSG_668", - 0x30ce: "ER_IB_MSG_669", - 0x30cf: "ER_IB_MSG_670", - 0x30d0: "ER_IB_MSG_671", - 0x30d1: "ER_IB_MSG_672", - 0x30d2: "ER_IB_MSG_673", - 0x30d3: "ER_IB_MSG_674", - 0x30d4: "ER_IB_MSG_675", - 0x30d5: "ER_IB_MSG_676", - 0x30d6: "ER_IB_MSG_677", - 0x30d7: "ER_IB_MSG_678", - 0x30d8: "ER_IB_MSG_679", - 0x30d9: "ER_IB_MSG_680", - 0x30da: "ER_IB_MSG_681", - 0x30db: "ER_IB_MSG_682", - 0x30dc: "ER_IB_MSG_683", - 0x30dd: "ER_IB_MSG_684", - 0x30de: "ER_IB_MSG_685", - 0x30df: "ER_IB_MSG_686", - 0x30e0: "ER_IB_MSG_687", - 0x30e1: "ER_IB_MSG_688", - 0x30e2: "ER_IB_MSG_689", - 0x30e3: "ER_IB_MSG_690", - 0x30e4: "ER_IB_MSG_691", - 0x30e5: "ER_IB_MSG_692", - 0x30e6: "ER_IB_MSG_693", - 0x30e7: "ER_IB_MSG_694", - 0x30e8: "ER_IB_MSG_695", - 0x30e9: "ER_IB_MSG_696", - 0x30ea: "ER_IB_MSG_697", - 0x30eb: "ER_IB_MSG_698", - 0x30ec: "ER_IB_MSG_699", - 0x30ed: "ER_IB_MSG_700", - 0x30ee: "ER_IB_MSG_701", - 0x30ef: "ER_IB_MSG_702", - 0x30f0: "ER_IB_MSG_703", - 0x30f1: "ER_IB_MSG_704", - 0x30f2: "ER_IB_MSG_705", - 0x30f3: "ER_IB_MSG_706", - 0x30f4: "ER_IB_MSG_707", - 0x30f5: "ER_IB_MSG_708", - 0x30f6: "ER_IB_MSG_709", - 0x30f7: "ER_IB_MSG_710", - 0x30f8: "ER_IB_MSG_711", - 0x30f9: "ER_IB_MSG_712", - 0x30fa: "ER_IB_MSG_713", - 0x30fb: "ER_IB_MSG_714", - 0x30fc: "ER_IB_MSG_715", - 0x30fd: "ER_IB_MSG_716", - 0x30fe: "ER_IB_MSG_717", - 0x30ff: "ER_IB_MSG_718", + 0x309A: "ER_IB_MSG_617", + 0x309B: "ER_IB_MSG_618", + 0x309C: "ER_IB_MSG_619", + 0x309D: "ER_IB_MSG_620", + 0x309E: "ER_IB_MSG_621", + 0x309F: "ER_IB_MSG_622", + 0x30A0: "ER_IB_MSG_623", + 0x30A1: "ER_IB_MSG_624", + 0x30A2: "ER_IB_MSG_625", + 0x30A3: "ER_IB_MSG_626", + 0x30A4: "ER_IB_MSG_627", + 0x30A5: "ER_IB_MSG_628", + 0x30A6: "ER_IB_MSG_629", + 0x30A7: "ER_IB_MSG_630", + 0x30A8: "ER_IB_MSG_631", + 0x30A9: "ER_IB_MSG_632", + 0x30AA: "ER_IB_MSG_633", + 0x30AB: "ER_IB_MSG_634", + 0x30AC: "ER_IB_MSG_635", + 0x30AD: "ER_IB_MSG_636", + 0x30AE: "ER_IB_MSG_637", + 0x30AF: "ER_IB_MSG_638", + 0x30B0: "ER_IB_MSG_639", + 0x30B1: "ER_IB_MSG_640", + 0x30B2: "ER_IB_MSG_641", + 0x30B3: "ER_IB_MSG_642", + 0x30B4: "ER_IB_MSG_643", + 0x30B5: "ER_IB_MSG_644", + 0x30B6: "ER_IB_MSG_645", + 0x30B7: "ER_IB_MSG_646", + 0x30B8: "ER_IB_MSG_647", + 0x30B9: "ER_IB_MSG_648", + 0x30BA: "ER_IB_MSG_649", + 0x30BB: "ER_IB_MSG_650", + 0x30BC: "ER_IB_MSG_651", + 0x30BD: "ER_IB_MSG_652", + 0x30BE: "ER_IB_MSG_653", + 0x30BF: "ER_IB_MSG_654", + 0x30C0: "ER_IB_MSG_655", + 0x30C1: "ER_IB_MSG_656", + 0x30C2: "ER_IB_MSG_657", + 0x30C3: "ER_IB_MSG_658", + 0x30C4: "ER_IB_MSG_659", + 0x30C5: "ER_IB_MSG_660", + 0x30C6: "ER_IB_MSG_661", + 0x30C7: "ER_IB_MSG_662", + 0x30C8: "ER_IB_MSG_663", + 0x30C9: "ER_IB_MSG_664", + 0x30CA: "ER_IB_MSG_665", + 0x30CB: "ER_IB_MSG_666", + 0x30CC: "ER_IB_MSG_667", + 0x30CD: "ER_IB_MSG_668", + 0x30CE: "ER_IB_MSG_669", + 0x30CF: "ER_IB_MSG_670", + 0x30D0: "ER_IB_MSG_671", + 0x30D1: "ER_IB_MSG_672", + 0x30D2: "ER_IB_MSG_673", + 0x30D3: "ER_IB_MSG_674", + 0x30D4: "ER_IB_MSG_675", + 0x30D5: "ER_IB_MSG_676", + 0x30D6: "ER_IB_MSG_677", + 0x30D7: "ER_IB_MSG_678", + 0x30D8: "ER_IB_MSG_679", + 0x30D9: "ER_IB_MSG_680", + 0x30DA: "ER_IB_MSG_681", + 0x30DB: "ER_IB_MSG_682", + 0x30DC: "ER_IB_MSG_683", + 0x30DD: "ER_IB_MSG_684", + 0x30DE: "ER_IB_MSG_685", + 0x30DF: "ER_IB_MSG_686", + 0x30E0: "ER_IB_MSG_687", + 0x30E1: "ER_IB_MSG_688", + 0x30E2: "ER_IB_MSG_689", + 0x30E3: "ER_IB_MSG_690", + 0x30E4: "ER_IB_MSG_691", + 0x30E5: "ER_IB_MSG_692", + 0x30E6: "ER_IB_MSG_693", + 0x30E7: "ER_IB_MSG_694", + 0x30E8: "ER_IB_MSG_695", + 0x30E9: "ER_IB_MSG_696", + 0x30EA: "ER_IB_MSG_697", + 0x30EB: "ER_IB_MSG_698", + 0x30EC: "ER_IB_MSG_699", + 0x30ED: "ER_IB_MSG_700", + 0x30EE: "ER_IB_MSG_701", + 0x30EF: "ER_IB_MSG_702", + 0x30F0: "ER_IB_MSG_703", + 0x30F1: "ER_IB_MSG_704", + 0x30F2: "ER_IB_MSG_705", + 0x30F3: "ER_IB_MSG_706", + 0x30F4: "ER_IB_MSG_707", + 0x30F5: "ER_IB_MSG_708", + 0x30F6: "ER_IB_MSG_709", + 0x30F7: "ER_IB_MSG_710", + 0x30F8: "ER_IB_MSG_711", + 0x30F9: "ER_IB_MSG_712", + 0x30FA: "ER_IB_MSG_713", + 0x30FB: "ER_IB_MSG_714", + 0x30FC: "ER_IB_MSG_715", + 0x30FD: "ER_IB_MSG_716", + 0x30FE: "ER_IB_MSG_717", + 0x30FF: "ER_IB_MSG_718", 0x3100: "ER_IB_MSG_719", 0x3101: "ER_IB_MSG_720", 0x3102: "ER_IB_MSG_721", @@ -3902,12 +3902,12 @@ 0x3107: "ER_IB_MSG_726", 0x3108: "ER_IB_MSG_727", 0x3109: "ER_IB_MSG_728", - 0x310a: "ER_IB_MSG_729", - 0x310b: "ER_IB_MSG_730", - 0x310c: "ER_IB_MSG_731", - 0x310d: "ER_IB_MSG_732", - 0x310e: "ER_IB_MSG_733", - 0x310f: "ER_IB_MSG_734", + 0x310A: "ER_IB_MSG_729", + 0x310B: "ER_IB_MSG_730", + 0x310C: "ER_IB_MSG_731", + 0x310D: "ER_IB_MSG_732", + 0x310E: "ER_IB_MSG_733", + 0x310F: "ER_IB_MSG_734", 0x3110: "ER_IB_MSG_735", 0x3111: "ER_IB_MSG_736", 0x3112: "ER_IB_MSG_737", @@ -3918,12 +3918,12 @@ 0x3117: "ER_IB_MSG_742", 0x3118: "ER_IB_MSG_743", 0x3119: "ER_IB_MSG_744", - 0x311a: "ER_IB_MSG_745", - 0x311b: "ER_IB_MSG_746", - 0x311c: "ER_IB_MSG_747", - 0x311d: "ER_IB_MSG_748", - 0x311e: "ER_IB_MSG_749", - 0x311f: "ER_IB_MSG_750", + 0x311A: "ER_IB_MSG_745", + 0x311B: "ER_IB_MSG_746", + 0x311C: "ER_IB_MSG_747", + 0x311D: "ER_IB_MSG_748", + 0x311E: "ER_IB_MSG_749", + 0x311F: "ER_IB_MSG_750", 0x3120: "ER_IB_MSG_751", 0x3121: "ER_IB_MSG_752", 0x3122: "ER_IB_MSG_753", @@ -3934,12 +3934,12 @@ 0x3127: "ER_IB_MSG_758", 0x3128: "ER_IB_MSG_759", 0x3129: "ER_IB_MSG_760", - 0x312a: "ER_IB_MSG_761", - 0x312b: "ER_IB_MSG_762", - 0x312c: "ER_IB_MSG_763", - 0x312d: "ER_IB_MSG_764", - 0x312e: "ER_IB_MSG_765", - 0x312f: "ER_IB_MSG_766", + 0x312A: "ER_IB_MSG_761", + 0x312B: "ER_IB_MSG_762", + 0x312C: "ER_IB_MSG_763", + 0x312D: "ER_IB_MSG_764", + 0x312E: "ER_IB_MSG_765", + 0x312F: "ER_IB_MSG_766", 0x3130: "ER_IB_MSG_767", 0x3131: "ER_IB_MSG_768", 0x3132: "ER_IB_MSG_769", @@ -3950,12 +3950,12 @@ 0x3137: "ER_IB_MSG_774", 0x3138: "ER_IB_MSG_775", 0x3139: "ER_IB_MSG_776", - 0x313a: "ER_IB_MSG_777", - 0x313b: "ER_IB_MSG_778", - 0x313c: "ER_IB_MSG_779", - 0x313d: "ER_IB_MSG_780", - 0x313e: "ER_IB_MSG_781", - 0x313f: "ER_IB_MSG_782", + 0x313A: "ER_IB_MSG_777", + 0x313B: "ER_IB_MSG_778", + 0x313C: "ER_IB_MSG_779", + 0x313D: "ER_IB_MSG_780", + 0x313E: "ER_IB_MSG_781", + 0x313F: "ER_IB_MSG_782", 0x3140: "ER_IB_MSG_783", 0x3141: "ER_IB_MSG_784", 0x3142: "ER_IB_MSG_785", @@ -3966,12 +3966,12 @@ 0x3147: "ER_IB_MSG_790", 0x3148: "ER_IB_MSG_791", 0x3149: "ER_IB_MSG_792", - 0x314a: "ER_IB_MSG_793", - 0x314b: "ER_IB_MSG_794", - 0x314c: "ER_IB_MSG_795", - 0x314d: "ER_IB_MSG_796", - 0x314e: "ER_IB_MSG_797", - 0x314f: "ER_IB_MSG_798", + 0x314A: "ER_IB_MSG_793", + 0x314B: "ER_IB_MSG_794", + 0x314C: "ER_IB_MSG_795", + 0x314D: "ER_IB_MSG_796", + 0x314E: "ER_IB_MSG_797", + 0x314F: "ER_IB_MSG_798", 0x3150: "ER_IB_MSG_799", 0x3151: "ER_IB_MSG_800", 0x3152: "ER_IB_MSG_801", @@ -3982,12 +3982,12 @@ 0x3157: "ER_IB_MSG_806", 0x3158: "ER_IB_MSG_807", 0x3159: "ER_IB_MSG_808", - 0x315a: "ER_IB_MSG_809", - 0x315b: "ER_IB_MSG_810", - 0x315c: "ER_IB_MSG_811", - 0x315d: "ER_IB_MSG_812", - 0x315e: "ER_IB_MSG_813", - 0x315f: "ER_IB_MSG_814", + 0x315A: "ER_IB_MSG_809", + 0x315B: "ER_IB_MSG_810", + 0x315C: "ER_IB_MSG_811", + 0x315D: "ER_IB_MSG_812", + 0x315E: "ER_IB_MSG_813", + 0x315F: "ER_IB_MSG_814", 0x3160: "ER_IB_MSG_815", 0x3161: "ER_IB_MSG_816", 0x3162: "ER_IB_MSG_817", @@ -3998,12 +3998,12 @@ 0x3167: "ER_IB_MSG_822", 0x3168: "ER_IB_MSG_823", 0x3169: "ER_IB_MSG_824", - 0x316a: "ER_IB_MSG_825", - 0x316b: "ER_IB_MSG_826", - 0x316c: "ER_IB_MSG_827", - 0x316d: "ER_IB_MSG_828", - 0x316e: "ER_IB_MSG_829", - 0x316f: "ER_IB_MSG_830", + 0x316A: "ER_IB_MSG_825", + 0x316B: "ER_IB_MSG_826", + 0x316C: "ER_IB_MSG_827", + 0x316D: "ER_IB_MSG_828", + 0x316E: "ER_IB_MSG_829", + 0x316F: "ER_IB_MSG_830", 0x3170: "ER_IB_MSG_831", 0x3171: "ER_IB_MSG_832", 0x3172: "ER_IB_MSG_833", @@ -4014,12 +4014,12 @@ 0x3177: "ER_IB_MSG_838", 0x3178: "ER_IB_MSG_839", 0x3179: "ER_IB_MSG_840", - 0x317a: "ER_IB_MSG_841", - 0x317b: "ER_IB_MSG_842", - 0x317c: "ER_IB_MSG_843", - 0x317d: "ER_IB_MSG_844", - 0x317e: "ER_IB_MSG_845", - 0x317f: "ER_IB_MSG_846", + 0x317A: "ER_IB_MSG_841", + 0x317B: "ER_IB_MSG_842", + 0x317C: "ER_IB_MSG_843", + 0x317D: "ER_IB_MSG_844", + 0x317E: "ER_IB_MSG_845", + 0x317F: "ER_IB_MSG_846", 0x3180: "ER_IB_MSG_847", 0x3181: "ER_IB_MSG_848", 0x3182: "ER_IB_MSG_849", @@ -4030,12 +4030,12 @@ 0x3187: "ER_IB_MSG_854", 0x3188: "ER_IB_MSG_855", 0x3189: "ER_IB_MSG_856", - 0x318a: "ER_IB_MSG_857", - 0x318b: "ER_IB_MSG_858", - 0x318c: "ER_IB_MSG_859", - 0x318d: "ER_IB_MSG_860", - 0x318e: "ER_IB_MSG_861", - 0x318f: "ER_IB_MSG_862", + 0x318A: "ER_IB_MSG_857", + 0x318B: "ER_IB_MSG_858", + 0x318C: "ER_IB_MSG_859", + 0x318D: "ER_IB_MSG_860", + 0x318E: "ER_IB_MSG_861", + 0x318F: "ER_IB_MSG_862", 0x3190: "ER_IB_MSG_863", 0x3191: "ER_IB_MSG_864", 0x3192: "ER_IB_MSG_865", @@ -4046,108 +4046,108 @@ 0x3197: "ER_IB_MSG_870", 0x3198: "ER_IB_MSG_871", 0x3199: "ER_IB_MSG_872", - 0x319a: "ER_IB_MSG_873", - 0x319b: "ER_IB_MSG_874", - 0x319c: "ER_IB_MSG_875", - 0x319d: "ER_IB_MSG_876", - 0x319e: "ER_IB_MSG_877", - 0x319f: "ER_IB_MSG_878", - 0x31a0: "ER_IB_MSG_879", - 0x31a1: "ER_IB_MSG_880", - 0x31a2: "ER_IB_MSG_881", - 0x31a3: "ER_IB_MSG_882", - 0x31a4: "ER_IB_MSG_883", - 0x31a5: "ER_IB_MSG_884", - 0x31a6: "ER_IB_MSG_885", - 0x31a7: "ER_IB_MSG_886", - 0x31a8: "ER_IB_MSG_887", - 0x31a9: "ER_IB_MSG_888", - 0x31aa: "ER_IB_MSG_889", - 0x31ab: "ER_IB_MSG_890", - 0x31ac: "ER_IB_MSG_891", - 0x31ad: "ER_IB_MSG_892", - 0x31ae: "ER_IB_MSG_893", - 0x31af: "ER_IB_MSG_894", - 0x31b0: "ER_IB_MSG_895", - 0x31b1: "ER_IB_MSG_896", - 0x31b2: "ER_IB_MSG_897", - 0x31b3: "ER_IB_MSG_898", - 0x31b4: "ER_IB_MSG_899", - 0x31b5: "ER_IB_MSG_900", - 0x31b6: "ER_IB_MSG_901", - 0x31b7: "ER_IB_MSG_902", - 0x31b8: "ER_IB_MSG_903", - 0x31b9: "ER_IB_MSG_904", - 0x31ba: "ER_IB_MSG_905", - 0x31bb: "ER_IB_MSG_906", - 0x31bc: "ER_IB_MSG_907", - 0x31bd: "ER_IB_MSG_908", - 0x31be: "ER_IB_MSG_909", - 0x31bf: "ER_IB_MSG_910", - 0x31c0: "ER_IB_MSG_911", - 0x31c1: "ER_IB_MSG_912", - 0x31c2: "ER_IB_MSG_913", - 0x31c3: "ER_IB_MSG_914", - 0x31c4: "ER_IB_MSG_915", - 0x31c5: "ER_IB_MSG_916", - 0x31c6: "ER_IB_MSG_917", - 0x31c7: "ER_IB_MSG_918", - 0x31c8: "ER_IB_MSG_919", - 0x31c9: "ER_IB_MSG_920", - 0x31ca: "ER_IB_MSG_921", - 0x31cb: "ER_IB_MSG_922", - 0x31cc: "ER_IB_MSG_923", - 0x31cd: "ER_IB_MSG_924", - 0x31ce: "ER_IB_MSG_925", - 0x31cf: "ER_IB_MSG_926", - 0x31d0: "ER_IB_MSG_927", - 0x31d1: "ER_IB_MSG_928", - 0x31d2: "ER_IB_MSG_929", - 0x31d3: "ER_IB_MSG_930", - 0x31d4: "ER_IB_MSG_931", - 0x31d5: "ER_IB_MSG_932", - 0x31d6: "ER_IB_MSG_933", - 0x31d7: "ER_IB_MSG_934", - 0x31d8: "ER_IB_MSG_935", - 0x31d9: "ER_IB_MSG_936", - 0x31da: "ER_IB_MSG_937", - 0x31db: "ER_IB_MSG_938", - 0x31dc: "ER_IB_MSG_939", - 0x31dd: "ER_IB_MSG_940", - 0x31de: "ER_IB_MSG_941", - 0x31df: "ER_IB_MSG_942", - 0x31e0: "ER_IB_MSG_943", - 0x31e1: "ER_IB_MSG_944", - 0x31e2: "ER_IB_MSG_945", - 0x31e3: "ER_IB_MSG_946", - 0x31e4: "ER_IB_MSG_947", - 0x31e5: "ER_IB_MSG_948", - 0x31e6: "ER_IB_MSG_949", - 0x31e7: "ER_IB_MSG_950", - 0x31e8: "ER_IB_MSG_951", - 0x31e9: "ER_IB_MSG_952", - 0x31ea: "ER_IB_MSG_953", - 0x31eb: "ER_IB_MSG_954", - 0x31ec: "ER_IB_MSG_955", - 0x31ed: "ER_IB_MSG_956", - 0x31ee: "ER_IB_MSG_957", - 0x31ef: "ER_IB_MSG_958", - 0x31f0: "ER_IB_MSG_959", - 0x31f1: "ER_IB_MSG_960", - 0x31f2: "ER_IB_MSG_961", - 0x31f3: "ER_IB_MSG_962", - 0x31f4: "ER_IB_MSG_963", - 0x31f5: "ER_IB_MSG_964", - 0x31f6: "ER_IB_MSG_965", - 0x31f7: "ER_IB_MSG_966", - 0x31f8: "ER_IB_MSG_967", - 0x31f9: "ER_IB_MSG_968", - 0x31fa: "ER_IB_MSG_969", - 0x31fb: "ER_IB_MSG_970", - 0x31fc: "ER_IB_MSG_971", - 0x31fd: "ER_IB_MSG_972", - 0x31fe: "ER_IB_MSG_973", - 0x31ff: "ER_IB_MSG_974", + 0x319A: "ER_IB_MSG_873", + 0x319B: "ER_IB_MSG_874", + 0x319C: "ER_IB_MSG_875", + 0x319D: "ER_IB_MSG_876", + 0x319E: "ER_IB_MSG_877", + 0x319F: "ER_IB_MSG_878", + 0x31A0: "ER_IB_MSG_879", + 0x31A1: "ER_IB_MSG_880", + 0x31A2: "ER_IB_MSG_881", + 0x31A3: "ER_IB_MSG_882", + 0x31A4: "ER_IB_MSG_883", + 0x31A5: "ER_IB_MSG_884", + 0x31A6: "ER_IB_MSG_885", + 0x31A7: "ER_IB_MSG_886", + 0x31A8: "ER_IB_MSG_887", + 0x31A9: "ER_IB_MSG_888", + 0x31AA: "ER_IB_MSG_889", + 0x31AB: "ER_IB_MSG_890", + 0x31AC: "ER_IB_MSG_891", + 0x31AD: "ER_IB_MSG_892", + 0x31AE: "ER_IB_MSG_893", + 0x31AF: "ER_IB_MSG_894", + 0x31B0: "ER_IB_MSG_895", + 0x31B1: "ER_IB_MSG_896", + 0x31B2: "ER_IB_MSG_897", + 0x31B3: "ER_IB_MSG_898", + 0x31B4: "ER_IB_MSG_899", + 0x31B5: "ER_IB_MSG_900", + 0x31B6: "ER_IB_MSG_901", + 0x31B7: "ER_IB_MSG_902", + 0x31B8: "ER_IB_MSG_903", + 0x31B9: "ER_IB_MSG_904", + 0x31BA: "ER_IB_MSG_905", + 0x31BB: "ER_IB_MSG_906", + 0x31BC: "ER_IB_MSG_907", + 0x31BD: "ER_IB_MSG_908", + 0x31BE: "ER_IB_MSG_909", + 0x31BF: "ER_IB_MSG_910", + 0x31C0: "ER_IB_MSG_911", + 0x31C1: "ER_IB_MSG_912", + 0x31C2: "ER_IB_MSG_913", + 0x31C3: "ER_IB_MSG_914", + 0x31C4: "ER_IB_MSG_915", + 0x31C5: "ER_IB_MSG_916", + 0x31C6: "ER_IB_MSG_917", + 0x31C7: "ER_IB_MSG_918", + 0x31C8: "ER_IB_MSG_919", + 0x31C9: "ER_IB_MSG_920", + 0x31CA: "ER_IB_MSG_921", + 0x31CB: "ER_IB_MSG_922", + 0x31CC: "ER_IB_MSG_923", + 0x31CD: "ER_IB_MSG_924", + 0x31CE: "ER_IB_MSG_925", + 0x31CF: "ER_IB_MSG_926", + 0x31D0: "ER_IB_MSG_927", + 0x31D1: "ER_IB_MSG_928", + 0x31D2: "ER_IB_MSG_929", + 0x31D3: "ER_IB_MSG_930", + 0x31D4: "ER_IB_MSG_931", + 0x31D5: "ER_IB_MSG_932", + 0x31D6: "ER_IB_MSG_933", + 0x31D7: "ER_IB_MSG_934", + 0x31D8: "ER_IB_MSG_935", + 0x31D9: "ER_IB_MSG_936", + 0x31DA: "ER_IB_MSG_937", + 0x31DB: "ER_IB_MSG_938", + 0x31DC: "ER_IB_MSG_939", + 0x31DD: "ER_IB_MSG_940", + 0x31DE: "ER_IB_MSG_941", + 0x31DF: "ER_IB_MSG_942", + 0x31E0: "ER_IB_MSG_943", + 0x31E1: "ER_IB_MSG_944", + 0x31E2: "ER_IB_MSG_945", + 0x31E3: "ER_IB_MSG_946", + 0x31E4: "ER_IB_MSG_947", + 0x31E5: "ER_IB_MSG_948", + 0x31E6: "ER_IB_MSG_949", + 0x31E7: "ER_IB_MSG_950", + 0x31E8: "ER_IB_MSG_951", + 0x31E9: "ER_IB_MSG_952", + 0x31EA: "ER_IB_MSG_953", + 0x31EB: "ER_IB_MSG_954", + 0x31EC: "ER_IB_MSG_955", + 0x31ED: "ER_IB_MSG_956", + 0x31EE: "ER_IB_MSG_957", + 0x31EF: "ER_IB_MSG_958", + 0x31F0: "ER_IB_MSG_959", + 0x31F1: "ER_IB_MSG_960", + 0x31F2: "ER_IB_MSG_961", + 0x31F3: "ER_IB_MSG_962", + 0x31F4: "ER_IB_MSG_963", + 0x31F5: "ER_IB_MSG_964", + 0x31F6: "ER_IB_MSG_965", + 0x31F7: "ER_IB_MSG_966", + 0x31F8: "ER_IB_MSG_967", + 0x31F9: "ER_IB_MSG_968", + 0x31FA: "ER_IB_MSG_969", + 0x31FB: "ER_IB_MSG_970", + 0x31FC: "ER_IB_MSG_971", + 0x31FD: "ER_IB_MSG_972", + 0x31FE: "ER_IB_MSG_973", + 0x31FF: "ER_IB_MSG_974", 0x3200: "ER_IB_MSG_975", 0x3201: "ER_IB_MSG_976", 0x3202: "ER_IB_MSG_977", @@ -4158,12 +4158,12 @@ 0x3207: "ER_IB_MSG_982", 0x3208: "ER_IB_MSG_983", 0x3209: "ER_IB_MSG_984", - 0x320a: "ER_IB_MSG_985", - 0x320b: "ER_IB_MSG_986", - 0x320c: "ER_IB_MSG_987", - 0x320d: "ER_IB_MSG_988", - 0x320e: "ER_IB_MSG_989", - 0x320f: "ER_IB_MSG_990", + 0x320A: "ER_IB_MSG_985", + 0x320B: "ER_IB_MSG_986", + 0x320C: "ER_IB_MSG_987", + 0x320D: "ER_IB_MSG_988", + 0x320E: "ER_IB_MSG_989", + 0x320F: "ER_IB_MSG_990", 0x3210: "ER_IB_MSG_991", 0x3211: "ER_IB_MSG_992", 0x3212: "ER_IB_MSG_993", @@ -4174,12 +4174,12 @@ 0x3217: "ER_IB_MSG_998", 0x3218: "ER_IB_MSG_999", 0x3219: "ER_IB_MSG_1000", - 0x321a: "ER_IB_MSG_1001", - 0x321b: "ER_IB_MSG_1002", - 0x321c: "ER_IB_MSG_1003", - 0x321d: "ER_IB_MSG_1004", - 0x321e: "ER_IB_MSG_1005", - 0x321f: "ER_IB_MSG_1006", + 0x321A: "ER_IB_MSG_1001", + 0x321B: "ER_IB_MSG_1002", + 0x321C: "ER_IB_MSG_1003", + 0x321D: "ER_IB_MSG_1004", + 0x321E: "ER_IB_MSG_1005", + 0x321F: "ER_IB_MSG_1006", 0x3220: "ER_IB_MSG_1007", 0x3221: "ER_IB_MSG_1008", 0x3222: "ER_IB_MSG_1009", @@ -4190,12 +4190,12 @@ 0x3227: "ER_IB_MSG_1014", 0x3228: "ER_IB_MSG_1015", 0x3229: "ER_IB_MSG_1016", - 0x322a: "ER_IB_MSG_1017", - 0x322b: "ER_IB_MSG_1018", - 0x322c: "ER_IB_MSG_1019", - 0x322d: "ER_IB_MSG_1020", - 0x322e: "ER_IB_MSG_1021", - 0x322f: "ER_IB_MSG_1022", + 0x322A: "ER_IB_MSG_1017", + 0x322B: "ER_IB_MSG_1018", + 0x322C: "ER_IB_MSG_1019", + 0x322D: "ER_IB_MSG_1020", + 0x322E: "ER_IB_MSG_1021", + 0x322F: "ER_IB_MSG_1022", 0x3230: "ER_IB_MSG_1023", 0x3231: "ER_IB_MSG_1024", 0x3232: "ER_IB_MSG_1025", @@ -4206,12 +4206,12 @@ 0x3237: "ER_IB_MSG_1030", 0x3238: "ER_IB_MSG_1031", 0x3239: "ER_IB_MSG_1032", - 0x323a: "ER_IB_MSG_1033", - 0x323b: "ER_IB_MSG_1034", - 0x323c: "ER_IB_MSG_1035", - 0x323d: "ER_IB_MSG_1036", - 0x323e: "ER_IB_MSG_1037", - 0x323f: "ER_IB_MSG_1038", + 0x323A: "ER_IB_MSG_1033", + 0x323B: "ER_IB_MSG_1034", + 0x323C: "ER_IB_MSG_1035", + 0x323D: "ER_IB_MSG_1036", + 0x323E: "ER_IB_MSG_1037", + 0x323F: "ER_IB_MSG_1038", 0x3240: "ER_IB_MSG_1039", 0x3241: "ER_IB_MSG_1040", 0x3242: "ER_IB_MSG_1041", @@ -4222,12 +4222,12 @@ 0x3247: "ER_IB_MSG_1046", 0x3248: "ER_IB_MSG_1047", 0x3249: "ER_IB_MSG_1048", - 0x324a: "ER_IB_MSG_1049", - 0x324b: "ER_IB_MSG_1050", - 0x324c: "ER_IB_MSG_1051", - 0x324d: "ER_IB_MSG_1052", - 0x324e: "ER_IB_MSG_1053", - 0x324f: "ER_IB_MSG_1054", + 0x324A: "ER_IB_MSG_1049", + 0x324B: "ER_IB_MSG_1050", + 0x324C: "ER_IB_MSG_1051", + 0x324D: "ER_IB_MSG_1052", + 0x324E: "ER_IB_MSG_1053", + 0x324F: "ER_IB_MSG_1054", 0x3250: "ER_IB_MSG_1055", 0x3251: "ER_IB_MSG_1056", 0x3252: "ER_IB_MSG_1057", @@ -4238,12 +4238,12 @@ 0x3257: "ER_IB_MSG_1062", 0x3258: "ER_IB_MSG_1063", 0x3259: "ER_IB_MSG_1064", - 0x325a: "ER_IB_MSG_1065", - 0x325b: "ER_IB_MSG_1066", - 0x325c: "ER_IB_MSG_1067", - 0x325d: "ER_IB_MSG_1068", - 0x325e: "ER_IB_MSG_1069", - 0x325f: "ER_IB_MSG_1070", + 0x325A: "ER_IB_MSG_1065", + 0x325B: "ER_IB_MSG_1066", + 0x325C: "ER_IB_MSG_1067", + 0x325D: "ER_IB_MSG_1068", + 0x325E: "ER_IB_MSG_1069", + 0x325F: "ER_IB_MSG_1070", 0x3260: "ER_IB_MSG_1071", 0x3261: "ER_IB_MSG_1072", 0x3262: "ER_IB_MSG_1073", @@ -4254,12 +4254,12 @@ 0x3267: "ER_IB_MSG_1078", 0x3268: "ER_IB_MSG_1079", 0x3269: "ER_IB_MSG_1080", - 0x326a: "ER_IB_MSG_1081", - 0x326b: "ER_IB_MSG_1082", - 0x326c: "ER_IB_MSG_1083", - 0x326d: "ER_IB_MSG_1084", - 0x326e: "ER_IB_MSG_1085", - 0x326f: "ER_IB_MSG_1086", + 0x326A: "ER_IB_MSG_1081", + 0x326B: "ER_IB_MSG_1082", + 0x326C: "ER_IB_MSG_1083", + 0x326D: "ER_IB_MSG_1084", + 0x326E: "ER_IB_MSG_1085", + 0x326F: "ER_IB_MSG_1086", 0x3270: "ER_IB_MSG_1087", 0x3271: "ER_IB_MSG_1088", 0x3272: "ER_IB_MSG_1089", @@ -4270,12 +4270,12 @@ 0x3277: "ER_IB_MSG_1094", 0x3278: "ER_IB_MSG_1095", 0x3279: "ER_IB_MSG_1096", - 0x327a: "ER_IB_MSG_1097", - 0x327b: "ER_IB_MSG_1098", - 0x327c: "ER_IB_MSG_1099", - 0x327d: "ER_IB_MSG_1100", - 0x327e: "ER_IB_MSG_1101", - 0x327f: "ER_IB_MSG_1102", + 0x327A: "ER_IB_MSG_1097", + 0x327B: "ER_IB_MSG_1098", + 0x327C: "ER_IB_MSG_1099", + 0x327D: "ER_IB_MSG_1100", + 0x327E: "ER_IB_MSG_1101", + 0x327F: "ER_IB_MSG_1102", 0x3280: "ER_IB_MSG_1103", 0x3281: "ER_IB_MSG_1104", 0x3282: "ER_IB_MSG_1105", @@ -4286,12 +4286,12 @@ 0x3287: "ER_IB_MSG_1110", 0x3288: "ER_IB_MSG_1111", 0x3289: "ER_IB_MSG_1112", - 0x328a: "ER_IB_MSG_1113", - 0x328b: "ER_IB_MSG_1114", - 0x328c: "ER_IB_MSG_1115", - 0x328d: "ER_IB_MSG_1116", - 0x328e: "ER_IB_MSG_1117", - 0x328f: "ER_IB_MSG_1118", + 0x328A: "ER_IB_MSG_1113", + 0x328B: "ER_IB_MSG_1114", + 0x328C: "ER_IB_MSG_1115", + 0x328D: "ER_IB_MSG_1116", + 0x328E: "ER_IB_MSG_1117", + 0x328F: "ER_IB_MSG_1118", 0x3290: "ER_IB_MSG_1119", 0x3291: "ER_IB_MSG_1120", 0x3292: "ER_IB_MSG_1121", @@ -4302,108 +4302,108 @@ 0x3297: "ER_IB_MSG_1126", 0x3298: "ER_IB_MSG_1127", 0x3299: "ER_IB_MSG_1128", - 0x329a: "ER_IB_MSG_1129", - 0x329b: "ER_IB_MSG_1130", - 0x329c: "ER_IB_MSG_1131", - 0x329d: "ER_IB_MSG_1132", - 0x329e: "ER_IB_MSG_1133", - 0x329f: "ER_IB_MSG_1134", - 0x32a0: "ER_IB_MSG_1135", - 0x32a1: "ER_IB_MSG_1136", - 0x32a2: "ER_IB_MSG_1137", - 0x32a3: "ER_IB_MSG_1138", - 0x32a4: "ER_IB_MSG_1139", - 0x32a5: "ER_IB_MSG_1140", - 0x32a6: "ER_IB_MSG_1141", - 0x32a7: "ER_IB_MSG_1142", - 0x32a8: "ER_IB_MSG_1143", - 0x32a9: "ER_IB_MSG_1144", - 0x32aa: "ER_IB_MSG_1145", - 0x32ab: "ER_IB_MSG_1146", - 0x32ac: "ER_IB_MSG_1147", - 0x32ad: "ER_IB_MSG_1148", - 0x32ae: "ER_IB_MSG_1149", - 0x32af: "ER_IB_MSG_1150", - 0x32b0: "ER_IB_MSG_1151", - 0x32b1: "ER_IB_MSG_1152", - 0x32b2: "ER_IB_MSG_1153", - 0x32b3: "ER_IB_MSG_1154", - 0x32b4: "ER_IB_MSG_1155", - 0x32b5: "ER_IB_MSG_1156", - 0x32b6: "ER_IB_MSG_1157", - 0x32b7: "ER_IB_MSG_1158", - 0x32b8: "ER_IB_MSG_1159", - 0x32b9: "ER_IB_MSG_1160", - 0x32ba: "ER_IB_MSG_1161", - 0x32bb: "ER_IB_MSG_1162", - 0x32bc: "ER_IB_MSG_1163", - 0x32bd: "ER_IB_MSG_1164", - 0x32be: "ER_IB_MSG_1165", - 0x32bf: "ER_IB_MSG_1166", - 0x32c0: "ER_IB_MSG_1167", - 0x32c1: "ER_IB_MSG_1168", - 0x32c2: "ER_IB_MSG_1169", - 0x32c3: "ER_IB_MSG_1170", - 0x32c4: "ER_IB_MSG_1171", - 0x32c5: "ER_IB_MSG_1172", - 0x32c6: "ER_IB_MSG_1173", - 0x32c7: "ER_IB_MSG_1174", - 0x32c8: "ER_IB_MSG_1175", - 0x32c9: "ER_IB_MSG_1176", - 0x32ca: "ER_IB_MSG_1177", - 0x32cb: "ER_IB_MSG_1178", - 0x32cc: "ER_IB_MSG_1179", - 0x32cd: "ER_IB_MSG_1180", - 0x32ce: "ER_IB_MSG_1181", - 0x32cf: "ER_IB_MSG_1182", - 0x32d0: "ER_IB_MSG_1183", - 0x32d1: "ER_IB_MSG_1184", - 0x32d2: "ER_IB_MSG_1185", - 0x32d3: "ER_IB_MSG_1186", - 0x32d4: "ER_IB_MSG_1187", - 0x32d5: "ER_IB_MSG_1188", - 0x32d6: "ER_IB_MSG_1189", - 0x32d7: "ER_IB_MSG_1190", - 0x32d8: "ER_IB_MSG_1191", - 0x32d9: "ER_IB_MSG_1192", - 0x32da: "ER_IB_MSG_1193", - 0x32db: "ER_IB_MSG_1194", - 0x32dc: "ER_IB_MSG_1195", - 0x32dd: "ER_IB_MSG_1196", - 0x32de: "ER_IB_MSG_1197", - 0x32df: "ER_IB_MSG_1198", - 0x32e0: "ER_IB_MSG_1199", - 0x32e1: "ER_IB_MSG_1200", - 0x32e2: "ER_IB_MSG_1201", - 0x32e3: "ER_IB_MSG_1202", - 0x32e4: "ER_IB_MSG_1203", - 0x32e5: "ER_IB_MSG_1204", - 0x32e6: "ER_IB_MSG_1205", - 0x32e7: "ER_IB_MSG_1206", - 0x32e8: "ER_IB_MSG_1207", - 0x32e9: "ER_IB_MSG_1208", - 0x32ea: "ER_IB_MSG_1209", - 0x32eb: "ER_IB_MSG_1210", - 0x32ec: "ER_IB_MSG_1211", - 0x32ed: "ER_IB_MSG_1212", - 0x32ee: "ER_IB_MSG_1213", - 0x32ef: "ER_IB_MSG_1214", - 0x32f0: "ER_IB_MSG_1215", - 0x32f1: "ER_IB_MSG_1216", - 0x32f2: "ER_IB_MSG_1217", - 0x32f3: "ER_IB_MSG_1218", - 0x32f4: "ER_IB_MSG_1219", - 0x32f5: "ER_IB_MSG_1220", - 0x32f6: "ER_IB_MSG_1221", - 0x32f7: "ER_IB_MSG_1222", - 0x32f8: "ER_IB_MSG_1223", - 0x32f9: "ER_IB_MSG_1224", - 0x32fa: "ER_IB_MSG_1225", - 0x32fb: "ER_IB_MSG_1226", - 0x32fc: "ER_IB_MSG_1227", - 0x32fd: "ER_IB_MSG_1228", - 0x32fe: "ER_IB_MSG_1229", - 0x32ff: "ER_IB_MSG_1230", + 0x329A: "ER_IB_MSG_1129", + 0x329B: "ER_IB_MSG_1130", + 0x329C: "ER_IB_MSG_1131", + 0x329D: "ER_IB_MSG_1132", + 0x329E: "ER_IB_MSG_1133", + 0x329F: "ER_IB_MSG_1134", + 0x32A0: "ER_IB_MSG_1135", + 0x32A1: "ER_IB_MSG_1136", + 0x32A2: "ER_IB_MSG_1137", + 0x32A3: "ER_IB_MSG_1138", + 0x32A4: "ER_IB_MSG_1139", + 0x32A5: "ER_IB_MSG_1140", + 0x32A6: "ER_IB_MSG_1141", + 0x32A7: "ER_IB_MSG_1142", + 0x32A8: "ER_IB_MSG_1143", + 0x32A9: "ER_IB_MSG_1144", + 0x32AA: "ER_IB_MSG_1145", + 0x32AB: "ER_IB_MSG_1146", + 0x32AC: "ER_IB_MSG_1147", + 0x32AD: "ER_IB_MSG_1148", + 0x32AE: "ER_IB_MSG_1149", + 0x32AF: "ER_IB_MSG_1150", + 0x32B0: "ER_IB_MSG_1151", + 0x32B1: "ER_IB_MSG_1152", + 0x32B2: "ER_IB_MSG_1153", + 0x32B3: "ER_IB_MSG_1154", + 0x32B4: "ER_IB_MSG_1155", + 0x32B5: "ER_IB_MSG_1156", + 0x32B6: "ER_IB_MSG_1157", + 0x32B7: "ER_IB_MSG_1158", + 0x32B8: "ER_IB_MSG_1159", + 0x32B9: "ER_IB_MSG_1160", + 0x32BA: "ER_IB_MSG_1161", + 0x32BB: "ER_IB_MSG_1162", + 0x32BC: "ER_IB_MSG_1163", + 0x32BD: "ER_IB_MSG_1164", + 0x32BE: "ER_IB_MSG_1165", + 0x32BF: "ER_IB_MSG_1166", + 0x32C0: "ER_IB_MSG_1167", + 0x32C1: "ER_IB_MSG_1168", + 0x32C2: "ER_IB_MSG_1169", + 0x32C3: "ER_IB_MSG_1170", + 0x32C4: "ER_IB_MSG_1171", + 0x32C5: "ER_IB_MSG_1172", + 0x32C6: "ER_IB_MSG_1173", + 0x32C7: "ER_IB_MSG_1174", + 0x32C8: "ER_IB_MSG_1175", + 0x32C9: "ER_IB_MSG_1176", + 0x32CA: "ER_IB_MSG_1177", + 0x32CB: "ER_IB_MSG_1178", + 0x32CC: "ER_IB_MSG_1179", + 0x32CD: "ER_IB_MSG_1180", + 0x32CE: "ER_IB_MSG_1181", + 0x32CF: "ER_IB_MSG_1182", + 0x32D0: "ER_IB_MSG_1183", + 0x32D1: "ER_IB_MSG_1184", + 0x32D2: "ER_IB_MSG_1185", + 0x32D3: "ER_IB_MSG_1186", + 0x32D4: "ER_IB_MSG_1187", + 0x32D5: "ER_IB_MSG_1188", + 0x32D6: "ER_IB_MSG_1189", + 0x32D7: "ER_IB_MSG_1190", + 0x32D8: "ER_IB_MSG_1191", + 0x32D9: "ER_IB_MSG_1192", + 0x32DA: "ER_IB_MSG_1193", + 0x32DB: "ER_IB_MSG_1194", + 0x32DC: "ER_IB_MSG_1195", + 0x32DD: "ER_IB_MSG_1196", + 0x32DE: "ER_IB_MSG_1197", + 0x32DF: "ER_IB_MSG_1198", + 0x32E0: "ER_IB_MSG_1199", + 0x32E1: "ER_IB_MSG_1200", + 0x32E2: "ER_IB_MSG_1201", + 0x32E3: "ER_IB_MSG_1202", + 0x32E4: "ER_IB_MSG_1203", + 0x32E5: "ER_IB_MSG_1204", + 0x32E6: "ER_IB_MSG_1205", + 0x32E7: "ER_IB_MSG_1206", + 0x32E8: "ER_IB_MSG_1207", + 0x32E9: "ER_IB_MSG_1208", + 0x32EA: "ER_IB_MSG_1209", + 0x32EB: "ER_IB_MSG_1210", + 0x32EC: "ER_IB_MSG_1211", + 0x32ED: "ER_IB_MSG_1212", + 0x32EE: "ER_IB_MSG_1213", + 0x32EF: "ER_IB_MSG_1214", + 0x32F0: "ER_IB_MSG_1215", + 0x32F1: "ER_IB_MSG_1216", + 0x32F2: "ER_IB_MSG_1217", + 0x32F3: "ER_IB_MSG_1218", + 0x32F4: "ER_IB_MSG_1219", + 0x32F5: "ER_IB_MSG_1220", + 0x32F6: "ER_IB_MSG_1221", + 0x32F7: "ER_IB_MSG_1222", + 0x32F8: "ER_IB_MSG_1223", + 0x32F9: "ER_IB_MSG_1224", + 0x32FA: "ER_IB_MSG_1225", + 0x32FB: "ER_IB_MSG_1226", + 0x32FC: "ER_IB_MSG_1227", + 0x32FD: "ER_IB_MSG_1228", + 0x32FE: "ER_IB_MSG_1229", + 0x32FF: "ER_IB_MSG_1230", 0x3300: "ER_IB_MSG_1231", 0x3301: "ER_IB_MSG_1232", 0x3302: "ER_IB_MSG_1233", @@ -4414,12 +4414,12 @@ 0x3307: "ER_IB_MSG_1238", 0x3308: "ER_IB_MSG_1239", 0x3309: "ER_IB_MSG_1240", - 0x330a: "ER_IB_MSG_1241", - 0x330b: "ER_IB_MSG_1242", - 0x330c: "ER_IB_MSG_1243", - 0x330d: "ER_IB_MSG_1244", - 0x330e: "ER_IB_MSG_1245", - 0x330f: "ER_IB_MSG_1246", + 0x330A: "ER_IB_MSG_1241", + 0x330B: "ER_IB_MSG_1242", + 0x330C: "ER_IB_MSG_1243", + 0x330D: "ER_IB_MSG_1244", + 0x330E: "ER_IB_MSG_1245", + 0x330F: "ER_IB_MSG_1246", 0x3310: "ER_IB_MSG_1247", 0x3311: "ER_IB_MSG_1248", 0x3312: "ER_IB_MSG_1249", @@ -4430,12 +4430,12 @@ 0x3317: "ER_IB_MSG_1254", 0x3318: "ER_IB_MSG_1255", 0x3319: "ER_IB_MSG_1256", - 0x331a: "ER_IB_MSG_1257", - 0x331b: "ER_IB_MSG_1258", - 0x331c: "ER_IB_MSG_1259", - 0x331d: "ER_IB_MSG_1260", - 0x331e: "ER_IB_MSG_1261", - 0x331f: "ER_IB_MSG_1262", + 0x331A: "ER_IB_MSG_1257", + 0x331B: "ER_IB_MSG_1258", + 0x331C: "ER_IB_MSG_1259", + 0x331D: "ER_IB_MSG_1260", + 0x331E: "ER_IB_MSG_1261", + 0x331F: "ER_IB_MSG_1262", 0x3320: "ER_IB_MSG_1263", 0x3321: "ER_IB_MSG_1264", 0x3322: "ER_IB_MSG_1265", @@ -4446,12 +4446,12 @@ 0x3327: "ER_IB_MSG_1270", 0x3328: "ER_RPL_SLAVE_SQL_THREAD_STOP_CMD_EXEC_TIMEOUT", 0x3329: "ER_RPL_SLAVE_IO_THREAD_STOP_CMD_EXEC_TIMEOUT", - 0x332a: "ER_RPL_GTID_UNSAFE_STMT_ON_NON_TRANS_TABLE", - 0x332b: "ER_RPL_GTID_UNSAFE_STMT_CREATE_SELECT", - 0x332c: "ER_RPL_GTID_UNSAFE_STMT_ON_TEMPORARY_TABLE", - 0x332d: "ER_BINLOG_ROW_VALUE_OPTION_IGNORED", - 0x332e: "ER_BINLOG_USE_V1_ROW_EVENTS_IGNORED", - 0x332f: "ER_BINLOG_ROW_VALUE_OPTION_USED_ONLY_FOR_AFTER_IMAGES", + 0x332A: "ER_RPL_GTID_UNSAFE_STMT_ON_NON_TRANS_TABLE", + 0x332B: "ER_RPL_GTID_UNSAFE_STMT_CREATE_SELECT", + 0x332C: "ER_RPL_GTID_UNSAFE_STMT_ON_TEMPORARY_TABLE", + 0x332D: "ER_BINLOG_ROW_VALUE_OPTION_IGNORED", + 0x332E: "ER_BINLOG_USE_V1_ROW_EVENTS_IGNORED", + 0x332F: "ER_BINLOG_ROW_VALUE_OPTION_USED_ONLY_FOR_AFTER_IMAGES", 0x3330: "ER_CONNECTION_ABORTED", 0x3331: "ER_NORMAL_SERVER_SHUTDOWN", 0x3332: "ER_KEYRING_MIGRATE_FAILED", @@ -4462,12 +4462,12 @@ 0x3337: "ER_COMPONENT_FILTER_WRONG_VALUE", 0x3338: "ER_XPLUGIN_FAILED_TO_STOP_SERVICES", 0x3339: "ER_INCONSISTENT_ERROR", - 0x333a: "ER_SERVER_MASTER_FATAL_ERROR_READING_BINLOG", - 0x333b: "ER_NETWORK_READ_EVENT_CHECKSUM_FAILURE", - 0x333c: "ER_SLAVE_CREATE_EVENT_FAILURE", - 0x333d: "ER_SLAVE_FATAL_ERROR", - 0x333e: "ER_SLAVE_HEARTBEAT_FAILURE", - 0x333f: "ER_SLAVE_INCIDENT", + 0x333A: "ER_SERVER_MASTER_FATAL_ERROR_READING_BINLOG", + 0x333B: "ER_NETWORK_READ_EVENT_CHECKSUM_FAILURE", + 0x333C: "ER_SLAVE_CREATE_EVENT_FAILURE", + 0x333D: "ER_SLAVE_FATAL_ERROR", + 0x333E: "ER_SLAVE_HEARTBEAT_FAILURE", + 0x333F: "ER_SLAVE_INCIDENT", 0x3340: "ER_SLAVE_MASTER_COM_FAILURE", 0x3341: "ER_SLAVE_RELAY_LOG_READ_FAILURE", 0x3342: "ER_SLAVE_RELAY_LOG_WRITE_FAILURE", @@ -4478,12 +4478,12 @@ 0x3347: "ER_SERVER_UNKNOWN_ERROR", 0x3348: "ER_SERVER_UNKNOWN_SYSTEM_VARIABLE", 0x3349: "ER_SERVER_NO_SESSION_TO_SEND_TO", - 0x334a: "ER_SERVER_NEW_ABORTING_CONNECTION", - 0x334b: "ER_SERVER_OUT_OF_SORTMEMORY", - 0x334c: "ER_SERVER_RECORD_FILE_FULL", - 0x334d: "ER_SERVER_DISK_FULL_NOWAIT", - 0x334e: "ER_SERVER_HANDLER_ERROR", - 0x334f: "ER_SERVER_NOT_FORM_FILE", + 0x334A: "ER_SERVER_NEW_ABORTING_CONNECTION", + 0x334B: "ER_SERVER_OUT_OF_SORTMEMORY", + 0x334C: "ER_SERVER_RECORD_FILE_FULL", + 0x334D: "ER_SERVER_DISK_FULL_NOWAIT", + 0x334E: "ER_SERVER_HANDLER_ERROR", + 0x334F: "ER_SERVER_NOT_FORM_FILE", 0x3350: "ER_SERVER_CANT_OPEN_FILE", 0x3351: "ER_SERVER_FILE_NOT_FOUND", 0x3352: "ER_SERVER_FILE_USED", @@ -4494,12 +4494,12 @@ 0x3357: "ER_SERVER_COL_COUNT_DOESNT_MATCH_CORRUPTED_V2", 0x3358: "ER_SERVER_ACL_TABLE_ERROR", 0x3359: "ER_SERVER_SLAVE_INIT_QUERY_FAILED", - 0x335a: "ER_SERVER_SLAVE_CONVERSION_FAILED", - 0x335b: "ER_SERVER_SLAVE_IGNORED_TABLE", - 0x335c: "ER_CANT_REPLICATE_ANONYMOUS_WITH_AUTO_POSITION", - 0x335d: "ER_CANT_REPLICATE_ANONYMOUS_WITH_GTID_MODE_ON", - 0x335e: "ER_CANT_REPLICATE_GTID_WITH_GTID_MODE_OFF", - 0x335f: "ER_SERVER_TEST_MESSAGE", + 0x335A: "ER_SERVER_SLAVE_CONVERSION_FAILED", + 0x335B: "ER_SERVER_SLAVE_IGNORED_TABLE", + 0x335C: "ER_CANT_REPLICATE_ANONYMOUS_WITH_AUTO_POSITION", + 0x335D: "ER_CANT_REPLICATE_ANONYMOUS_WITH_GTID_MODE_ON", + 0x335E: "ER_CANT_REPLICATE_GTID_WITH_GTID_MODE_OFF", + 0x335F: "ER_SERVER_TEST_MESSAGE", 0x3360: "ER_AUDIT_LOG_JSON_FILTER_PARSING_ERROR", 0x3361: "ER_AUDIT_LOG_JSON_FILTERING_NOT_ENABLED", 0x3362: "ER_PLUGIN_FAILED_TO_OPEN_TABLES", @@ -4510,12 +4510,12 @@ 0x3367: "ER_AUDIT_LOG_NO_KEYRING_PLUGIN_INSTALLED", 0x3368: "ER_AUDIT_LOG_HOST_NAME_INVALID_CHARACTER", 0x3369: "ER_AUDIT_LOG_ENCRYPTION_PASSWORD_HAS_NOT_BEEN_SET", - 0x336a: "ER_AUDIT_LOG_COULD_NOT_CREATE_AES_KEY", - 0x336b: "ER_AUDIT_LOG_ENCRYPTION_PASSWORD_CANNOT_BE_FETCHED", - 0x336c: "ER_COULD_NOT_REINITIALIZE_AUDIT_LOG_FILTERS", - 0x336d: "ER_AUDIT_LOG_JSON_USER_NAME_CANNOT_BE_EMPTY", - 0x336e: "ER_AUDIT_LOG_USER_FIRST_CHARACTER_MUST_BE_ALPHANUMERIC", - 0x336f: "ER_AUDIT_LOG_JSON_FILTER_DOES_NOT_EXIST", + 0x336A: "ER_AUDIT_LOG_COULD_NOT_CREATE_AES_KEY", + 0x336B: "ER_AUDIT_LOG_ENCRYPTION_PASSWORD_CANNOT_BE_FETCHED", + 0x336C: "ER_COULD_NOT_REINITIALIZE_AUDIT_LOG_FILTERS", + 0x336D: "ER_AUDIT_LOG_JSON_USER_NAME_CANNOT_BE_EMPTY", + 0x336E: "ER_AUDIT_LOG_USER_FIRST_CHARACTER_MUST_BE_ALPHANUMERIC", + 0x336F: "ER_AUDIT_LOG_JSON_FILTER_DOES_NOT_EXIST", 0x3370: "ER_IB_MSG_1271", 0x3371: "ER_STARTING_INIT", 0x3372: "ER_ENDING_INIT", @@ -4526,12 +4526,12 @@ 0x3377: "ER_XA_REPLICATION_FILTERS", 0x3378: "ER_UPDATE_GTID_PURGED_WITH_GR", 0x3379: "ER_AUDIT_LOG_TABLE_DEFINITION_NOT_UPDATED", - 0x337a: "ER_NO_PATH_FOR_SHARED_LIBRARY", - 0x337b: "ER_UDF_ALREADY_EXISTS", - 0x337c: "ER_SET_EVENT_FAILED", - 0x337d: "ER_FAILED_TO_ALLOCATE_SSL_BIO", - 0x337e: "ER_IB_MSG_1273", - 0x337f: "ER_PID_FILEPATH_LOCATIONS_INACCESSIBLE", + 0x337A: "ER_NO_PATH_FOR_SHARED_LIBRARY", + 0x337B: "ER_UDF_ALREADY_EXISTS", + 0x337C: "ER_SET_EVENT_FAILED", + 0x337D: "ER_FAILED_TO_ALLOCATE_SSL_BIO", + 0x337E: "ER_IB_MSG_1273", + 0x337F: "ER_PID_FILEPATH_LOCATIONS_INACCESSIBLE", 0x3380: "ER_UNKNOWN_VARIABLE_IN_PERSISTED_CONFIG_FILE", 0x3381: "ER_FAILED_TO_HANDLE_DEFAULTS_FILE", 0x3382: "ER_DUPLICATE_SYS_VAR", diff --git a/zgrab2_schemas/zgrab2/ntp.py b/zgrab2_schemas/zgrab2/ntp.py index 95a62146b..54c604fdf 100644 --- a/zgrab2_schemas/zgrab2/ntp.py +++ b/zgrab2_schemas/zgrab2/ntp.py @@ -7,56 +7,69 @@ import zcrypto_schemas.zcrypto as zcrypto from . import zgrab2 -ntp_short = SubRecord({ - "seconds": Unsigned16BitInteger(), - "fraction": Unsigned16BitInteger(), -}) - -ntp_long = SubRecord({ - "seconds": Unsigned32BitInteger(), - "fraction": Unsigned32BitInteger(), -}) - -ntp_header = SubRecord({ - "leap_indicator": Unsigned8BitInteger(), - "version": Unsigned8BitInteger(), - "mode": Unsigned8BitInteger(), - "stratum": Unsigned8BitInteger(), - "poll": Signed8BitInteger(), - "precision": Signed8BitInteger(), - "root_delay": ntp_short, - "root_dispersion": ntp_short, - "reference_id": Binary(), - "reference_timestamp": ntp_long, - "origin_timestamp": ntp_long, - "receive_timestamp": ntp_long, - "transmit_timestamp": ntp_long, -}) - -mode7_header = SubRecord({ - "is_response": Boolean(), - "has_more": Boolean(), - "version": Unsigned8BitInteger(), - "mode": Unsigned8BitInteger(), - "is_authenticated": Boolean(), - "sequence_number": Unsigned8BitInteger(), - "implementation_number": String(), - "request_code": String(), - "error": String(), - "num_items": Unsigned16BitInteger(), - "mbz": Unsigned8BitInteger(), - "item_size": Unsigned16BitInteger(), -}) - -ntp_scan_response = SubRecord({ - "result": SubRecord({ +ntp_short = SubRecord( + { + "seconds": Unsigned16BitInteger(), + "fraction": Unsigned16BitInteger(), + } +) + +ntp_long = SubRecord( + { + "seconds": Unsigned32BitInteger(), + "fraction": Unsigned32BitInteger(), + } +) + +ntp_header = SubRecord( + { + "leap_indicator": Unsigned8BitInteger(), "version": Unsigned8BitInteger(), - "time": String(), - "time_response": ntp_header, - "monlist_response": Binary(), - "monlist_header": mode7_header, - }) -}, extends=zgrab2.base_scan_response) + "mode": Unsigned8BitInteger(), + "stratum": Unsigned8BitInteger(), + "poll": Signed8BitInteger(), + "precision": Signed8BitInteger(), + "root_delay": ntp_short, + "root_dispersion": ntp_short, + "reference_id": Binary(), + "reference_timestamp": ntp_long, + "origin_timestamp": ntp_long, + "receive_timestamp": ntp_long, + "transmit_timestamp": ntp_long, + } +) + +mode7_header = SubRecord( + { + "is_response": Boolean(), + "has_more": Boolean(), + "version": Unsigned8BitInteger(), + "mode": Unsigned8BitInteger(), + "is_authenticated": Boolean(), + "sequence_number": Unsigned8BitInteger(), + "implementation_number": String(), + "request_code": String(), + "error": String(), + "num_items": Unsigned16BitInteger(), + "mbz": Unsigned8BitInteger(), + "item_size": Unsigned16BitInteger(), + } +) + +ntp_scan_response = SubRecord( + { + "result": SubRecord( + { + "version": Unsigned8BitInteger(), + "time": String(), + "time_response": ntp_header, + "monlist_response": Binary(), + "monlist_header": mode7_header, + } + ) + }, + extends=zgrab2.base_scan_response, +) zschema.registry.register_schema("zgrab2-ntp", ntp_scan_response) diff --git a/zgrab2_schemas/zgrab2/oracle.py b/zgrab2_schemas/zgrab2/oracle.py index d0661c2ee..200c636ae 100644 --- a/zgrab2_schemas/zgrab2/oracle.py +++ b/zgrab2_schemas/zgrab2/oracle.py @@ -45,38 +45,92 @@ "Supervisor", ] -descriptor_entry = SubRecord({ - "key": WhitespaceAnalyzedString(doc="The dot-separated path to the descriptor", examples=["DESCRIPTION.ERR", "DESCRIPTION.CONNECT_DATA.CID.PROGRAM"]), - "value": WhitespaceAnalyzedString(doc="The descriptor value."), -}) +descriptor_entry = SubRecord( + { + "key": WhitespaceAnalyzedString( + doc="The dot-separated path to the descriptor", + examples=["DESCRIPTION.ERR", "DESCRIPTION.CONNECT_DATA.CID.PROGRAM"], + ), + "value": WhitespaceAnalyzedString(doc="The descriptor value."), + } +) -oracle_scan_response = SubRecord({ - "result": SubRecord({ - "handshake": SubRecord({ - "accept_version": Unsigned16BitInteger(doc="The protocol version number from the Accept packet."), - "global_service_options": FlagsSet(global_service_options, doc="Set of flags that the server returns in the Accept packet."), - "connect_flags0": FlagsSet(connect_flags, doc="The first set of ConnectFlags returned in the Accept packet."), - "connect_flags1": FlagsSet(connect_flags, doc="The second set of ConnectFlags returned in the Accept packet."), - "did_resend": Boolean(doc="True if the server sent a Resend packet request in response to the client's first Connect packet."), - "redirect_target_raw": WhitespaceAnalyzedString(doc="The connect descriptor returned by the server in the Redirect packet, if one is sent. Otherwise, omitted.", examples=[ - "(DESCRIPTION=(CONNECT_DATA=(SERVICE_NAME=theServiceName)(CID=(PROGRAM=zgrab2)(HOST=targethost)(USER=targetuser)))(ADDRESS=(PROTOCOL=TCP)(HOST=1.2.3.4)(PORT=1521)))" - ]), - "redirect_target": ListOf(descriptor_entry, doc="The parsed connect descriptor returned by the server in the redirect packet, if one is sent. Otherwise, omitted. The parsed descriptor is a list of objects with key and value, where the keys strings like 'DESCRIPTION.CONNECT_DATA.SERVICE_NAME'."), - "refuse_error_raw": WhitespaceAnalyzedString(doc="The data from the Refuse packet returned by the server; it is empty if the server does not return a Refuse packet.", examples=[ - "(DESCRIPTION=(ERR=1153)(VSNNUM=186647040)(ERROR_STACK=(ERROR=(CODE=1153)(EMFI=4)(ARGS='()'))(ERROR=(CODE=303)(EMFI=1))))" - ]), - "refuse_error": ListOf(descriptor_entry, doc="The parsed descriptor returned by the server in the Refuse packet; it is empty if the server does not return a Refuse packet. The keys are strings like 'DESCRIPTION.ERROR_STACK.ERROR.CODE'."), - "refuse_version": WhitespaceAnalyzedString(doc="The parsed DESCRIPTION.VSNNUM field from the RefuseError descriptor returned by the server in the Refuse packet, in dotted-decimal format.", examples=["11.2.0.2.0"]), - "refuse_reason_app": WhitespaceAnalyzedString(doc="The 'AppReason' returned by the server in the RefusePacket, as an 8-bit unsigned hex string. Omitted if the server did not send a Refuse packet.", examples=["0x22", "0x04"]), - "refuse_reason_sys": WhitespaceAnalyzedString(doc="The 'SysReason' returned by the server in the RefusePacket, as an 8-bit unsigned hex string. Omitted if the server did not send a Refuse packet.", examples=["0x00", "0x04"]), - "nsn_version": WhitespaceAnalyzedString(doc="The ReleaseVersion string (in dotted-decimal format) in the root of the Native Service Negotiation packet.", examples=["11.2.0.2.0"]), - "nsn_service_versions": SubRecord({ - service: WhitespaceAnalyzedString() for service in nsn_services - }, doc="A map from the native Service Negotation service names to the ReleaseVersion (in dotted-decimal format) in that service packet."), - }, doc="The log of the Oracle / TDS handshake process."), - "tls": zgrab2.tls_log, - }) -}, extends=zgrab2.base_scan_response) +oracle_scan_response = SubRecord( + { + "result": SubRecord( + { + "handshake": SubRecord( + { + "accept_version": Unsigned16BitInteger( + doc="The protocol version number from the Accept packet." + ), + "global_service_options": FlagsSet( + global_service_options, + doc="Set of flags that the server returns in the Accept packet.", + ), + "connect_flags0": FlagsSet( + connect_flags, + doc="The first set of ConnectFlags returned in the Accept packet.", + ), + "connect_flags1": FlagsSet( + connect_flags, + doc="The second set of ConnectFlags returned in the Accept packet.", + ), + "did_resend": Boolean( + doc="True if the server sent a Resend packet request in response to the client's first Connect packet." + ), + "redirect_target_raw": WhitespaceAnalyzedString( + doc="The connect descriptor returned by the server in the Redirect packet, if one is sent. Otherwise, omitted.", + examples=[ + "(DESCRIPTION=(CONNECT_DATA=(SERVICE_NAME=theServiceName)(CID=(PROGRAM=zgrab2)(HOST=targethost)(USER=targetuser)))(ADDRESS=(PROTOCOL=TCP)(HOST=1.2.3.4)(PORT=1521)))" + ], + ), + "redirect_target": ListOf( + descriptor_entry, + doc="The parsed connect descriptor returned by the server in the redirect packet, if one is sent. Otherwise, omitted. The parsed descriptor is a list of objects with key and value, where the keys strings like 'DESCRIPTION.CONNECT_DATA.SERVICE_NAME'.", + ), + "refuse_error_raw": WhitespaceAnalyzedString( + doc="The data from the Refuse packet returned by the server; it is empty if the server does not return a Refuse packet.", + examples=[ + "(DESCRIPTION=(ERR=1153)(VSNNUM=186647040)(ERROR_STACK=(ERROR=(CODE=1153)(EMFI=4)(ARGS='()'))(ERROR=(CODE=303)(EMFI=1))))" + ], + ), + "refuse_error": ListOf( + descriptor_entry, + doc="The parsed descriptor returned by the server in the Refuse packet; it is empty if the server does not return a Refuse packet. The keys are strings like 'DESCRIPTION.ERROR_STACK.ERROR.CODE'.", + ), + "refuse_version": WhitespaceAnalyzedString( + doc="The parsed DESCRIPTION.VSNNUM field from the RefuseError descriptor returned by the server in the Refuse packet, in dotted-decimal format.", + examples=["11.2.0.2.0"], + ), + "refuse_reason_app": WhitespaceAnalyzedString( + doc="The 'AppReason' returned by the server in the RefusePacket, as an 8-bit unsigned hex string. Omitted if the server did not send a Refuse packet.", + examples=["0x22", "0x04"], + ), + "refuse_reason_sys": WhitespaceAnalyzedString( + doc="The 'SysReason' returned by the server in the RefusePacket, as an 8-bit unsigned hex string. Omitted if the server did not send a Refuse packet.", + examples=["0x00", "0x04"], + ), + "nsn_version": WhitespaceAnalyzedString( + doc="The ReleaseVersion string (in dotted-decimal format) in the root of the Native Service Negotiation packet.", + examples=["11.2.0.2.0"], + ), + "nsn_service_versions": SubRecord( + { + service: WhitespaceAnalyzedString() + for service in nsn_services + }, + doc="A map from the native Service Negotation service names to the ReleaseVersion (in dotted-decimal format) in that service packet.", + ), + }, + doc="The log of the Oracle / TDS handshake process.", + ), + "tls": zgrab2.tls_log, + } + ) + }, + extends=zgrab2.base_scan_response, +) zschema.registry.register_schema("zgrab2-oracle", oracle_scan_response) diff --git a/zgrab2_schemas/zgrab2/pop3.py b/zgrab2_schemas/zgrab2/pop3.py index a6567c0d3..a5f35088e 100644 --- a/zgrab2_schemas/zgrab2/pop3.py +++ b/zgrab2_schemas/zgrab2/pop3.py @@ -7,16 +7,23 @@ import zcrypto_schemas.zcrypto as zcrypto from . import zgrab2 -pop3_scan_response = SubRecord({ - "result": SubRecord({ - "banner": String(doc="The POP3 banner."), - "noop": String(doc="The server's response to the NOOP command."), - "help": String(doc="The server's response to the HELP command."), - "starttls": String(doc="The server's response to the STARTTLS command."), - "quit": String(doc="The server's response to the QUIT command."), - "tls": zgrab2.tls_log, - }) -}, extends=zgrab2.base_scan_response) +pop3_scan_response = SubRecord( + { + "result": SubRecord( + { + "banner": String(doc="The POP3 banner."), + "noop": String(doc="The server's response to the NOOP command."), + "help": String(doc="The server's response to the HELP command."), + "starttls": String( + doc="The server's response to the STARTTLS command." + ), + "quit": String(doc="The server's response to the QUIT command."), + "tls": zgrab2.tls_log, + } + ) + }, + extends=zgrab2.base_scan_response, +) zschema.registry.register_schema("zgrab2-pop3", pop3_scan_response) diff --git a/zgrab2_schemas/zgrab2/postgres.py b/zgrab2_schemas/zgrab2/postgres.py index b53fccd4d..f964f22bb 100644 --- a/zgrab2_schemas/zgrab2/postgres.py +++ b/zgrab2_schemas/zgrab2/postgres.py @@ -13,60 +13,80 @@ # These are defined in detail at # https://www.postgresql.org/docs/10/static/protocol-error-fields.html -postgres_error = SubRecord({ - "severity": WhitespaceAnalyzedString(), - "severity_v": WhitespaceAnalyzedString(), - "code": WhitespaceAnalyzedString(), - "message": WhitespaceAnalyzedString(), - "detail": WhitespaceAnalyzedString(), - "hint": WhitespaceAnalyzedString(), - "position": WhitespaceAnalyzedString(), - "internal_position": WhitespaceAnalyzedString(), - "internal_query": WhitespaceAnalyzedString(), - "where": WhitespaceAnalyzedString(), - "schema": WhitespaceAnalyzedString(), - "table": WhitespaceAnalyzedString(), - "data": WhitespaceAnalyzedString(), - "constraint": WhitespaceAnalyzedString(), - "file": WhitespaceAnalyzedString(), - "line": WhitespaceAnalyzedString(), - "routine": WhitespaceAnalyzedString(), - "_unknown_error_tag": WhitespaceAnalyzedString(), -}) +postgres_error = SubRecord( + { + "severity": WhitespaceAnalyzedString(), + "severity_v": WhitespaceAnalyzedString(), + "code": WhitespaceAnalyzedString(), + "message": WhitespaceAnalyzedString(), + "detail": WhitespaceAnalyzedString(), + "hint": WhitespaceAnalyzedString(), + "position": WhitespaceAnalyzedString(), + "internal_position": WhitespaceAnalyzedString(), + "internal_query": WhitespaceAnalyzedString(), + "where": WhitespaceAnalyzedString(), + "schema": WhitespaceAnalyzedString(), + "table": WhitespaceAnalyzedString(), + "data": WhitespaceAnalyzedString(), + "constraint": WhitespaceAnalyzedString(), + "file": WhitespaceAnalyzedString(), + "line": WhitespaceAnalyzedString(), + "routine": WhitespaceAnalyzedString(), + "_unknown_error_tag": WhitespaceAnalyzedString(), + } +) # modules/postgres/scanner.go - decodeAuthMode() AUTH_MODES = [ - "kerberos_v5", "password_cleartext", "password_md5", "scm_credentials", - "gss", "sspi", "sasl", "ok", "gss-continue", "sasl-continue", "sasl-final" + "kerberos_v5", + "password_cleartext", + "password_md5", + "scm_credentials", + "gss", + "sspi", + "sasl", + "ok", + "gss-continue", + "sasl-continue", + "sasl-final", ] # modules/postgres/scanner.go: AuthenticationMode -postgres_auth_mode = SubRecord({ - "mode": Enum(values=AUTH_MODES, required=False), # this gets lifted - "Payload": Binary(), -}) +postgres_auth_mode = SubRecord( + { + "mode": Enum(values=AUTH_MODES, required=False), # this gets lifted + "Payload": Binary(), + } +) # modules/postgres/scanner.go: BackendKeyData -postgres_key_data = SubRecord({ - "process_id": Unsigned32BitInteger(), - "secret_key": Unsigned32BitInteger(), -}) +postgres_key_data = SubRecord( + { + "process_id": Unsigned32BitInteger(), + "secret_key": Unsigned32BitInteger(), + } +) # modules/postgres/scanner.go: PostgresResults -postgres_scan_response = SubRecord({ - "result": SubRecord({ - "tls": zgrab2.tls_log, - "supported_versions": WhitespaceAnalyzedString(), - "protocol_error": postgres_error, - "startup_error": postgres_error, - "is_ssl": Boolean(), - "authentication_mode": postgres_auth_mode, - # TODO FIXME: This is currendly an unconstrained map[string]string - "server_parameters": WhitespaceAnalyzedString(), - "backend_key_data": postgres_key_data, - "transaction_status": WhitespaceAnalyzedString(), - }) -}, extends=zgrab2.base_scan_response) +postgres_scan_response = SubRecord( + { + "result": SubRecord( + { + "tls": zgrab2.tls_log, + "supported_versions": WhitespaceAnalyzedString(), + "protocol_error": postgres_error, + "startup_error": postgres_error, + "is_ssl": Boolean(), + "authentication_mode": postgres_auth_mode, + # TODO FIXME: This is currendly an unconstrained map[string]string + "server_parameters": WhitespaceAnalyzedString(), + "backend_key_data": postgres_key_data, + "transaction_status": WhitespaceAnalyzedString(), + } + ) + }, + extends=zgrab2.base_scan_response, +) zschema.registry.register_schema("zgrab2-postgres", postgres_scan_response) diff --git a/zgrab2_schemas/zgrab2/redis.py b/zgrab2_schemas/zgrab2/redis.py index a909a65ed..e53f3d73d 100644 --- a/zgrab2_schemas/zgrab2/redis.py +++ b/zgrab2_schemas/zgrab2/redis.py @@ -7,45 +7,106 @@ import zcrypto_schemas.zcrypto as zcrypto from . import zgrab2 -redis_scan_response = SubRecord({ - "result": SubRecord({ - "commands": ListOf(String(), doc="The list of commands actually sent to the server, serialized in inline format, like 'PING' or 'AUTH somePassword'."), - "raw_command_output": ListOf(Binary(), doc="The raw output returned by the server for each command sent; the indices match those of commands."), - "ping_response": String(doc="The response from the PING command; should either be \"PONG\" or an authentication error.", examples=[ - "PONG", - "(Error: NOAUTH Authentication required.)", - ]), - "info_response": String(doc="The response from the INFO command. Should be a series of key:value pairs separated by CRLFs.", examples=[ - "# Server\r\nredis_version:4.0.7\r\nkey2:value2\r\n", - "(Error: NOAUTH Authentication required.)", - ]), - "auth_response": String(doc="The response from the AUTH command, if sent."), - "nonexistent_response": String(doc="The response from the NONEXISTENT command.", examples=[ - "(Error: ERR unknown command 'NONEXISTENT')", - ]), - "quit_response": String(doc="The response to the QUIT command.", examples=["OK"]), - "version": String(doc="The version string, read from the the info_response (if available)."), - "major": Unsigned32BitInteger(doc="Major is the version's major number."), - "minor": Unsigned32BitInteger(doc="Minor is the version's minor number."), - "patchlevel": Unsigned32BitInteger(doc="Patchlevel is the version's patchlevel number."), - "os": String(doc="The OS the Redis server is running, read from the the info_response (if available)."), - "mode": String(doc="The mode the Redis server is running (standalone or cluster), read from the the info_response (if available)."), - "git_sha1": String(doc="The Sha-1 Git commit hash the Redis server used."), - "build_id": String(doc="The Build ID of the Redis server."), - "arch_bits": String(doc="The architecture bits (32 or 64) the Redis server used to build."), - "gcc_version": String(doc="The version of the GCC compiler used to compile the Redis server."), - "mem_allocator": String(doc="The memory allocator."), - "uptime_in_seconds": Unsigned32BitInteger(doc="The number of seconds since Redis server start."), - "used_memory": Unsigned32BitInteger(doc="The total number of bytes allocated by Redis using its allocator."), - "total_connections_received": Unsigned32BitInteger(doc="The total number of connections accepted by the server."), - "total_commands_processed": Unsigned32BitInteger(doc="The total number of commands processed by the server."), - "custom_responses": ListOf(SubRecord({ - "command": String(doc="The command portion of the command sent."), - "arguments": String(doc="The arguments portion of the command sent."), - "response": String(doc="The response from the sent command and arguments."), - }), doc="The responses from the user-passed custom commands."), - }) -}, extends=zgrab2.base_scan_response) +redis_scan_response = SubRecord( + { + "result": SubRecord( + { + "commands": ListOf( + String(), + doc="The list of commands actually sent to the server, serialized in inline format, like 'PING' or 'AUTH somePassword'.", + ), + "raw_command_output": ListOf( + Binary(), + doc="The raw output returned by the server for each command sent; the indices match those of commands.", + ), + "ping_response": String( + doc='The response from the PING command; should either be "PONG" or an authentication error.', + examples=[ + "PONG", + "(Error: NOAUTH Authentication required.)", + ], + ), + "info_response": String( + doc="The response from the INFO command. Should be a series of key:value pairs separated by CRLFs.", + examples=[ + "# Server\r\nredis_version:4.0.7\r\nkey2:value2\r\n", + "(Error: NOAUTH Authentication required.)", + ], + ), + "auth_response": String( + doc="The response from the AUTH command, if sent." + ), + "nonexistent_response": String( + doc="The response from the NONEXISTENT command.", + examples=[ + "(Error: ERR unknown command 'NONEXISTENT')", + ], + ), + "quit_response": String( + doc="The response to the QUIT command.", examples=["OK"] + ), + "version": String( + doc="The version string, read from the the info_response (if available)." + ), + "major": Unsigned32BitInteger( + doc="Major is the version's major number." + ), + "minor": Unsigned32BitInteger( + doc="Minor is the version's minor number." + ), + "patchlevel": Unsigned32BitInteger( + doc="Patchlevel is the version's patchlevel number." + ), + "os": String( + doc="The OS the Redis server is running, read from the the info_response (if available)." + ), + "mode": String( + doc="The mode the Redis server is running (standalone or cluster), read from the the info_response (if available)." + ), + "git_sha1": String( + doc="The Sha-1 Git commit hash the Redis server used." + ), + "build_id": String(doc="The Build ID of the Redis server."), + "arch_bits": String( + doc="The architecture bits (32 or 64) the Redis server used to build." + ), + "gcc_version": String( + doc="The version of the GCC compiler used to compile the Redis server." + ), + "mem_allocator": String(doc="The memory allocator."), + "uptime_in_seconds": Unsigned32BitInteger( + doc="The number of seconds since Redis server start." + ), + "used_memory": Unsigned32BitInteger( + doc="The total number of bytes allocated by Redis using its allocator." + ), + "total_connections_received": Unsigned32BitInteger( + doc="The total number of connections accepted by the server." + ), + "total_commands_processed": Unsigned32BitInteger( + doc="The total number of commands processed by the server." + ), + "custom_responses": ListOf( + SubRecord( + { + "command": String( + doc="The command portion of the command sent." + ), + "arguments": String( + doc="The arguments portion of the command sent." + ), + "response": String( + doc="The response from the sent command and arguments." + ), + } + ), + doc="The responses from the user-passed custom commands.", + ), + } + ) + }, + extends=zgrab2.base_scan_response, +) zschema.registry.register_schema("zgrab2-redis", redis_scan_response) diff --git a/zgrab2_schemas/zgrab2/siemens.py b/zgrab2_schemas/zgrab2/siemens.py index 1e1ce3fd4..526dc9c09 100644 --- a/zgrab2_schemas/zgrab2/siemens.py +++ b/zgrab2_schemas/zgrab2/siemens.py @@ -7,26 +7,31 @@ import zcrypto_schemas.zcrypto as zcrypto from . import zgrab2 -siemens_scan_response = SubRecord({ - 'result': SubRecord({ - 'is_s7': Boolean(), - 'system': String(), - 'module': String(), - 'plant_id': String(), - 'copyright': String(), - 'serial_number': String(), - 'module_type': String(), - 'reserved_for_os': String(), - 'memory_serial_number': String(), - 'cpu_profile': String(), - 'oem_id': String(), - 'location': String(), - 'module_id': String(), - 'hardware': String(), - 'firmware': String(), - }) -}, extends=zgrab2.base_scan_response) +siemens_scan_response = SubRecord( + { + "result": SubRecord( + { + "is_s7": Boolean(), + "system": String(), + "module": String(), + "plant_id": String(), + "copyright": String(), + "serial_number": String(), + "module_type": String(), + "reserved_for_os": String(), + "memory_serial_number": String(), + "cpu_profile": String(), + "oem_id": String(), + "location": String(), + "module_id": String(), + "hardware": String(), + "firmware": String(), + } + ) + }, + extends=zgrab2.base_scan_response, +) -zschema.registry.register_schema('zgrab2-siemens', siemens_scan_response) +zschema.registry.register_schema("zgrab2-siemens", siemens_scan_response) -zgrab2.register_scan_response_type('siemens', siemens_scan_response) +zgrab2.register_scan_response_type("siemens", siemens_scan_response) diff --git a/zgrab2_schemas/zgrab2/smb.py b/zgrab2_schemas/zgrab2/smb.py index f1ac8c581..1798bbf2b 100644 --- a/zgrab2_schemas/zgrab2/smb.py +++ b/zgrab2_schemas/zgrab2/smb.py @@ -8,68 +8,100 @@ from . import zgrab2 header_log = { - 'protocol_id': Binary(), - 'status': Unsigned32BitInteger(), - 'command': Unsigned16BitInteger(), - 'credits': Unsigned16BitInteger(), - 'flags': Unsigned32BitInteger(), + "protocol_id": Binary(), + "status": Unsigned32BitInteger(), + "command": Unsigned16BitInteger(), + "credits": Unsigned16BitInteger(), + "flags": Unsigned32BitInteger(), } # Return a (shallow) copy of base, with the fields of new merged atop it def extended(base, new): - copy = { - k: v for k, v in base.items() - } + copy = {k: v for k, v in base.items()} for k, v in new.items(): copy[k] = v return copy -negotiate_log = SubRecord(extended(header_log, { - 'security_mode': Unsigned16BitInteger(), - 'dialect_revision': Unsigned16BitInteger(), - 'server_guid': Binary(), - 'capabilities': Unsigned32BitInteger(), - 'system_time': Unsigned32BitInteger(), - 'server_start_time': Unsigned32BitInteger(), - 'authentication_types': ListOf(String()), -})) +negotiate_log = SubRecord( + extended( + header_log, + { + "security_mode": Unsigned16BitInteger(), + "dialect_revision": Unsigned16BitInteger(), + "server_guid": Binary(), + "capabilities": Unsigned32BitInteger(), + "system_time": Unsigned32BitInteger(), + "server_start_time": Unsigned32BitInteger(), + "authentication_types": ListOf(String()), + }, + ) +) -session_setup_log = SubRecord(extended(header_log, { - 'setup_flags': Unsigned16BitInteger(), - 'target_name': String(), - 'negotiate_flags': Unsigned32BitInteger(), -})) +session_setup_log = SubRecord( + extended( + header_log, + { + "setup_flags": Unsigned16BitInteger(), + "target_name": String(), + "negotiate_flags": Unsigned32BitInteger(), + }, + ) +) -smb_scan_response = SubRecord({ - 'result': SubRecord({ - 'smbv1_support': Boolean(), - "smb_version": SubRecord({ - "major": Unsigned8BitInteger(doc="Major version"), - "minor": Unsigned8BitInteger(doc="Minor version"), - "revision": Unsigned8BitInteger(doc="Protocol Revision"), - "version_string": String(doc="Full SMB Version String"), - }), - "native_os": String(doc="Operating system claimed by server"), - "ntlm": String(doc="Native LAN Manager"), - "group_name": String(doc="Group name"), - "smb_capabilities": SubRecord({ - "smb_dfs_support": Boolean(doc="Server supports Distributed File System"), - "smb_leasing_support": Boolean(doc="Server supports Leasing"), - "smb_multicredit_support": Boolean(doc="Server supports multi-credit operations"), - "smb_multchan_support": Boolean(doc="Server supports multiple channels per session"), - "smb_persistent_handle_support": Boolean(doc="Server supports persistent handles"), - "smb_directory_leasing_support": Boolean(doc="Server supports directory leasing"), - "smb_encryption_support": Boolean(doc="Server supports encryption"), - }, doc="Capabilities flags for the connection. See [MS-SMB2] Sect. 2.2.4."), - 'negotiation_log': negotiate_log, - 'has_ntlm': Boolean(doc="Server supports the NTLM authentication method"), - 'session_setup_log': session_setup_log, - }) -}, extends=zgrab2.base_scan_response) +smb_scan_response = SubRecord( + { + "result": SubRecord( + { + "smbv1_support": Boolean(), + "smb_version": SubRecord( + { + "major": Unsigned8BitInteger(doc="Major version"), + "minor": Unsigned8BitInteger(doc="Minor version"), + "revision": Unsigned8BitInteger(doc="Protocol Revision"), + "version_string": String(doc="Full SMB Version String"), + } + ), + "native_os": String(doc="Operating system claimed by server"), + "ntlm": String(doc="Native LAN Manager"), + "group_name": String(doc="Group name"), + "smb_capabilities": SubRecord( + { + "smb_dfs_support": Boolean( + doc="Server supports Distributed File System" + ), + "smb_leasing_support": Boolean(doc="Server supports Leasing"), + "smb_multicredit_support": Boolean( + doc="Server supports multi-credit operations" + ), + "smb_multchan_support": Boolean( + doc="Server supports multiple channels per session" + ), + "smb_persistent_handle_support": Boolean( + doc="Server supports persistent handles" + ), + "smb_directory_leasing_support": Boolean( + doc="Server supports directory leasing" + ), + "smb_encryption_support": Boolean( + doc="Server supports encryption" + ), + }, + doc="Capabilities flags for the connection. See [MS-SMB2] Sect. 2.2.4.", + ), + "negotiation_log": negotiate_log, + "has_ntlm": Boolean( + doc="Server supports the NTLM authentication method" + ), + "session_setup_log": session_setup_log, + } + ) + }, + extends=zgrab2.base_scan_response, +) -zschema.registry.register_schema('zgrab2-smb', smb_scan_response) +zschema.registry.register_schema("zgrab2-smb", smb_scan_response) -zgrab2.register_scan_response_type('smb', smb_scan_response) +zgrab2.register_scan_response_type("smb", smb_scan_response) diff --git a/zgrab2_schemas/zgrab2/smtp.py b/zgrab2_schemas/zgrab2/smtp.py index 46f46eef4..5399b0f00 100644 --- a/zgrab2_schemas/zgrab2/smtp.py +++ b/zgrab2_schemas/zgrab2/smtp.py @@ -7,17 +7,22 @@ import zcrypto_schemas.zcrypto as zcrypto from . import zgrab2 -smtp_scan_response = SubRecord({ - "result": SubRecord({ - "banner": String(), - "ehlo": String(), - "helo": String(), - "help": String(), - "starttls": String(), - "quit": String(), - "tls": zgrab2.tls_log, - }) -}, extends=zgrab2.base_scan_response) +smtp_scan_response = SubRecord( + { + "result": SubRecord( + { + "banner": String(), + "ehlo": String(), + "helo": String(), + "help": String(), + "starttls": String(), + "quit": String(), + "tls": zgrab2.tls_log, + } + ) + }, + extends=zgrab2.base_scan_response, +) zschema.registry.register_schema("zgrab2-smtp", smtp_scan_response) diff --git a/zgrab2_schemas/zgrab2/ssh.py b/zgrab2_schemas/zgrab2/ssh.py index f9a216fda..13c0d05ca 100644 --- a/zgrab2_schemas/zgrab2/ssh.py +++ b/zgrab2_schemas/zgrab2/ssh.py @@ -25,7 +25,7 @@ "curve25519-sha256@libssh.org", "diffie-hellman-group-exchange-sha1", "diffie-hellman-group-exchange-sha256", - ] + ], ) KexAlgorithms = ListOf.with_args(KexAlgorithm()) @@ -47,169 +47,232 @@ "ecdsa-sha2-nistp384", "ecdsa-sha2-nistp521", "ssh-ed25519", - ] + ], ) KeyAlgorithms = ListOf.with_args(KeyAlgorithm()) # From lib/ssh/common.go -- allSupportedCiphers CipherAlgorithm = String.with_args( - doc="An ssh cipher algorithm identifier, named according to section 6 of https://www.ietf.org/rfc/rfc4251.txt; see https://www.iana.org/assignments/ssh-parameters/ssh-parameters.xhtml#ssh-parameters-16 for standard values.", + doc="An ssh cipher algorithm identifier, named according to section 6 of https://www.ietf.org/rfc/rfc4251.txt; see https://www.iana.org/assignments/ssh-parameters/ssh-parameters.xhtml#ssh-parameters-16 for standard values.", examples=[ - "aes128-ctr", "aes192-ctr", "aes256-ctr", "aes128-gcm@openssh.com", - "aes128-cbc", "3des-cbc", "arcfour256", "arcfour128", "arcfour", - ] + "aes128-ctr", + "aes192-ctr", + "aes256-ctr", + "aes128-gcm@openssh.com", + "aes128-cbc", + "3des-cbc", + "arcfour256", + "arcfour128", + "arcfour", + ], ) CipherAlgorithms = ListOf.with_args(CipherAlgorithm()) -# From lib/ssh/common.go -- supportedMACs. +# From lib/ssh/common.go -- supportedMACs. MACAlgorithm = String.with_args( doc="An ssh MAC algorithm identifier, named according to section 6 of https://www.ietf.org/rfc/rfc4251.txt; see https://www.iana.org/assignments/ssh-parameters/ssh-parameters.xhtml#ssh-parameters-18 for standard values.", - examples=["hmac-sha2-256", "hmac-sha1", "hmac-sha1-96"] + examples=["hmac-sha2-256", "hmac-sha1", "hmac-sha1-96"], ) MACAlgorithms = ListOf.with_args(MACAlgorithm()) # From lib/ssh/common.go -- supportedCompressions CompressionAlgorithm = String.with_args( doc="An ssh compression algorithm identifier, named according to section 6 of https://www.ietf.org/rfc/rfc4251.txt; see https://www.iana.org/assignments/ssh-parameters/ssh-parameters.xhtml#ssh-parameters-20 for standard values.", - examples=["none", "zlib"] + examples=["none", "zlib"], ) CompressionAlgorithms = ListOf.with_args(CompressionAlgorithm()) -LanguageTag = String.with_args(doc="A language tag, as defined in https://www.ietf.org/rfc/rfc3066.txt.") -LanguageTags = ListOf.with_args(LanguageTag(), doc="A name-list of language tags in order of preference.") +LanguageTag = String.with_args( + doc="A language tag, as defined in https://www.ietf.org/rfc/rfc3066.txt." +) +LanguageTags = ListOf.with_args( + LanguageTag(), doc="A name-list of language tags in order of preference." +) # zgrab2/lib/ssh/messages.go: (Json)kexInitMsg -KexInitMessage = SubRecordType({ - "cookie": Binary(), - "kex_algorithms": KexAlgorithms(doc="Key exchange algorithms used in the handshake."), - "host_key_algorithms": KeyAlgorithms(doc="Asymmetric key algorithms for the host key supported by the client."), - "client_to_server_ciphers": CipherAlgorithms(), - "server_to_client_ciphers": CipherAlgorithms(), - "client_to_server_macs": MACAlgorithms(), - "server_to_client_macs": MACAlgorithms(), - "client_to_server_compression": CompressionAlgorithms(), - "server_to_client_compression": CompressionAlgorithms(), - "client_to_server_languages": LanguageTags(), - "server_to_client_languages": LanguageTags(), - "first_kex_follows": Boolean(), - "reserved": Unsigned32BitInteger(), -}) +KexInitMessage = SubRecordType( + { + "cookie": Binary(), + "kex_algorithms": KexAlgorithms( + doc="Key exchange algorithms used in the handshake." + ), + "host_key_algorithms": KeyAlgorithms( + doc="Asymmetric key algorithms for the host key supported by the client." + ), + "client_to_server_ciphers": CipherAlgorithms(), + "server_to_client_ciphers": CipherAlgorithms(), + "client_to_server_macs": MACAlgorithms(), + "server_to_client_macs": MACAlgorithms(), + "client_to_server_compression": CompressionAlgorithms(), + "server_to_client_compression": CompressionAlgorithms(), + "client_to_server_languages": LanguageTags(), + "server_to_client_languages": LanguageTags(), + "first_kex_follows": Boolean(), + "reserved": Unsigned32BitInteger(), + "serverHaSSH": String(), + } +) # zgrab2/lib/ssh/log.go: EndpointId -EndpointID = SubRecordType({ - "raw": String(), - "version": String(), - "software": String(), - "comment": String(), -}) +EndpointID = SubRecordType( + { + "raw": String(), + "version": String(), + "software": String(), + "comment": String(), + } +) # This could be merged into a single class with e.g. an analyzed param, # but it's probably clearer to just duplicate it. -AnalyzedEndpointID = SubRecordType({ - "raw": AnalyzedString(), - "version": String(), - "software": AnalyzedString(), - "comment": AnalyzedString(), -}) +AnalyzedEndpointID = SubRecordType( + { + "raw": AnalyzedString(), + "version": String(), + "software": AnalyzedString(), + "comment": AnalyzedString(), + } +) # zgrab2/lib/ssh/kex.go: kexResult -KexResult = SubRecordType({ - "H": Binary(), - "K": Binary(), - "session_id": Binary() -}) +KexResult = SubRecordType({"H": Binary(), "K": Binary(), "session_id": Binary()}) # zgrab2/lib/ssh/keys.go: ed25519PublicKey -ED25519PublicKey = SubRecordType({ - "public_bytes": Binary(), -}) +ED25519PublicKey = SubRecordType( + { + "public_bytes": Binary(), + } +) # zgrab2/lib/ssh/kex.go: curve25519sha256JsonLogParameters (via curve25519sha256) -Curve25519SHA256Params = SubRecordType({ - "client_public": Binary(required=False), - "client_private": Binary(required=False), - "server_public": Binary(required=False), -}) +Curve25519SHA256Params = SubRecordType( + { + "client_public": Binary(required=False), + "client_private": Binary(required=False), + "server_public": Binary(required=False), + } +) # zgrab2/lib/ssh/certs.go: JsonSignature -Signature = SubRecordType({ - "parsed": SubRecord({ - "algorithm": KeyAlgorithm(), - "value": Binary(), - }), - "raw": Binary(), - "h": Binary(), -}) +Signature = SubRecordType( + { + "parsed": SubRecord( + { + "algorithm": KeyAlgorithm(), + "value": Binary(), + } + ), + "raw": Binary(), + "h": Binary(), + } +) # lib/ssh/kex.go: PublicKeyJsonLog, sans the certkey_public_key (since that would create a loop) -SSHPublicKey = SubRecordType({ - "raw": Binary(), - "fingerprint_sha256": String(), - # TODO: Enum? Obviously must serialize to one of rsa/dsa/ecdsa/ed25519_public_key... - "algorithm": String(), - # For compatiblity with ztag - "key_algorithm":String(), - "rsa_public_key": zcrypto.RSAPublicKey(), - "dsa_public_key": zcrypto.DSAPublicKey(), - "ecdsa_public_key": zcrypto.ECDSAPublicKey(), - "ed25519_public_key": ED25519PublicKey(), -}) +SSHPublicKey = SubRecordType( + { + "raw": Binary(), + "fingerprint_sha256": String(), + # TODO: Enum? Obviously must serialize to one of rsa/dsa/ecdsa/ed25519_public_key... + "algorithm": String(), + # For compatiblity with ztag + "key_algorithm": String(), + "rsa_public_key": zcrypto.RSAPublicKey(), + "dsa_public_key": zcrypto.DSAPublicKey(), + "ecdsa_public_key": zcrypto.ECDSAPublicKey(), + "ed25519_public_key": ED25519PublicKey(), + } +) # lib/ssh/certs.go: JsonCertType -CertType = SubRecordType({ - "id": Unsigned32BitInteger(doc="The numerical certificate type value. 1 identifies user certificates, 2 identifies host certificates."), - "name": Enum(values=["USER", "HOST", "unknown"], doc="The human-readable name for the certificate type."), -}) +CertType = SubRecordType( + { + "id": Unsigned32BitInteger( + doc="The numerical certificate type value. 1 identifies user certificates, 2 identifies host certificates." + ), + "name": Enum( + values=["USER", "HOST", "unknown"], + doc="The human-readable name for the certificate type.", + ), + } +) # lib/ssh/certs.go: JsonCertificate -SSHPublicKeyCert = SubRecord.with_args({ - # TODO: Use / include our cert type here, or maybe somewhere else in the response? - "certkey_public_key": SubRecord({ - "nonce": Binary(), - # Note that this is not recursive, since SSHPublicKey() does not include certkey_public_key. - "key": SSHPublicKey(), - "serial": String(doc="The certificate serial number, encoded as a base-10 string."), - "cert_type": CertType(), - "key_id": String(doc="A free-form text field filled in by the CA at the time of signing, intended to identify the principal in log messages."), - "valid_principals": ListOf(String(), doc="Names for which this certificate is valid; hostnames for cert_type=HOST certificates and usernames for cert_type=USER certificates."), - "validity": SubRecord({ - "valid_after": DateTime(doc="Timestamp of when certificate is first valid. Timezone is UTC."), - "valid_before": DateTime(doc="Timestamp of when certificate expires. Timezone is UTC."), - "length": Signed64BitInteger(), - }), - "reserved": Binary(), - "signature_key": SSHPublicKey(), - "signature": Signature(), - "parse_error": String(), - "extensions": SubRecord({ - "known": SubRecord({ - "permit_X11_forwarding": String(), - "permit_agent_forwarding": String(), - "permit_port_forwarding": String(), - "permit_pty": String(), - "permit_user_rc": String(), - }), - "unknown": ListOf(String()), - }), - "critical_options": SubRecord({ - "known": SubRecord({ - "force_command": String(), - "source_address": String(), - }), - "unknown": ListOf(String()), - }) - }) -}, extends=SSHPublicKey()) +SSHPublicKeyCert = SubRecord.with_args( + { + # TODO: Use / include our cert type here, or maybe somewhere else in the response? + "certkey_public_key": SubRecord( + { + "nonce": Binary(), + # Note that this is not recursive, since SSHPublicKey() does not include certkey_public_key. + "key": SSHPublicKey(), + "serial": String( + doc="The certificate serial number, encoded as a base-10 string." + ), + "cert_type": CertType(), + "key_id": String( + doc="A free-form text field filled in by the CA at the time of signing, intended to identify the principal in log messages." + ), + "valid_principals": ListOf( + String(), + doc="Names for which this certificate is valid; hostnames for cert_type=HOST certificates and usernames for cert_type=USER certificates.", + ), + "validity": SubRecord( + { + "valid_after": DateTime( + doc="Timestamp of when certificate is first valid. Timezone is UTC." + ), + "valid_before": DateTime( + doc="Timestamp of when certificate expires. Timezone is UTC." + ), + "length": Signed64BitInteger(), + } + ), + "reserved": Binary(), + "signature_key": SSHPublicKey(), + "signature": Signature(), + "parse_error": String(), + "extensions": SubRecord( + { + "known": SubRecord( + { + "permit_X11_forwarding": String(), + "permit_agent_forwarding": String(), + "permit_port_forwarding": String(), + "permit_pty": String(), + "permit_user_rc": String(), + } + ), + "unknown": ListOf(String()), + } + ), + "critical_options": SubRecord( + { + "known": SubRecord( + { + "force_command": String(), + "source_address": String(), + } + ), + "unknown": ListOf(String()), + } + ), + } + ) + }, + extends=SSHPublicKey(), +) # zgrab2/lib/ssh/common.go: directionAlgorithms -DirectionAlgorithms = SubRecordType({ - "cipher": CipherAlgorithm(), - "mac": MACAlgorithm(), - "compression": CompressionAlgorithm(), -}) +DirectionAlgorithms = SubRecordType( + { + "cipher": CipherAlgorithm(), + "mac": MACAlgorithm(), + "compression": CompressionAlgorithm(), + } +) # zgrab2/lib/ssh/kex.go: interface kexAlgorithm # Searching usages of kexAlgorithm turns up: @@ -217,37 +280,46 @@ # - ecdh: ecdh_params, server_signature, server_host_key # - curve25519sha256: curve25519_sha256_params, server_signature, server_host_key # - dhGEXSHA: dh_params, server_signature, server_host_key -KeyExchange = SubRecordType({ - "curve25519_sha256_params": Curve25519SHA256Params(), - "ecdh_params": zcrypto.ECDHParams(), - "dh_params": zcrypto.DHParams(), - "server_signature": Signature(), - "server_host_key": SSHPublicKeyCert(), -}) +KeyExchange = SubRecordType( + { + "curve25519_sha256_params": Curve25519SHA256Params(), + "ecdh_params": zcrypto.ECDHParams(), + "dh_params": zcrypto.DHParams(), + "server_signature": Signature(), + "server_host_key": SSHPublicKeyCert(), + } +) # zgrab2/lib/ssh/common.go: algorithms (aux in MarshalJSON) -AlgorithmSelection = SubRecordType({ - "dh_kex_algorithm": KexAlgorithm(), - "host_key_algorithm": KeyAlgorithm(), - "client_to_server_alg_group": DirectionAlgorithms(), - "server_to_client_alg_group": DirectionAlgorithms(), -}) +AlgorithmSelection = SubRecordType( + { + "dh_kex_algorithm": KexAlgorithm(), + "host_key_algorithm": KeyAlgorithm(), + "client_to_server_alg_group": DirectionAlgorithms(), + "server_to_client_alg_group": DirectionAlgorithms(), + } +) # zgrab2/lib/ssh/log.go: HandshakeLog # TODO: Can ssh re-use any of the generic TLS model? -ssh_scan_response = SubRecord({ - "result": SubRecord({ - "banner": WhitespaceAnalyzedString(), - "server_id": AnalyzedEndpointID(), - "client_id": EndpointID(), - "server_key_exchange": KexInitMessage(), - "client_key_exchange": KexInitMessage(), - "algorithm_selection": AlgorithmSelection(), - "key_exchange": KeyExchange(), - "userauth": ListOf(String()), - "crypto": KexResult(), - }) -}, extends=zgrab2.base_scan_response) +ssh_scan_response = SubRecord( + { + "result": SubRecord( + { + "banner": WhitespaceAnalyzedString(), + "server_id": AnalyzedEndpointID(), + "client_id": EndpointID(), + "server_key_exchange": KexInitMessage(), + "client_key_exchange": KexInitMessage(), + "algorithm_selection": AlgorithmSelection(), + "key_exchange": KeyExchange(), + "userauth": ListOf(String()), + "crypto": KexResult(), + } + ) + }, + extends=zgrab2.base_scan_response, +) zschema.registry.register_schema("zgrab2-ssh", ssh_scan_response) zgrab2.register_scan_response_type("ssh", ssh_scan_response) diff --git a/zgrab2_schemas/zgrab2/telnet.py b/zgrab2_schemas/zgrab2/telnet.py index 74fa19510..235ebe43b 100644 --- a/zgrab2_schemas/zgrab2/telnet.py +++ b/zgrab2_schemas/zgrab2/telnet.py @@ -7,20 +7,27 @@ import zcrypto_schemas.zcrypto as zcrypto from . import zgrab2 -telnet_option = SubRecord({ - "name": String(), - "value": Unsigned16BitInteger(), -}) +telnet_option = SubRecord( + { + "name": String(), + "value": Unsigned16BitInteger(), + } +) -telnet_scan_response = SubRecord({ - "result": SubRecord({ - "banner": String(), - "will": ListOf(telnet_option), - "do": ListOf(telnet_option), - "wont": ListOf(telnet_option), - "dont": ListOf(telnet_option), - }) -}, extends=zgrab2.base_scan_response) +telnet_scan_response = SubRecord( + { + "result": SubRecord( + { + "banner": String(), + "will": ListOf(telnet_option), + "do": ListOf(telnet_option), + "wont": ListOf(telnet_option), + "dont": ListOf(telnet_option), + } + ) + }, + extends=zgrab2.base_scan_response, +) zschema.registry.register_schema("zgrab2-telnet", telnet_scan_response) diff --git a/zgrab2_schemas/zgrab2/tests.py b/zgrab2_schemas/zgrab2/tests.py index bb5117634..d49bc4f38 100644 --- a/zgrab2_schemas/zgrab2/tests.py +++ b/zgrab2_schemas/zgrab2/tests.py @@ -17,21 +17,24 @@ import zschema import zschema.registry + def get_data_dir(): - return os.path.join(os.path.dirname(os.path.abspath(__file__)), 'testdata') + return os.path.join(os.path.dirname(os.path.abspath(__file__)), "testdata") + def get_data_file(file): return os.path.join(get_data_dir(), file) + def get_data_files(): dir = get_data_dir() files = os.listdir(dir) - return [ - file for file in files if file.endswith(".json") - ] + return [file for file in files if file.endswith(".json")] + def get_schemas(): - return [ item for item in zgrab2.scan_response_types ] + return [item for item in zgrab2.scan_response_types] + class SchemaTests(unittest.TestCase): diff --git a/zgrab2_schemas/zgrab2/zgrab2.py b/zgrab2_schemas/zgrab2/zgrab2.py index 7e62954f1..b5746ea0c 100644 --- a/zgrab2_schemas/zgrab2/zgrab2.py +++ b/zgrab2_schemas/zgrab2/zgrab2.py @@ -22,46 +22,59 @@ def DebugOnly(childType): # Get a dict of all keys, mapping key -> true def FlagsSet(keys, **kwargs): - return SubRecord({ - key: Boolean() for key in keys - }, **kwargs) + return SubRecord({key: Boolean() for key in keys}, **kwargs) # zgrab2/processing.go: Grab -grab_result = Record({ - # TODO: ip may be required; see https://github.com/zmap/zgrab2/issues/104 - "ip": IPv4Address(required=False, doc="The IP address of the target."), - "domain": String(required=False, doc="The domain name of the target, if available."), - "data": SubRecord(scan_response_types, doc="The scan data for this host."), -}) +grab_result = Record( + { + # TODO: ip may be required; see https://github.com/zmap/zgrab2/issues/104 + "ip": IPv4Address(required=False, doc="The IP address of the target."), + "domain": String( + required=False, doc="The domain name of the target, if available." + ), + "data": SubRecord(scan_response_types, doc="The scan data for this host."), + } +) # zgrab2/module.go: const SCAN_* STATUS_VALUES = [ - "success", - "connection-refused", - "connection-timeout", - "connection-closed", - "io-timeout", - "protocol-error", - "application-error", - "unknown-error", + "success", + "connection-refused", + "connection-timeout", + "connection-closed", + "io-timeout", + "protocol-error", + "application-error", + "unknown-error", ] # zgrab2/module.go: ScanResponse -base_scan_response = SubRecord({ - "status": Enum(values=STATUS_VALUES, doc="The status of the request."), - "protocol": String(doc="The identifier of the protocol being scanned."), - "timestamp": DateTime(doc="The time the scan was started."), - "result": SubRecord({}, required=False), # This is overridden by the protocols' implementations - "error": String(required=False, doc="If the status was not success, error may contain information about the failure.") - # TODO: error_component? domain? -}) +base_scan_response = SubRecord( + { + "status": Enum(values=STATUS_VALUES, doc="The status of the request."), + "protocol": String(doc="The identifier of the protocol being scanned."), + "timestamp": DateTime(doc="The time the scan was started."), + "result": SubRecord( + {}, required=False + ), # This is overridden by the protocols' implementations + "error": String( + required=False, + doc="If the status was not success, error may contain information about the failure.", + ), + # TODO: error_component? domain? + } +) # zgrab2/tls.go: TLSLog -tls_log = SubRecord({ - "handshake_log": zcrypto.TLSHandshake(doc="The TLS handshake log."), - "heartbleed_log": zcrypto.HeartbleedLog(doc="The heartbleed scan log, if heartbleed scanning was enabled; otherwise, absent.") -}) +tls_log = SubRecord( + { + "handshake_log": zcrypto.TLSHandshake(doc="The TLS handshake log."), + "heartbleed_log": zcrypto.HeartbleedLog( + doc="The heartbleed scan log, if heartbleed scanning was enabled; otherwise, absent." + ), + } +) # Register a schema type for responses with the given name.