From 0bc42de6cbf38a97921117f0fc94146f91199214 Mon Sep 17 00:00:00 2001
From: Josh Soref <2119212+jsoref@users.noreply.github.com>
Date: Mon, 18 Mar 2024 08:16:25 -0400
Subject: [PATCH] Add check-spelling
---
.github/actions/spelling/README.md | 18 +
.github/actions/spelling/advice.md | 31 +
.github/actions/spelling/allow.txt | 5 +
.../actions/spelling/block-delimiters.list | 31 +
.github/actions/spelling/candidate.patterns | 675 ++++
.github/actions/spelling/excludes.txt | 90 +
.github/actions/spelling/expect.txt | 3564 +++++++++++++++++
.../actions/spelling/line_forbidden.patterns | 163 +
.github/actions/spelling/patterns.txt | 151 +
.github/actions/spelling/reject.txt | 11 +
.github/workflows/spelling.yml | 165 +
11 files changed, 4904 insertions(+)
create mode 100644 .github/actions/spelling/README.md
create mode 100644 .github/actions/spelling/advice.md
create mode 100644 .github/actions/spelling/allow.txt
create mode 100644 .github/actions/spelling/block-delimiters.list
create mode 100644 .github/actions/spelling/candidate.patterns
create mode 100644 .github/actions/spelling/excludes.txt
create mode 100644 .github/actions/spelling/expect.txt
create mode 100644 .github/actions/spelling/line_forbidden.patterns
create mode 100644 .github/actions/spelling/patterns.txt
create mode 100644 .github/actions/spelling/reject.txt
create mode 100644 .github/workflows/spelling.yml
diff --git a/.github/actions/spelling/README.md b/.github/actions/spelling/README.md
new file mode 100644
index 00000000000..da6f2e9d9b5
--- /dev/null
+++ b/.github/actions/spelling/README.md
@@ -0,0 +1,18 @@
+# check-spelling/check-spelling configuration
+
+File | Purpose | Format | Info
+-|-|-|-
+[dictionary.txt](dictionary.txt) | Replacement dictionary (creating this file will override the default dictionary) | one word per line | [dictionary](https://github.com/check-spelling/check-spelling/wiki/Configuration#dictionary)
+[allow.txt](allow.txt) | Add words to the dictionary | one word per line (only letters and `'`s allowed) | [allow](https://github.com/check-spelling/check-spelling/wiki/Configuration#allow)
+[reject.txt](reject.txt) | Remove words from the dictionary (after allow) | grep pattern matching whole dictionary words | [reject](https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples%3A-reject)
+[excludes.txt](excludes.txt) | Files to ignore entirely | perl regular expression | [excludes](https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples%3A-excludes)
+[only.txt](only.txt) | Only check matching files (applied after excludes) | perl regular expression | [only](https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples%3A-only)
+[patterns.txt](patterns.txt) | Patterns to ignore from checked lines | perl regular expression (order matters, first match wins) | [patterns](https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples%3A-patterns)
+[candidate.patterns](candidate.patterns) | Patterns that might be worth adding to [patterns.txt](patterns.txt) | perl regular expression with optional comment block introductions (all matches will be suggested) | [candidates](https://github.com/check-spelling/check-spelling/wiki/Feature:-Suggest-patterns)
+[line_forbidden.patterns](line_forbidden.patterns) | Patterns to flag in checked lines | perl regular expression (order matters, first match wins) | [patterns](https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples%3A-patterns)
+[expect.txt](expect.txt) | Expected words that aren't in the dictionary | one word per line (sorted, alphabetically) | [expect](https://github.com/check-spelling/check-spelling/wiki/Configuration#expect)
+[advice.md](advice.md) | Supplement for GitHub comment when unrecognized words are found | GitHub Markdown | [advice](https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples%3A-advice)
+[block-delimiters.list](block-delimiters.list) | Define block begin/end markers to ignore lines of text | line with _literal string_ for **start** followed by line with _literal string_ for **end** | [block ignore](https://github.com/check-spelling/check-spelling/wiki/Feature%3A-Block-Ignore#status)
+
+Note: you can replace any of these files with a directory by the same name (minus the suffix)
+and then include multiple files inside that directory (with that suffix) to merge multiple files together.
diff --git a/.github/actions/spelling/advice.md b/.github/actions/spelling/advice.md
new file mode 100644
index 00000000000..a32d1090aaf
--- /dev/null
+++ b/.github/actions/spelling/advice.md
@@ -0,0 +1,31 @@
+
+If the flagged items are :exploding_head: false positives
+
+If items relate to a ...
+* binary file (or some other file you wouldn't want to check at all).
+
+ Please add a file path to the `excludes.txt` file matching the containing file.
+
+ File paths are Perl 5 Regular Expressions - you can [test](
+https://www.regexplanet.com/advanced/perl/) yours before committing to verify it will match your files.
+
+ `^` refers to the file's path from the root of the repository, so `^README\.md$` would exclude [README.md](
+../tree/HEAD/README.md) (on whichever branch you're using).
+
+* well-formed pattern.
+
+ If you can write a [pattern](
+https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples:-patterns
+) that would match it,
+ try adding it to the `patterns.txt` file.
+
+ Patterns are Perl 5 Regular Expressions - you can [test](
+https://www.regexplanet.com/advanced/perl/) yours before committing to verify it will match your lines.
+
+ Note that patterns can't match multiline strings.
+
+
+
+
+:steam_locomotive: If you're seeing this message and your PR is from a branch that doesn't have check-spelling,
+please merge to your PR's base branch to get the version configured for your repository.
diff --git a/.github/actions/spelling/allow.txt b/.github/actions/spelling/allow.txt
new file mode 100644
index 00000000000..61567618d82
--- /dev/null
+++ b/.github/actions/spelling/allow.txt
@@ -0,0 +1,5 @@
+github
+https
+ssh
+ubuntu
+workarounds
diff --git a/.github/actions/spelling/block-delimiters.list b/.github/actions/spelling/block-delimiters.list
new file mode 100644
index 00000000000..4b3c0b2d401
--- /dev/null
+++ b/.github/actions/spelling/block-delimiters.list
@@ -0,0 +1,31 @@
+# Public Keys
+-----BEGIN PUBLIC KEY-----
+-----END PUBLIC KEY-----
+
+# RSA Private Key
+-----BEGIN RSA PRIVATE KEY-----
+-----END RSA PRIVATE KEY-----
+
+# GPG Public Key
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+-----END PGP PUBLIC KEY BLOCK-----
+
+# Certificates
+-----BEGIN CERTIFICATE-----
+-----END CERTIFICATE-----
+
+# design/AcAC.md
+(lldb) p dumpActorCallBacktrace()
+```
+
+# design/AcAC.md
+echo "AsfmEwAAAAAACQAAAMfmEwAAAAAAAM2oiSx71iIAGrSuCzh6ICZdEwAAAAAAJl0TAAAAAAAA
+bin/acac
+
+# fdbrpc/Base64Decode.cpp
+StringRef urlEncodedTestData
+};
+
+# fdbclient/Tracing.actor.cpp
+const char* longString =
+";
diff --git a/.github/actions/spelling/candidate.patterns b/.github/actions/spelling/candidate.patterns
new file mode 100644
index 00000000000..586c304e0f2
--- /dev/null
+++ b/.github/actions/spelling/candidate.patterns
@@ -0,0 +1,675 @@
+# marker to ignore all code on line
+^.*/\* #no-spell-check-line \*/.*$
+# marker to ignore all code on line
+^.*\bno-spell-check(?:-line|)(?:\s.*|)$
+
+# https://cspell.org/configuration/document-settings/
+# cspell inline
+^.*\b[Cc][Ss][Pp][Ee][Ll]{2}:\s*[Dd][Ii][Ss][Aa][Bb][Ll][Ee]-[Ll][Ii][Nn][Ee]\b
+
+# patch hunk comments
+^@@ -\d+(?:,\d+|) \+\d+(?:,\d+|) @@ .*
+# git index header
+index (?:[0-9a-z]{7,40},|)[0-9a-z]{7,40}\.\.[0-9a-z]{7,40}
+
+# file permissions
+['"`\s][-bcdLlpsw](?:[-r][-w][-Ssx]){2}[-r][-w][-SsTtx]\+?['"`\s]
+
+# css url wrappings
+\burl\([^)]+\)
+
+# cid urls
+(['"])cid:.*?\g{-1}
+
+# data url in parens
+\(data:(?:[^) ][^)]*?|)(?:[A-Z]{3,}|[A-Z][a-z]{2,}|[a-z]{3,})[^)]*\)
+# data url in quotes
+([`'"])data:(?:[^ `'"].*?|)(?:[A-Z]{3,}|[A-Z][a-z]{2,}|[a-z]{3,}).*\g{-1}
+# data url
+\bdata:[-a-zA-Z=;:/0-9+]*,\S*
+
+# https/http/file urls
+(?:\b(?:https?|ftp|file)://)[-A-Za-z0-9+&@#/%?=~_|!:,.;]+[-A-Za-z0-9+&@#/%=~_|]
+
+# mailto urls
+mailto:[-a-zA-Z=;:/?%&0-9+@._]{3,}
+
+# magnet urls
+magnet:[?=:\w]+
+
+# magnet urls
+"magnet:[^"]+"
+
+# obs:
+"obs:[^"]*"
+
+# The `\b` here means a break, it's the fancy way to handle urls, but it makes things harder to read
+# In this examples content, I'm using a number of different ways to match things to show various approaches
+# asciinema
+\basciinema\.org/a/[0-9a-zA-Z]+
+
+# asciinema v2
+^\[\d+\.\d+, "[io]", ".*"\]$
+
+# apple
+\bdeveloper\.apple\.com/[-\w?=/]+
+# Apple music
+\bembed\.music\.apple\.com/fr/playlist/usr-share/[-\w.]+
+
+# appveyor api
+\bci\.appveyor\.com/api/projects/status/[0-9a-z]+
+# appveyor project
+\bci\.appveyor\.com/project/(?:[^/\s"]*/){2}builds?/\d+/job/[0-9a-z]+
+
+# Amazon
+
+# Amazon
+\bamazon\.com/[-\w]+/(?:dp/[0-9A-Z]+|)
+# AWS S3
+\b\w*\.s3[^.]*\.amazonaws\.com/[-\w/%_?:=]*
+# AWS execute-api
+\b[0-9a-z]{10}\.execute-api\.[-0-9a-z]+\.amazonaws\.com\b
+# AWS ELB
+\b\w+\.[-0-9a-z]+\.elb\.amazonaws\.com\b
+# AWS SNS
+\bsns\.[-0-9a-z]+.amazonaws\.com/[-\w/%_?:=]*
+# AWS VPC
+vpc-\w+
+
+# While you could try to match `http://` and `https://` by using `s?` in `https?://`, sometimes there
+# YouTube url
+\b(?:(?:www\.|)youtube\.com|youtu.be)/(?:channel/|embed/|user/|playlist\?list=|watch\?v=|v/|)[-a-zA-Z0-9?&=_%]*
+# YouTube music
+\bmusic\.youtube\.com/youtubei/v1/browse(?:[?&]\w+=[-a-zA-Z0-9?&=_]*)
+# YouTube tag
+<\s*youtube\s+id=['"][-a-zA-Z0-9?_]*['"]
+# YouTube image
+\bimg\.youtube\.com/vi/[-a-zA-Z0-9?&=_]*
+# Google Accounts
+\baccounts.google.com/[-_/?=.:;+%&0-9a-zA-Z]*
+# Google Analytics
+\bgoogle-analytics\.com/collect.[-0-9a-zA-Z?%=&_.~]*
+# Google APIs
+\bgoogleapis\.(?:com|dev)/[a-z]+/(?:v\d+/|)[a-z]+/[-@:./?=\w+|&]+
+# Google Storage
+\b[-a-zA-Z0-9.]*\bstorage\d*\.googleapis\.com(?:/\S*|)
+# Google Calendar
+\bcalendar\.google\.com/calendar(?:/u/\d+|)/embed\?src=[@./?=\w&%]+
+\w+\@group\.calendar\.google\.com\b
+# Google DataStudio
+\bdatastudio\.google\.com/(?:(?:c/|)u/\d+/|)(?:embed/|)(?:open|reporting|datasources|s)/[-0-9a-zA-Z]+(?:/page/[-0-9a-zA-Z]+|)
+# The leading `/` here is as opposed to the `\b` above
+# ... a short way to match `https://` or `http://` since most urls have one of those prefixes
+# Google Docs
+/docs\.google\.com/[a-z]+/(?:ccc\?key=\w+|(?:u/\d+|d/(?:e/|)[0-9a-zA-Z_-]+/)?(?:edit\?[-\w=#.]*|/\?[\w=&]*|))
+# Google Drive
+\bdrive\.google\.com/(?:file/d/|open)[-0-9a-zA-Z_?=]*
+# Google Groups
+\bgroups\.google\.com(?:/[a-z]+/(?:#!|)[^/\s"]+)*
+# Google Maps
+\bmaps\.google\.com/maps\?[\w&;=]*
+# Google themes
+themes\.googleusercontent\.com/static/fonts/[^/\s"]+/v\d+/[^.]+.
+# Google CDN
+\bclients2\.google(?:usercontent|)\.com[-0-9a-zA-Z/.]*
+# Goo.gl
+/goo\.gl/[a-zA-Z0-9]+
+# Google Chrome Store
+\bchrome\.google\.com/webstore/detail/[-\w]*(?:/\w*|)
+# Google Books
+\bgoogle\.(?:\w{2,4})/books(?:/\w+)*\?[-\w\d=.]*
+# Google Fonts
+\bfonts\.(?:googleapis|gstatic)\.com/[-/?=:;+&0-9a-zA-Z]*
+# Google Forms
+\bforms\.gle/\w+
+# Google Scholar
+\bscholar\.google\.com/citations\?user=[A-Za-z0-9_]+
+# Google Colab Research Drive
+\bcolab\.research\.google\.com/drive/[-0-9a-zA-Z_?=]*
+
+# GitHub SHAs (api)
+\bapi.github\.com/repos(?:/[^/\s"]+){3}/[0-9a-f]+\b
+# GitHub SHAs (markdown)
+#(?:\[`?[0-9a-f]+`?\]\(https:/|)/(?:www\.|)github\.com(?:/[^/\s"]+){2,}(?:/[^/\s")]+)(?:[0-9a-f]+(?:[-0-9a-zA-Z/#.]*|)\b|)
+# GitHub SHAs
+\bgithub\.com(?:/[^/\s"]+){2}[@#][0-9a-f]+\b
+# GitHub SHA refs
+\[([0-9a-f]+)\]\(https://(?:www\.|)github.com/[-\w]+/[-\w]+/commit/\g{-1}[0-9a-f]*
+# GitHub wiki
+\bgithub\.com/(?:[^/]+/){2}wiki/(?:(?:[^/]+/|)_history|[^/]+(?:/_compare|)/[0-9a-f.]{40,})\b
+# githubusercontent
+/[-a-z0-9]+\.githubusercontent\.com/[-a-zA-Z0-9?&=_\/.]*
+# githubassets
+\bgithubassets.com/[0-9a-f]+(?:[-/\w.]+)
+# gist github
+\bgist\.github\.com/[^/\s"]+/[0-9a-f]+
+# git.io
+\bgit\.io/[0-9a-zA-Z]+
+# GitHub JSON
+"node_id": "[-a-zA-Z=;:/0-9+_]*"
+# Contributor
+\[[^\]]+\]\(https://github\.com/[^/\s"]+/?\)
+# GHSA
+GHSA(?:-[0-9a-z]{4}){3}
+
+# GitHub actions
+\buses:\s+[-\w.]+/[-\w./]+@[-\w.]+
+
+# GitLab commit
+\bgitlab\.[^/\s"]*/\S+/\S+/commit/[0-9a-f]{7,16}#[0-9a-f]{40}\b
+# GitLab merge requests
+\bgitlab\.[^/\s"]*/\S+/\S+/-/merge_requests/\d+/diffs#[0-9a-f]{40}\b
+# GitLab uploads
+\bgitlab\.[^/\s"]*/uploads/[-a-zA-Z=;:/0-9+]*
+# GitLab commits
+\bgitlab\.[^/\s"]*/(?:[^/\s"]+/){2}commits?/[0-9a-f]+\b
+
+# binance
+accounts\.binance\.com/[a-z/]*oauth/authorize\?[-0-9a-zA-Z&%]*
+
+# bitbucket diff
+\bapi\.bitbucket\.org/\d+\.\d+/repositories/(?:[^/\s"]+/){2}diff(?:stat|)(?:/[^/\s"]+){2}:[0-9a-f]+
+# bitbucket repositories commits
+\bapi\.bitbucket\.org/\d+\.\d+/repositories/(?:[^/\s"]+/){2}commits?/[0-9a-f]+
+# bitbucket commits
+\bbitbucket\.org/(?:[^/\s"]+/){2}commits?/[0-9a-f]+
+
+# bit.ly
+\bbit\.ly/\w+
+
+# bitrise
+\bapp\.bitrise\.io/app/[0-9a-f]*/[\w.?=&]*
+
+# bootstrapcdn.com
+\bbootstrapcdn\.com/[-./\w]+
+
+# cdn.cloudflare.com
+\bcdnjs\.cloudflare\.com/[./\w]+
+
+# circleci
+\bcircleci\.com/gh(?:/[^/\s"]+){1,5}.[a-z]+\?[-0-9a-zA-Z=&]+
+
+# gitter
+\bgitter\.im(?:/[^/\s"]+){2}\?at=[0-9a-f]+
+
+# gravatar
+\bgravatar\.com/avatar/[0-9a-f]+
+
+# ibm
+[a-z.]*ibm\.com/[-_#=:%!?~.\\/\d\w]*
+
+# imgur
+\bimgur\.com/[^.]+
+
+# Internet Archive
+\barchive\.org/web/\d+/(?:[-\w.?,'/\\+&%$#_:]*)
+
+# discord
+/discord(?:app\.com|\.gg)/(?:invite/)?[a-zA-Z0-9]{7,}
+
+# Disqus
+\bdisqus\.com/[-\w/%.()!?&=_]*
+
+# medium link
+\blink\.medium\.com/[a-zA-Z0-9]+
+# medium
+\bmedium\.com/@?[^/\s"]+/[-\w]+
+
+# microsoft
+\b(?:https?://|)(?:(?:download\.visualstudio|docs|msdn2?|research)\.microsoft|blogs\.msdn)\.com/[-_a-zA-Z0-9()=./%]*
+# powerbi
+\bapp\.powerbi\.com/reportEmbed/[^"' ]*
+# vs devops
+\bvisualstudio.com(?::443|)/[-\w/?=%&.]*
+# microsoft store
+\bmicrosoft\.com/store/apps/\w+
+
+# mvnrepository.com
+\bmvnrepository\.com/[-0-9a-z./]+
+
+# now.sh
+/[0-9a-z-.]+\.now\.sh\b
+
+# oracle
+\bdocs\.oracle\.com/[-0-9a-zA-Z./_?#&=]*
+
+# chromatic.com
+/\S+.chromatic.com\S*[")]
+
+# codacy
+\bapi\.codacy\.com/project/badge/Grade/[0-9a-f]+
+
+# compai
+\bcompai\.pub/v1/png/[0-9a-f]+
+
+# mailgun api
+\.api\.mailgun\.net/v3/domains/[0-9a-z]+\.mailgun.org/messages/[0-9a-zA-Z=@]*
+# mailgun
+\b[0-9a-z]+.mailgun.org
+
+# /message-id/
+/message-id/[-\w@./%]+
+
+# Reddit
+\breddit\.com/r/[/\w_]*
+
+# requestb.in
+\brequestb\.in/[0-9a-z]+
+
+# sched
+\b[a-z0-9]+\.sched\.com\b
+
+# Slack url
+slack://[a-zA-Z0-9?&=]+
+# Slack
+\bslack\.com/[-0-9a-zA-Z/_~?&=.]*
+# Slack edge
+\bslack-edge\.com/[-a-zA-Z0-9?&=%./]+
+# Slack images
+\bslack-imgs\.com/[-a-zA-Z0-9?&=%.]+
+
+# shields.io
+\bshields\.io/[-\w/%?=&.:+;,]*
+
+# stackexchange -- https://stackexchange.com/feeds/sites
+\b(?:askubuntu|serverfault|stack(?:exchange|overflow)|superuser).com/(?:questions/\w+/[-\w]+|a/)
+
+# Sentry
+[0-9a-f]{32}\@o\d+\.ingest\.sentry\.io\b
+
+# Twitter markdown
+\[@[^[/\]:]*?\]\(https://twitter.com/[^/\s"')]*(?:/status/\d+(?:\?[-_0-9a-zA-Z&=]*|)|)\)
+# Twitter hashtag
+\btwitter\.com/hashtag/[\w?_=&]*
+# Twitter status
+\btwitter\.com/[^/\s"')]*(?:/status/\d+(?:\?[-_0-9a-zA-Z&=]*|)|)
+# Twitter profile images
+\btwimg\.com/profile_images/[_\w./]*
+# Twitter media
+\btwimg\.com/media/[-_\w./?=]*
+# Twitter link shortened
+\bt\.co/\w+
+
+# facebook
+\bfburl\.com/[0-9a-z_]+
+# facebook CDN
+\bfbcdn\.net/[\w/.,]*
+# facebook watch
+\bfb\.watch/[0-9A-Za-z]+
+
+# dropbox
+\bdropbox\.com/sh?/[^/\s"]+/[-0-9A-Za-z_.%?=&;]+
+
+# ipfs protocol
+ipfs://[0-9a-zA-Z]{3,}
+# ipfs url
+/ipfs/[0-9a-zA-Z]{3,}
+
+# w3
+\bw3\.org/[-0-9a-zA-Z/#.]+
+
+# loom
+\bloom\.com/embed/[0-9a-f]+
+
+# regex101
+\bregex101\.com/r/[^/\s"]+/\d+
+
+# figma
+\bfigma\.com/file(?:/[0-9a-zA-Z]+/)+
+
+# freecodecamp.org
+\bfreecodecamp\.org/[-\w/.]+
+
+# image.tmdb.org
+\bimage\.tmdb\.org/[/\w.]+
+
+# mermaid
+\bmermaid\.ink/img/[-\w]+|\bmermaid-js\.github\.io/mermaid-live-editor/#/edit/[-\w]+
+
+# Wikipedia
+\ben\.wikipedia\.org/wiki/[-\w%.#]+
+
+# gitweb
+[^"\s]+/gitweb/\S+;h=[0-9a-f]+
+
+# HyperKitty lists
+/archives/list/[^@/]+@[^/\s"]*/message/[^/\s"]*/
+
+# lists
+/thread\.html/[^"\s]+
+
+# list-management
+\blist-manage\.com/subscribe(?:[?&](?:u|id)=[0-9a-f]+)+
+
+# kubectl.kubernetes.io/last-applied-configuration
+"kubectl.kubernetes.io/last-applied-configuration": ".*"
+
+# pgp
+\bgnupg\.net/pks/lookup[?&=0-9a-zA-Z]*
+
+# Spotify
+\bopen\.spotify\.com/embed/playlist/\w+
+
+# Mastodon
+\bmastodon\.[-a-z.]*/(?:media/|@)[?&=0-9a-zA-Z_]*
+
+# scastie
+\bscastie\.scala-lang\.org/[^/]+/\w+
+
+# images.unsplash.com
+\bimages\.unsplash\.com/(?:(?:flagged|reserve)/|)[-\w./%?=%&.;]+
+
+# pastebin
+\bpastebin\.com/[\w/]+
+
+# heroku
+\b\w+\.heroku\.com/source/archive/\w+
+
+# quip
+\b\w+\.quip\.com/\w+(?:(?:#|/issues/)\w+)?
+
+# badgen.net
+\bbadgen\.net/badge/[^")\]'\s]+
+
+# statuspage.io
+\w+\.statuspage\.io\b
+
+# media.giphy.com
+\bmedia\.giphy\.com/media/[^/]+/[\w.?&=]+
+
+# tinyurl
+\btinyurl\.com/\w+
+
+# codepen
+\bcodepen\.io/[\w/]+
+
+# registry.npmjs.org
+\bregistry\.npmjs\.org/(?:@[^/"']+/|)[^/"']+/-/[-\w@.]+
+
+# getopts
+\bgetopts\s+(?:"[^"]+"|'[^']+')
+
+# ANSI color codes
+(?:\\(?:u00|x)1[Bb]|\x1b|\\u\{1[Bb]\})\[\d+(?:;\d+|)m
+
+# URL escaped characters
+%[0-9A-F][A-F](?=[A-Za-z])
+# lower URL escaped characters
+#%[0-9a-f][a-f](?=[a-z]{2,})
+# IPv6
+\b(?:[0-9a-fA-F]{0,4}:){3,7}[0-9a-fA-F]{0,4}\b
+# c99 hex digits (not the full format, just one I've seen)
+0x[0-9a-fA-F](?:\.[0-9a-fA-F]*|)[pP]
+# Punycode
+\bxn--[-0-9a-z]+
+# sha
+sha\d+:[0-9]*[a-f]{3,}[0-9a-f]*
+# sha-... -- uses a fancy capture
+(\\?['"]|")[0-9a-f]{40,}\g{-1}
+# hex runs
+\b[0-9a-fA-F]{16,}\b
+# hex in url queries
+=[0-9a-fA-F]*?(?:[A-F]{3,}|[a-f]{3,})[0-9a-fA-F]*?&
+# ssh
+(?:ssh-\S+|-nistp256) [-a-zA-Z=;:/0-9+]{12,}
+
+# PGP
+\b(?:[0-9A-F]{4} ){9}[0-9A-F]{4}\b
+# GPG keys
+\b(?:[0-9A-F]{4} ){5}(?: [0-9A-F]{4}){5}\b
+# Well known gpg keys
+.well-known/openpgpkey/[\w./]+
+
+# pki
+-----BEGIN.*-----END
+
+# uuid:
+\b[0-9a-fA-F]{8}-(?:[0-9a-fA-F]{4}-){3}[0-9a-fA-F]{12}\b
+# hex digits including css/html color classes:
+(?:[\\0][xX]|\\u|[uU]\+|#x?|%23)[0-9_a-fA-FgGrR]*?[a-fA-FgGrR]{2,}[0-9_a-fA-FgGrR]*(?:[uUlL]{0,3}|[iu]\d+)\b
+# integrity
+integrity=(['"])(?:\s*sha\d+-[-a-zA-Z=;:/0-9+]{40,})+\g{-1}
+
+# https://www.gnu.org/software/groff/manual/groff.html
+# man troff content
+\\f[BCIPR]
+# '/"
+\\\([ad]q
+
+# .desktop mime types
+^MimeTypes?=.*$
+# .desktop localized entries
+^[A-Z][a-z]+\[[a-z]+\]=.*$
+# Localized .desktop content
+Name\[[^\]]+\]=.*
+
+# IServiceProvider / isAThing
+\b(?:I|isA)(?=(?:[A-Z][a-z]{2,})+(?:[A-Z]|\b))
+
+# crypt
+(['"])\$2[ayb]\$.{56}\g{-1}
+
+# scrypt / argon
+\$(?:scrypt|argon\d+[di]*)\$\S+
+
+# go.sum
+\bh1:\S+
+
+# scala modules
+("[^"]+"\s*%%?\s*){2,3}"[^"]+"
+
+# Input to GitHub JSON
+content: (['"])[-a-zA-Z=;:/0-9+]*=\g{-1}
+
+# This does not cover multiline strings, if your repository has them,
+# you'll want to remove the `(?=.*?")` suffix.
+# The `(?=.*?")` suffix should limit the false positives rate
+# printf
+#%(?:(?:(?:hh?|ll?|[jzt])?[diuoxn]|l?[cs]|L?[fega]|p)(?=[a-z]{2,})|(?:X|L?[FEGA]|p)(?=[a-zA-Z]{2,}))(?!%)(?=[_a-zA-Z]+(?!%)\b)(?=.*?['"])
+
+# Alternative printf
+# %s
+%(?:s(?=[a-z]{2,}))(?!%)(?=[_a-zA-Z]+(?!%)\b)(?=.*?['"])
+
+# Python string prefix / binary prefix
+# Note that there's a high false positive rate, remove the `?=` and search for the regex to see if the matches seem like reasonable strings
+(?|m([|!/@#,;']).*?\g{-1})
+
+# perl qr regex
+(?|\(.*?\)|([|!/@#,;']).*?\g{-1})
+
+# perl run
+perl(?:\s+-[a-zA-Z]\w*)+
+
+# C network byte conversions
+#(?:\d|\bh)to(?!ken)(?=[a-z])|to(?=[adhiklpun]\()
+
+# Go regular expressions
+regexp?\.MustCompile\(`[^`]*`\)
+
+# regex choice
+#\(\?:[^)]+\|[^)]+\)
+
+# proto
+^\s*(\w+)\s\g{-1} =
+
+# sed regular expressions
+sed 's/(?:[^/]*?[a-zA-Z]{3,}[^/]*?/){2}
+
+# node packages
+(["'])@[^/'" ]+/[^/'" ]+\g{-1}
+
+# go install
+go install(?:\s+[a-z]+\.[-@\w/.]+)+
+
+# jetbrains schema https://youtrack.jetbrains.com/issue/RSRP-489571
+urn:shemas-jetbrains-com
+
+# kubernetes pod status lists
+# https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#pod-phase
+\w+(?:-\w+)+\s+\d+/\d+\s+(?:Running|Pending|Succeeded|Failed|Unknown)\s+
+
+# kubectl - pods in CrashLoopBackOff
+\w+-[0-9a-f]+-\w+\s+\d+/\d+\s+CrashLoopBackOff\s+
+
+# kubernetes object suffix
+-[0-9a-f]{10}-\w{5}\s
+
+# posthog secrets
+([`'"])phc_[^"',]+\g{-1}
+
+# xcode
+
+# xcodeproject scenes
+(?:Controller|destination|ID|id)="\w{3}-\w{2}-\w{3}"
+
+# xcode api botches
+customObjectInstantitationMethod
+
+# configure flags
+#.* \| --\w{2,}.*?(?=\w+\s\w+)
+
+# font awesome classes
+\.fa-[-a-z0-9]+
+
+# bearer auth
+(['"])[Bb]ear[e][r] .*?\g{-1}
+
+# bearer auth
+\b[Bb]ear[e][r]:? [-a-zA-Z=;:/0-9+.]+
+
+# basic auth
+(['"])[Bb]asic [-a-zA-Z=;:/0-9+]{3,}\g{-1}
+
+# base64 encoded content
+#([`'"])[-a-zA-Z=;:/0-9+]{3,}=\g{-1}
+# base64 encoded content in xml/sgml
+>[-a-zA-Z=;:/0-9+]{3,}=
+# base64 encoded content, possibly wrapped in mime
+(?:^|[\s=;:?])[-a-zA-Z=;:/0-9+]{50,}(?:[\s=;:?]|$)
+
+# encoded-word
+=\?[-a-zA-Z0-9"*%]+\?[BQ]\?[^?]{0,75}\?=
+
+# Time Zones
+\b(?:Africa|Atlantic|America|Antarctica|Asia|Australia|Europe|Indian|Pacific)(?:/\w+)+
+
+# linux kernel info
+^(?:bugs|flags|Features)\s+:.*
+
+# systemd mode
+systemd.*?running in system mode \([-+].*\)$
+
+# Lorem
+# Update Lorem based on your content (requires `ge` and `w` from https://github.com/jsoref/spelling; and `review` from https://github.com/check-spelling/check-spelling/wiki/Looking-for-items-locally )
+# grep '^[^#].*lorem' .github/actions/spelling/patterns.txt|perl -pne 's/.*i..\?://;s/\).*//' |tr '|' "\n"|sort -f |xargs -n1 ge|perl -pne 's/^[^:]*://'|sort -u|w|sed -e 's/ .*//'|w|review -
+# Warning, while `(?i)` is very neat and fancy, if you have some binary files that aren't proper unicode, you might run into:
+# ... Operation "substitution (s///)" returns its argument for non-Unicode code point 0x1C19AE (the code point will vary).
+# ... You could manually change `(?i)X...` to use `[Xx]...`
+# ... or you could add the files to your `excludes` file (a version after 0.0.19 should identify the file path)
+(?:(?:\w|\s|[,.])*\b(?i)(?:amet|consectetur|cursus|dolor|eros|ipsum|lacus|libero|ligula|lorem|magna|neque|nulla|suscipit|tempus)\b(?:\w|\s|[,.])*)
+
+# Non-English
+[a-zA-Z]*[ÀÁÂÃÄÅÆČÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝßàáâãäåæčçèéêëìíîïðñòóôõöøùúûüýÿĀāŁłŃńŅņŒœŚśŠšŜŝŸŽžź][a-zA-Z]{3}[a-zA-ZÀÁÂÃÄÅÆČÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝßàáâãäåæčçèéêëìíîïðñòóôõöøùúûüýÿĀāŁłŃńŅņŒœŚśŠšŜŝŸŽžź]*|[a-zA-Z]{3,}[ÀÁÂÃÄÅÆČÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝßàáâãäåæčçèéêëìíîïðñòóôõöøùúûüýÿĀāŁłŃńŅņŒœŚśŠšŜŝŸŽžź]|[ÀÁÂÃÄÅÆČÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝßàáâãäåæčçèéêëìíîïðñòóôõöøùúûüýÿĀāŁłŃńŅņŒœŚśŠšŜŝŸŽžź][a-zA-Z]{3,}
+
+# highlighted letters
+\[[A-Z]\][a-z]+
+
+# French
+# This corpus only had capital letters, but you probably want lowercase ones as well.
+\b[LN]'+[a-z]{2,}\b
+
+# latex (check-spelling <= 0.0.21)
+\\(?:n(?:ew|ormal|osub)|r(?:enew)|t(?:able(?:of|)|he|itle))(?=[a-z]+)
+
+# latex (check-spelling >= 0.0.22)
+\\\w{2,}\{
+
+# American Mathematical Society (AMS) / Doxygen
+TeX/AMS
+
+# File extensions
+\*\.[+\w]+,
+
+# eslint
+"varsIgnorePattern": ".+"
+
+# Windows short paths
+[/\\][^/\\]{5,6}~\d{1,2}[/\\]
+
+# cygwin paths
+/cygdrive/[a-zA-Z]/(?:Program Files(?: \(.*?\)| ?)(?:/[-+.~\\/()\w ]+)*|[-+.~\\/()\w])+
+
+# in check-spelling@v0.0.22+, printf markers aren't automatically consumed
+# printf markers
+#(?v#
+(?:(?<=[A-Z]{2})V|(?<=[a-z]{2}|[A-Z]{2})v)\d+(?:\b|(?=[a-zA-Z_]))
+
+# Compiler flags (Unix, Java/Scala)
+# Use if you have things like `-Pdocker` and want to treat them as `docker`
+(?:^|[\t ,>"'`=(])-(?:(?:J-|)[DPWXY]|[Llf])(?=[A-Z]{2,}|[A-Z][a-z]|[a-z]{2,})
+
+# Compiler flags (Windows / PowerShell)
+# This is a subset of the more general compiler flags pattern.
+# It avoids matching `-Path` to prevent it from being treated as `ath`
+(?:^|[\t ,"'`=(])-(?:[DPL](?=[A-Z]{2,})|[WXYlf](?=[A-Z]{2,}|[A-Z][a-z]|[a-z]{2,}))
+
+# Compiler flags (linker)
+,-B
+
+# libraries
+\blib(?!rar(?:ies|y))(?=[a-z])
+
+# WWNN/WWPN (NAA identifiers)
+#\b(?:0x)?10[0-9a-f]{14}\b|\b(?:0x|3)?[25][0-9a-f]{15}\b|\b(?:0x|3)?6[0-9a-f]{31}\b
+
+# iSCSI iqn (approximate regex)
+\biqn\.[0-9]{4}-[0-9]{2}(?:[\.-][a-z][a-z0-9]*)*\b
+
+# curl arguments
+\b(?:\\n|)curl(?:\.exe|)(?:\s+-[a-zA-Z]{1,2}\b)*(?:\s+-[a-zA-Z]{3,})(?:\s+-[a-zA-Z]+)*
+# set arguments
+\b(?:bash|sh|set)(?:\s+-[abefimouxE]{1,2})*\s+-[abefimouxE]{3,}(?:\s+-[abefimouxE]+)*
+# tar arguments
+\b(?:\\n|)g?tar(?:\.exe|)(?:(?:\s+--[-a-zA-Z]+|\s+-[a-zA-Z]+|\s[ABGJMOPRSUWZacdfh-pr-xz]+\b)(?:=[^ ]*|))+
+# tput arguments -- https://man7.org/linux/man-pages/man5/terminfo.5.html -- technically they can be more than 5 chars long...
+\btput\s+(?:(?:-[SV]|-T\s*\w+)\s+)*\w{3,5}\b
+# macOS temp folders
+/var/folders/\w\w/[+\w]+/(?:T|-Caches-)/
+# github runner temp folders
+/home/runner/work/_temp/[-_/a-z0-9]+
diff --git a/.github/actions/spelling/excludes.txt b/.github/actions/spelling/excludes.txt
new file mode 100644
index 00000000000..65795edf086
--- /dev/null
+++ b/.github/actions/spelling/excludes.txt
@@ -0,0 +1,90 @@
+# See https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples:-excludes
+(?:^|/)(?i)COPYRIGHT
+(?:^|/)(?i)LICEN[CS]E
+(?:^|/)3rdparty/
+(?:^|/)go\.sum$
+(?:^|/)package(?:-lock|)\.json$
+(?:^|/)Pipfile$
+(?:^|/)pyproject.toml
+(?:^|/)requirements(?:-dev|-doc|-test|)\.txt$
+(?:^|/)vendor/
+\.a$
+\.ai$
+\.all-contributorsrc$
+\.avi$
+\.bmp$
+\.bz2$
+\.cer$
+\.class$
+\.coveragerc$
+\.crl$
+\.crt$
+\.csr$
+\.dll$
+\.docx?$
+\.drawio$
+\.DS_Store$
+\.eot$
+\.eps$
+\.exe$
+\.gif$
+\.git-blame-ignore-revs$
+\.gitattributes$
+\.gitkeep$
+\.graffle$
+\.gz$
+\.icns$
+\.ico$
+\.ipynb$
+\.jar$
+\.jks$
+\.jpe?g$
+\.key$
+\.lib$
+\.lock$
+\.map$
+\.min\..
+\.mo$
+\.mod$
+\.mp[34]$
+\.o$
+\.ocf$
+\.otf$
+\.p12$
+\.parquet$
+\.pdf$
+\.pem$
+\.pfx$
+\.png$
+\.psd$
+\.pyc$
+\.pylintrc$
+\.qm$
+\.s$
+\.sig$
+\.so$
+\.svgz?$
+\.sys$
+\.tar$
+\.tgz$
+\.tiff?$
+\.ttf$
+\.wav$
+\.webm$
+\.webp$
+\.woff2?$
+\.xcf$
+\.xlsx?$
+\.xpm$
+\.xz$
+\.zip$
+^\.github/actions/spelling/
+^\Q.github/workflows/spelling.yml\E$
+^\Qbindings/go/godoc-resources/jquery.js\E$
+^\Qbindings/go/src/fdb/fdb_darwin.go\E$
+^\Qbindings/go/src/fdb/tuple/testdata/tuples.golden\E$
+^\Qbindings/python/fdb/libfdb_c.dylib.pth\E$
+^\Qfdbrpc/libcoroutine/asm.S\E$
+^\Qfdbrpc/libcoroutine/Base.h\E$
+^contrib/
+ignore$
diff --git a/.github/actions/spelling/expect.txt b/.github/actions/spelling/expect.txt
new file mode 100644
index 00000000000..a012a02b4ea
--- /dev/null
+++ b/.github/actions/spelling/expect.txt
@@ -0,0 +1,3564 @@
+aapcs
+abcd
+ABCDEFGHIJKL
+ABCDEFGHIJKLMNOPQRSTUVWXY
+ABCDEFGHIJKLO
+abdc
+abmax
+abmin
+abortable
+absl
+acac
+accountname
+Accs
+accumulativechecksumindex
+ACCUMULATIVECHECKSUMUTIL
+achain
+ACI
+actime
+actorcollection
+actorcompiler
+actorid
+ACTORLINEAGE
+actorname
+ADCs
+addgroup
+addi
+addname
+addoption
+addref
+addtask
+adminserver
+adonovan
+advanceversion
+aeabi
+AESE
+AESMC
+Aest
+AFAICT
+aftest
+ahm
+ahusain
+aio
+aixdesc
+ajb
+ajsdflkajdsflkjadsf
+AKIAIOSFODNN
+Alakuijala
+alarmtime
+alexmiller
+Alito
+ALittle
+alksdfjaklsdfjlkasdjflkasdjfklajsdflk
+allmul
+allnext
+allocs
+allowitemcountdecrease
+allprev
+alltaskslot
+ALLUSERSPROFILE
+alog
+alphanum
+altivec
+altname
+ALUs
+alwaysfail
+AMachine
+amazonlinux
+amz
+amzn
+anoyes
+Ansaldi
+ansicpg
+antipattern
+antiquorum
+antirez
+anton
+anyy
+apath
+apiguardian
+apitester
+apiversion
+APIWORKLOAD
+apotylitsin
+APPLYMETADATAMUTATION
+architecting
+argcc
+ARGN
+ARGPARSEUTIL
+armon
+arpa
+ARPPRODUCTICON
+ARRAYSIZE
+artifactory
+arv
+asan
+asbehdlquj
+asciz
+asdfasdf
+asdfzxc
+AServer
+asi
+ASingle
+ASIOREACTOR
+ASIZE
+asmdefs
+asmfile
+ASnapshot
+Asnyc
+aspxx
+ASSER
+asyncfile
+ASYNCFILEBLOBSTORE
+ASYNCFILECACHED
+ASYNCFILEEIO
+ASYNCFILEKAIO
+ASYNCFILENONDURABLE
+ASYNCFILEREADAHEAD
+ASYNCFILEWINASIO
+asynctaskthread
+ASYNCVAR
+asyncvfs
+ATable
+atfork
+atn
+ATOMICOP
+atos
+attoseconds
+attrlist
+attrname
+AType
+AUDITUTILS
+austrncpy
+authlib
+authtoken
+AUTIASP
+autocheckpoint
+autorestart
+autouse
+autovacuum
+autovectorization
+autovectorize
+autovectorizing
+aveq
+AVL
+avp
+avx
+AWorkload
+awscli
+awssdk
+axn
+Aync
+azurestorage
+backlinks
+backupagent
+BACKUPINTERFACE
+BACKUPKEYS
+backuplatest
+BACKUPPROGRESS
+backupstatus
+BACKUPTLSCONFIG
+Bader
+BAFRW
+bananna
+barthread
+BARW
+baseblock
+BASEKIT
+bavail
+bbb
+bbc
+bcc
+bck
+BCs
+bctrl
+BDBA
+bdir
+beginkey
+beginstr
+beginthread
+BEK
+beq
+Beurden
+bfd
+bfines
+bfree
+bfrom
+bgbackup
+bgcc
+bgencryptionctx
+bgencryptionkey
+bgf
+bgfiledescription
+bgfilepointer
+bgh
+bgl
+bglibs
+bgm
+bgmerge
+bgmergebounds
+bgmutation
+bgpforce
+bgrestore
+bgrw
+bgs
+bgtenantprefix
+BGUF
+BGV
+BGW
+bic
+bieber
+bigdoc
+bigobj
+Bigtable
+biilabs
+bindingtester
+BINDINGTESTS
+bindir
+binliu
+binpath
+binutils
+bitfield
+bitflip
+bitfliph
+bitflipl
+bitlen
+bitrot
+bitsflip
+bkb
+bkey
+bkeysel
+bkn
+bknl
+bkp
+blahblahbl
+blb
+blobbification
+blobbified
+blobbify
+blobbifying
+blobdir
+blobgranule
+BLOBGRANULECOMMON
+BLOBGRANULEFILES
+BLOBGRANULESERVERCOMMON
+BLOBGRANULEVALIDATION
+blobkey
+blobmanager
+BLOBMANAGERINTERFACE
+BLOBMIGRATORINTERFACE
+blobrange
+blobrestore
+BLOBRESTORECOMMON
+blobspace
+blobstats
+blobstore
+BLOBWORKER
+BLOBWORKERCOMMON
+BLOBWORKERINTERFACE
+BLOBWORKERSTATUSSTREAM
+blockable
+blockid
+blr
+BMC
+bmi
+BMID
+BMQ
+Bnd
+bocksrocker
+bools
+bootup
+BORINGSSL
+BORLANDC
+bpo
+braunl
+breadcrumb
+BREAKONERROR
+Breyer
+brokenrole
+browlett
+brownbag
+brsst
+bsd
+bsel
+bsize
+bstore
+BStream
+bti
+btpage
+Btrfs
+bttest
+BType
+bucketname
+bufferedout
+buflen
+bufr
+bufs
+BUFSIZ
+BUFSTDOUTERR
+buggification
+buggified
+buggify
+BUGGIFYd
+buggifying
+BUGREPORT
+buildbot
+builddebs
+builddir
+BUILDFLAGS
+buildpkg
+buildroot
+buildrpms
+BUILDTIME
+bulkload
+burtleburtle
+busymap
+bvr
+bwa
+bwi
+BWID
+bwl
+BWOn
+BWrite
+BWs
+BWTo
+bytelimit
+byteset
+byteshift
+bytesize
+bytesleft
+byteslice
+bytesstored
+bytewise
+CACHEDFILE
+cachehits
+CACHEMEMLIMIT
+cachemisses
+CAcreateserial
+callbackf
+callgraph
+CANTOPEN
+capi
+Capitain
+Cardano
+cba
+cback
+cbfunc
+cbi
+cbl
+CBlock
+cbs
+cbtr
+cbz
+ccache
+ccb
+CCBM
+ccc
+CCCK
+ccd
+ccdc
+CCDD
+CCEKP
+Cch
+CCheck
+cck
+CCLS
+ccmake
+CCMG
+ccmp
+CCOLON
+ccr
+CCRK
+ccs
+CCSIn
+cctx
+CCUp
+CCWDB
+ccx
+CDISABLED
+CENABLED
+CEnum
+ceqaa
+ceqbb
+cerrno
+CERTAUTHFILE
+certindex
+certserial
+CES
+cfa
+CFID
+CFIn
+cfis
+CFolder
+cfp
+cfront
+CFSTR
+CFuture
+Cgen
+cgn
+changeclusterkey
+changecounter
+changedescription
+changefeed
+CHANGEFEEDSTREAM
+CHANTABILITY
+CHAOSMETRICS
+charstring
+Chd
+checkall
+checkbuf
+Checkpointbytes
+checkv
+childf
+childs
+chkconfig
+chksum
+chsize
+CIAL
+CInfo
+CInt
+ciph
+cipherkey
+CItr
+CKey
+CKID
+ckr
+cks
+ckv
+Classlike
+Classloader
+Classmember
+clearknob
+Clearn
+clearrange
+clearstats
+clientgoscheme
+clientid
+CLIENTKNOBCCOLLECTION
+CLIENTKNOBCOLLECTION
+CLIENTLEADERREG
+clientlib
+CLIENTLOGEVENTS
+CLIENTSDIR
+CLIENTWORKERINTERFACE
+Clinkenbeard
+Clnt
+CLoc
+CLOCKIMPL
+closesocket
+clsname
+clumpiness
+CLUSTERCONNECTIONFILE
+CLUSTERCONNECTIONKEY
+CLUSTERCONNECTIONMEMORYRECORD
+clustercontroller
+CLUSTERFILE
+CLUSTERFILEEXISTS
+CLUSTERFILEPATH
+CLUSTERID
+CLUSTERRECOVERY
+clzll
+cma
+cmakedefine
+CMDEXE
+cmds
+cmpfunc
+cneg
+cnf
+cnk
+cnode
+cntvct
+cocoartf
+cocoasubrtf
+codechar
+codepath
+codewalk
+coinflip
+collabs
+coloc
+colortbl
+Comapction
+combinedh
+combinedl
+commitget
+commitoverall
+commitproxy
+COMMITPROXYINTERFACE
+Committedx
+committers
+COMMITTRANSACTION
+COMPACTRANGE
+condrestart
+conection
+confd
+confdir
+conff
+conffile
+CONFIGCLASS
+CONFIGFILEEXISTS
+CONFIGFOLDER
+CONFIGFOLLOWER
+CONFIGTXN
+CONFIGURECLUSTER
+configuretenant
+conflictor
+CONFLICTSET
+confpath
+conio
+CONNECTIONPOOL
+connectionprovider
+CONNECTIONSTRING
+connectpool
+CONNFILE
+CONOUT
+consistencycheck
+consistencycheckurgent
+consistencyscan
+CONSISTENCYSCANINTERFACE
+CONSOLELOG
+constness
+constrange
+containsbreak
+CONTINUOUSSAMPLE
+contnode
+cookielib
+COOLDOWN
+coor
+COORDINATIONINTERFACE
+Coordinatorslist
+copyable
+COPYONLY
+coredump
+COROFLOW
+coroimpl
+coros
+COROUTILS
+COROUTINESIMPL
+corretto
+countforzeta
+countp
+coveragefile
+coveragetool
+cpack
+cpalloc
+CPath
+cplusplus
+CPointer
+cppcoro
+cppflags
+cpuacct
+CPUFLAG
+cpusec
+cpuset
+cpustate
+cquery
+cranges
+CRASHONERROR
+CREATEMETACLUSTER
+createtemplatedb
+createtenant
+crpf
+crps
+crt
+crtype
+crv
+CService
+CShim
+CSID
+CSIDL
+csimple
+CSource
+CSpace
+cstate
+cstream
+CStyle
+ctest
+CThread
+cti
+Ctrval
+ctxp
+ctxs
+ctz
+ctzll
+curm
+currentbin
+currentmodule
+CURRENTVER
+cvalue
+cvar
+CVersion
+cwpf
+cwps
+cxa
+cxxabi
+cxxflags
+CYEXAMPLEKEY
+dacl
+dadgar
+Dahab
+DATABASECONFIGURATION
+databased
+datacenter
+datadir
+datadistribution
+DATADISTRIBUTORINTERFACE
+Datadog
+Datadurable
+datafolder
+datahall
+dataloss
+datamove
+Datas
+datasize
+datastructure
+datebuf
+dateparser
+datestamp
+DBBG
+DBCF
+DBCORESTATE
+DBCS
+dbcx
+dbf
+dbgid
+dbi
+dbinfo
+dbits
+DBKVS
+DBOn
+DCBA
+DCFO
+dcid
+DCIs
+dcs
+DCTo
+ddbalance
+ddconfig
+ddcx
+ddd
+DDdispatch
+DDDo
+ddi
+ddid
+DDinit
+DDKVs
+DDRELOCATIONQUEUE
+dds
+DDSHARDTRACKER
+DDSHAREDCONTEXT
+ddsketch
+ddtc
+DDTXNPROCESSOR
+DDV
+ddvalue
+deadbeef
+deadcode
+debian
+Debouncer
+debuginfo
+debuglink
+DEBUGTRACE
+dechunked
+deciphertext
+declear
+DECODECACHE
+decodednode
+decoderange
+DECOMMISSIONMETACLUSTER
+deconfigure
+deconfigured
+deconflict
+deconstruction
+decryptedtext
+decryptor
+dedup
+deduping
+defattr
+defaulttenant
+defb
+definedness
+defragmented
+Defragmenting
+DEK
+Dekorte
+deleteme
+DELETERANGE
+deletetenant
+delref
+deltask
+deltatree
+demangled
+denormalizing
+dentalloc
+dentoffs
+Deompress
+depacked
+deprioritize
+deprioritized
+Deq
+Deregistering
+deserialiser
+destcontainer
+destdir
+destlog
+dests
+desync
+DETAILALLOCATORMEMUSAGE
+detailf
+DETERMINISTICRANDOM
+detmine
+devhelp
+devinfo
+devstat
+devstoreaccount
+devtoolset
+diffing
+digestlen
+dinfo
+Dini
+dirents
+dirfd
+dirp
+dirtyfeeds
+DISABLEDTESTS
+Disableon
+diskstats
+DISPLAYERROR
+distros
+dkr
+dladdr
+dlclose
+dlerror
+dlfcn
+Dlg
+dli
+dlobj
+dlpi
+dmb
+DMetric
+DMID
+dmitry
+dmv
+dname
+dnl
+DNSTo
+dnsutils
+docdemo
+docfields
+dochecksum
+docid
+docname
+docpreview
+doctestjson
+doctree
+documentclass
+Dof
+domaindata
+domainids
+donotuse
+dontcare
+DONTDUMP
+DONTREPLACE
+dontstop
+dosmaperr
+dotagging
+dotdot
+DOTNET
+dotrace
+DOUBLETIME
+downsample
+downsampled
+downsampling
+DPDK
+dpointer
+dprint
+dqv
+drd
+dre
+drps
+DRs
+DRU
+dryrun
+DSample
+dscur
+DSL
+dsltest
+DSocket
+dstend
+dstin
+dstofss
+dstonly
+dstream
+dstu
+dtags
+dto
+dtransaction
+dtype
+Duh
+DUMPTOKEN
+dupl
+DVL
+dvs
+DWAL
+easyaspi
+eax
+EBackup
+ebp
+EBrake
+ebx
+ecc
+ecode
+ecx
+edb
+edi
+EDIPARTY
+editline
+edmweb
+edx
+eee
+eexpected
+eflags
+EHsc
+eip
+ekb
+ekey
+ekeysel
+ekn
+eknl
+ekp
+EKPID
+EKPTo
+ELECTIONRESULT
+elsebody
+elts
+embiggen
+EMk
+emmintrin
+emoji
+emptydir
+emulu
+encryptionheader
+ENCRYPTKEYPROXYINTERFACE
+encryptor
+endcommit
+enddate
+endfunction
+endiannesses
+endk
+endkey
+endlink
+endloc
+endmacro
+Endof
+endp
+endproc
+endptr
+endregion
+endstr
+endt
+Endtime
+endversion
+ent
+entp
+ENVKNOB
+envsize
+eoe
+eoo
+EOperation
+epel
+epoc
+Eprev
+epu
+erc
+ERestore
+errbuf
+errorcode
+ERRORFILE
+errorlimit
+errorno
+errval
+erv
+ERWISE
+ESCAPINGK
+ESCAPINGKV
+Eschenburg
+esel
+esi
+ESide
+ESock
+EStage
+etcdir
+ethz
+etime
+ETLS
+etp
+Etter
+etterth
+EType
+evals
+evan
+evanbeurden
+Evensen
+eventfd
+EVENTLOG
+eventstream
+EVENTTYPES
+evfd
+evictable
+evp
+evt
+Exactrange
+examplebucket
+EXCED
+excludedcid
+excludedlocality
+excludemachineid
+excludeprocessid
+excludezoneid
+execinfo
+EXECUTELONGFUNCTION
+execv
+existingother
+EXITDIALOGOPTIONALTEXT
+Expecto
+exportloopref
+extclients
+extensibly
+EXTERNC
+extfile
+extrapath
+extrathingy
+fadvise
+failback
+failedlocality
+failmon
+FAILUREMONITOR
+fakekey
+fakeroot
+falloc
+famfamfam
+FANIN
+Faried
+FARSH
+FASTALLOC
+fastlog
+fastpath
+fastrand
+FASTREF
+fastrestore
+FAULTINJECTION
+fba
+fbase
+fbest
+fbits
+fblock
+FBPS
+fcharset
+fchmodat
+fchownat
+fcm
+FCopy
+Fct
+fcx
+fdb
+FDBAWS
+fdbbackup
+FDBBACKUPEXE
+FDBBENCH
+FDBBG
+fdbbin
+fdbblob
+fdbc
+FDBCDLL
+FDBCH
+FDBCINTERNAL
+fdbcli
+fdbclib
+fdbclient
+fdbclientlinktest
+FDBCLIEXE
+fdbconvert
+FDBCOPTIONSH
+FDBCTYPES
+fdbd
+fdbdecode
+fdbdir
+fdbdirectory
+fdbdocmonitor
+fdbdr
+FDBDREXE
+fdbempty
+fdbemptylist
+fdbenv
+fdbfileconfig
+fdbgolangsample
+fdbimpl
+fdbinvalid
+fdbjni
+fdbkey
+fdbkubernetesmonitor
+FDBLIB
+FDBLIBDIR
+fdblocality
+fdbmon
+fdbmonitor
+fdboptions
+FDBOPTIONSFILE
+FDBPY
+fdbpythonsample
+FDBRELEASE
+FDBREPO
+fdbrestore
+FDBRESTOREEXE
+FDBROCKSDBVERSION
+fdbrpc
+fdbrpclinktest
+fdbserver
+fdbservice
+fdbstatus
+fdbsubspace
+FDBSWIFTTEST
+fdbtmp
+fdbtuple
+FDBTYPES
+fdbver
+FDBVERSION
+fdc
+FDCWD
+fdesc
+fdisk
+fdopendir
+fdq
+fdr
+FDRPC
+FDSYNC
+feddb
+FEMI
+fetchkeys
+ffer
+ffi
+ffix
+FFpace
+FFs
+fghijk
+fha
+FHP
+fibonacci
+fiemap
+fii
+fildes
+fileconfig
+fileconfigure
+FILECONVERTER
+filedir
+FILENUM
+fileset
+filesz
+Filetime
+filetree
+filledup
+finalname
+FINDBEST
+Findjemalloc
+findnode
+Finduring
+finishlen
+fis
+fixedbyte
+fixedsize
+fixmap
+fixstr
+Fjst
+FKID
+FKPL
+flamegraph
+flatbuffer
+fldinst
+fldrslt
+flocalities
+flowbench
+FLOWLINENOISE
+flowlinktest
+flowlock
+flowprocess
+fluentd
+flushall
+fmap
+fmter
+fmutation
+fnil
+folderid
+fonttbl
+foobarbaz
+foos
+forcepurge
+forcetoken
+foundationdb
+foundcorruption
+fout
+fpacc
+FPFMT
+fpformat
+fpointer
+FPOWNED
+fpr
+fpregs
+fprint
+fpstate
+fpu
+frconn
+freeable
+freeifaddrs
+FREELIKE
+freelist
+freerealloc
+freetable
+fresults
+fromdata
+fromdocname
+fromfeed
+fromserverse
+frsize
+fsize
+fsnotify
+fsplit
+fss
+fstatat
+fstati
+fstatus
+fsync'ed
+fsyncs
+ftr
+ftss
+ftw
+ftwbuf
+FUBd
+FULLFILE
+fullnames
+fullsigset
+fullsnapshot
+futimens
+futs
+futurestream
+fvs
+fwe
+fworkers
+fwrites
+fxn
+Gamaarachchi
+Gbps
+gcov
+gcp
+gdbm
+gdeb
+GDI
+gdwarf
+gecos
+GENERATIONREG
+genericactors
+genpkey
+genprefix
+gento
+Geospatial
+getall
+getargspec
+getbuf
+getbyte
+GETCHANGES
+GETCIPHERKEYS
+getclass
+GETCLASSES
+GETCLUSTER
+GETCOMMITTEDVERSION
+getcwdb
+getdelta
+getdevs
+geten
+getent
+getevents
+getframe
+GETGENERATION
+getifaddrs
+getknob
+GETLEADER
+getlocation
+getm
+getmcontext
+getrange
+getrangefallback
+getrangekeys
+getrangereqandresult
+GETREADVERSION
+getslice
+GETSNAPSHOTANDCHANGES
+getstack
+gettenant
+GETTENANTGROUP
+gettid
+gettime
+gevent
+GFLAGS
+GFp
+ggdb
+GHS
+Giaquinta
+GJxxgu
+gkeys
+GKR
+gkv
+GKVR
+globalconf
+GLOBALCONFIG
+GLOBALDATA
+Globallevel
+globaltoc
+globl
+gmake
+gmtoff
+GNetwork
+GNUCXX
+GNUG
+GNUTLS
+goconst
+gocyclo
+godoc
+gofmt
+goimports
+golangci
+golibdir
+gomega
+googlebenchmark
+googletest
+GOPLATFORM
+gosec
+gosimple
+gotcha
+GOTPAGEOFF
+Gouvea
+govet
+gperfools
+gperftools
+gpi
+gpr
+GPROF
+Grabsch
+granulefiles
+granulesummary
+gregs
+grv
+grvproxy
+GRVPROXYINTERFACE
+GRVR
+gss
+Guenter
+GVR
+gztar
+hackish
+Hadoop
+handover
+handshakers
+Handshook
+hashbig
+HASHLEN
+hashlittle
+hashmask
+hashsize
+HASHSTATE
+hashword
+hasindu
+haswell
+hca
+HCAOPERATIONS
+hcmp
+HCOUNTER
+hdd
+hdr
+HEAD'ing
+headerdir
+headeroverlay
+heapelide
+heliu
+hellobadmd
+helloerror
+hexchars
+HHHH
+hhmm
+hier
+highcontention
+HIGHCONTENTIONPREFIXALLOCATOR
+highmem
+highwater
+hitarea
+hkf
+hkipad
+HKLM
+hlen
+hmmm
+holdme
+hotrange
+hotspotting
+howto
+hpux
+HQUERY
+HRESULT
+Hsieh
+htf
+htmlentitydefs
+htmlhelp
+htrace
+HTracer
+HTTPKV
+httpkvstore
+httpx
+hugepages
+HUGETLB
+husseydevin
+HVj
+Hwaci
+Hygeine
+IALP
+iarchive
+IASYNCFILE
+iat
+ibar
+ibuf
+ibytes
+Icelake
+ICLIENTAPI
+ICLOSABLE
+icloud
+ICONNECTION
+icpx
+icuuc
+ICX
+IDD
+idempotencyids
+idempotently
+IDIn
+IDini
+IDIRECTORY
+IDISKQUEUE
+IDISPATCHED
+idl
+idmp
+IDOn
+IDTo
+iend
+ierror
+ietf
+ifa
+ifaces
+ifaddrs
+ifbody
+Ifc
+IFCOUNT
+ifd
+IFDATA
+IFDB
+ifdefs
+ifi
+ifilter
+ifilterfalse
+ifm
+ifmd
+IFMIB
+ifmibdata
+ifmiblen
+ifstate
+IFuture
+ifying
+Igain
+iid
+IIF
+iit
+IKEYVALUECONTAINER
+IKEYVALUESTORE
+IKNOBCOLLECTION
+ikv
+IKVSOn
+iless
+imax
+imbalanced
+imds
+imm
+immintrin
+Immut
+IMO
+IMPLEM
+implib
+IMPLIBSO
+IMPLTYPE
+inbox
+inboxes
+includeall
+includedir
+includehidden
+incompletes
+incount
+INCREMENTALONLY
+indexbytes
+INDEXEDSET
+indexfolder
+indexnode
+indextext
+ineffassign
+inext
+infs
+initialising
+initialsplit
+initialsum
+INITSTATE
+initval
+injectedness
+inloop
+inodes
+inorder
+inp
+Inplacement
+inputpath
+inserti
+INSERTRANGE
+installable
+INSTALLDIR
+INSTDIR
+Intelli
+interf
+Interix
+INTERNALBUFFER
+interoperates
+interoperating
+interpocess
+intersphinx
+intf
+Inthe
+Inthis
+INTKEY
+intrin
+inttypes
+iob
+ioblock
+IOBSD
+iocb
+iocbpp
+IOCOMMON
+iocx
+IOERR
+iolog
+ionet
+ioresult
+iostreams
+IOVMALL
+iowait
+IPADD
+ipaddr
+ipaddresses
+ipage
+IPAGEENCRYPTIONKEYPROVIDER
+ipager
+IPREF
+ipw
+IPx
+IRANDOM
+irb
+Irix
+isb
+isdst
+ismbchar
+ismod
+ISOC
+isprefix
+isr
+iss
+ISSJIS
+istss
+itb
+ite
+itemcount
+itemspace
+iterationsi
+iterbytes
+IThread
+ITHREADPOOL
+itimerspec
+itlow
+ITLS
+itor
+itotal
+itp
+itr
+itup
+IUDP
+IUDPSOCKET
+ival
+ivalue
+ivar
+ivfsoverlay
+IVLEN
+iwgxxt
+IWYU
+izip
+Jalr
+javaresult
+jax
+JBLEN
+jboolean
+JBTYPE
+jbuffer
+jclass
+jdb
+jdouble
+jellycan
+jemalloc
+jenkins
+jenv
+jfield
+Jingyu
+jkl
+JLjava
+jmethod
+jmpbuf
+jni
+JNICALL
+JNIEXPORT
+jnilib
+jobject
+JOBOBJECT
+joern
+johscheuer
+joinall
+Joswiak
+JPS
+jratcliffscarab
+jscheuermann
+jserv
+jslocum
+JSO
+jstring
+jthrowable
+jti
+jto
+jwks
+jwts
+Kagan
+kaio
+KAIOF
+KAIOIO
+Kalicinski
+kbr
+kbt
+kctx
+kcv
+Kentaro
+Kerase
+kevent
+kevin
+KEYBACKEDRANGEMAP
+KEYBACKEDTYPES
+keybuf
+keycount
+keyid
+keykey
+Keylll
+KEYLOCATIONSERVICE
+keyname
+keyout
+keypair
+KEYPREFIXLEN
+KEYPROXY
+keyrange
+keyrangemap
+keysel
+keyselector
+keyserver
+keyspace
+keystr
+keyt
+keyval
+keyvaluearray
+keyvalues
+keyvault
+keywordsprimitives
+kfast
+Kfind
+kickstarted
+killall
+killproc
+KILLTYPE
+kinda
+kinfo
+Kinsert
+kipad
+kmax
+KMetrics
+KMSCONNECTORINTERFACE
+knobmanagement
+KNOBNAME
+KNOBPROTECTIVEGROUPS
+KNOBVALUE
+kocc
+Kohlhoff
+koo
+kopad
+kpath
+kpi
+KPQ
+kps
+kptr
+krange
+krarr
+KRL
+krm
+krv
+Krzys
+ksec
+ksecond
+KShard
+KSLR
+ksrv
+KTags
+kty
+Kurahone
+KVa
+kvb
+KVDo
+kvfile
+kvfiledump
+kvfilegeneratesums
+kvfileintegritycheck
+kvformat
+kvm
+kvp
+kvpairs
+kvptr
+KVQ
+kvr
+kvrange
+kvrefs
+kvs
+kvsstorerocksdb
+kvst
+kvstore
+kvstorerockddb
+KVV
+KWriters
+laggy
+laneq
+langversion
+largestkey
+largeval
+largs
+LASTACC
+lastbegin
+lastbkey
+lastcount
+lastline
+LASTOFFSET
+lastupdated
+LATENCYBANDCONFIG
+lbsum
+Lcom
+LCV
+ldconfig
+ldflags
+ldp
+ldr
+ldrb
+leaderboards
+LEADERELECTION
+LEADERELECTIONREG
+LEADERHEARTBEAT
+Leftoverkeys
+Leftovertasks
+lenr
+LESSTHAN
+letterpaper
+levelname
+LFB
+lfd
+Lfdbserver
+LFE
+LFU
+LIBCPP
+Libcrypto
+libcxx
+libdir
+Libeio
+LIBNAME
+libressl
+LIBTLS
+LIBURING
+linecopy
+linenoise
+linenr
+linkat
+linkflags
+linklen
+LINKMAP
+linkplain
+linktest
+lio
+LISTCLUSTERS
+listshards
+LISTTENANTGROUPS
+listtenants
+literalinclude
+Ljava
+ljoswiak
+lkey
+lkfs
+lld
+lll
+llu
+llx
+LMNPSZ
+lng
+LNOT
+LOADBALANCE
+LOADPLUGIN
+loadu
+LOCALCLIENTAPI
+localconf
+localdb
+localdir
+localentry
+localinstall
+localitygroup
+LOCALITYKEY
+localityvalue
+localmap
+localname
+localtoc
+locase
+locationmetadata
+lockaware
+lockf
+lockfree
+lockid
+Loesing
+logc
+logdir
+logf
+LOGFOLDER
+logg
+loggroup
+logm
+LOGPROTOCOLMESSAGE
+logqueue
+logr
+logrouter
+logserver
+logset
+logsize
+LOGSTDOUT
+logsystem
+LOGSYSTEMCONFIG
+LOGSYSTEMDISKQUEUEADAPTER
+logtool
+logversion
+LONGLONG
+lookuparray
+loopprofile
+Loopx
+lowframe
+lpath
+LPFIBER
+lpsz
+LPx
+Lredwood
+lround
+lrps
+LRs
+lrv
+lsan
+lsb
+lseek
+lseeki
+lsp
+lsr
+Lstatus
+LTx
+luid
+luoqi
+lwa
+machineid
+madvise
+makecontext
+Makefiles
+makeprop
+makewrapper
+Makoload
+makotrace
+malcolm
+MALLOCLIKE
+mallopt
+maltivec
+Manpreet
+mappedkeyvalue
+markdeep
+marktwtn
+MASTERDATA
+MASTERINTERFACE
+masterserver
+MATCHALL
+mavx
+MAXCYCLES
+maxdepth
+maxed
+MAXEVENTREASONS
+MAXEVENTS
+maxfd
+MAXHISTOGRAMUNIT
+maxing
+maxint
+maxlogs
+maxlogssize
+MAXPAIR
+MAXPATHNAME
+maxreqs
+maxtime
+maxv
+maxval
+maxversion
+mbcharlen
+mbegin
+MBper
+MBs
+mbsicmp
+mcall
+mcl
+MClocks
+mcontext
+MCount
+mcpu
+mcr
+mcs
+MCT
+mdctx
+MDENG
+memaccess
+memalign
+memcheck
+MEMLIMIT
+MEMLOCK
+memmem
+MEMORYKEYVALUESTORE
+MEMORYSTATUSEX
+memsize
+memsz
+memtable
+mergeable
+MERGEACCS
+messagepack
+metacluster
+METACLUSTERCONSISTENCY
+METACLUSTERDATA
+METACLUSTERINTERNAL
+METACLUSTERMETADATA
+METACLUSTERMETRICS
+METACLUSTEROPERATIONCONTEXT
+METACLUSTERREGISTRATION
+METACLUSTERTYPES
+METACLUSTERUTIL
+Metadatas
+METADATAVALUES
+metadoc
+metakey
+metaprogramming
+METASECTION
+methname
+methodset
+METRICLOGGER
+METRICSCONNFILE
+METRICSPREFIX
+mfcr
+mflr
+mfspr
+MFVRD
+MFVSRD
+mgi
+MGID
+mgmt
+mgs
+microbenchmark
+MICROVERSION
+Midl
+Minimalistic
+MINIX
+minormax
+minout
+Minusfrees
+minval
+minwait
+mismatchid
+mkdirat
+Mkeys
+mknodat
+mktuple
+mkv
+mlock
+mlockall
+mlog
+mlv
+mman
+mmikhail
+mmintrin
+mmmx
+mmsystem
+mno
+mnop
+mnt
+mntfromname
+MOCKDATADISTRIBUTOR
+MOCKDDTEST
+MOCKGLOBALSTATE
+modifica
+modindex
+modname
+modtime
+moduleauthor
+Modulelevel
+modulemap
+Monakhov
+monitorleader
+Moolenaar
+MOVEFILE
+movekeys
+moverid
+MOVEUNALIGNED
+MOVINGWINDOW
+movqda
+MOVs
+mpi
+mpilman
+mprotect
+MPSC
+mrd
+mro
+mrr
+msan
+msb
+mscorlib
+msghdr
+msglen
+msgname
+msgpack
+msgpackc
+msgsize
+msgtype
+msp
+msse
+msvcfdb
+mswin
+msync
+mta
+mtctr
+mtimespec
+mtlr
+mtouch
+Mtransactions
+mtune
+MTVRD
+MTVSRD
+MType
+mulo
+MULQ
+multicollisions
+MULTIGENERATION
+multiget
+MULTIINTERFACE
+multikey
+multilib
+multimaps
+Multipage
+multisets
+multitenancy
+multitest
+MULTIVERSIONASSIGNMENTVARS
+multiversionclient
+MULTIVERSIONTRANSACTION
+multj
+Mulvey
+Mumur
+munmap
+mutationk
+MUTATIONLIST
+mutationlogreader
+mutationref
+MUTATIONTRACKING
+mutexattr
+MVALUE
+mvc
+mvcc
+mvector
+mvn
+mworker
+myblob
+mydoc
+mys
+myset
+mytable
+nakedret
+namelen
+nameofs
+nameopt
+namesalloc
+namesoffs
+namlen
+natefinch
+NATIVEAPI
+navr
+Nawaz
+nbf
+nbytes
+ncat
+nccs
+ncis
+nck
+ndl
+ndvr
+NEEDAMD
+NEEDARMMAKECONTEXT
+NEEDPOWERMAKECONTEXT
+NEEDSWAPCONTEXT
+NEEDX
+NEELAM
+nelem
+NETBINDADD
+NETBINDDISABLE
+NETBINDREMOVE
+netinet
+NETLINK
+NETPATH
+NETWORKADDRESS
+NETWORKIMPL
+networksender
+networktest
+networktestclient
+networktestserver
+neu
+nev
+NEVERRAN
+newcluster
+newconsole
+NEWDB
+newdir
+NEWITERATOR
+newsm
+newsp
+newspace
+newss
+newtestvalue
+Nextlocation
+nexts
+nfds
+nfk
+nftw
+NIDs
+ninjatool
+nio
+nitems
+NKeys
+nkr
+nkv
+nlen
+NLOCK
+NLog
+nmap
+NNbits
+nnc
+nnn
+NNNN
+NNNNTTTT
+nnow
+NOACCESS
+noatime
+NOBOX
+NOBUFSTDOUT
+nocheckptr
+NOCLOSE
+Nodecount
+nodelete
+nodetext
+NODEV
+NOERR
+noexecstack
+NOGDI
+NOGPFAULTERRORBOX
+nohit
+NOLOAD
+NOMINMAX
+noncopyable
+nonfailed
+nonfull
+NONINFRINGEMENT
+Nonoptimal
+nonserializable
+nonumberh
+NOOOOOO
+noops
+Noordhuis
+noout
+noprefix
+noreplace
+nostdlib
+NOSTOPWHENDONE
+notcycle
+notext
+notjusthosting
+NOTNEEDED
+noverifycert
+noverifyname
+noverifytime
+noversionhistory
+nptr
+Npw
+nread
+nrstruct
+nseconds
+NSIZE
+nssb
+NTDDI
+ntext
+Nto
+ntohl
+ntotal
+NTransaction
+ntriggered
+nullf
+NULLVALUE
+numa
+numdevs
+numer
+Numof
+numtesters
+nvalid
+nvidia
+NWK
+NZCV
+oarchive
+objcopy
+OBJDIR
+objectnum
+objectwriter
+objtype
+obytes
+occ
+ocr
+ODIRECT
+Ofbyte
+ofd
+offboarding
+oflags
+ofs
+ofst
+OICI
+OKIf
+OKTETO
+OLAP
+oldb
+oldbeef
+OLDBINARYDIR
+OLDBINDIR
+oldsigset
+onchanges
+ONCONFLICT
+oneb
+oneline
+onsi
+onstack
+ooffset
+oom
+opackets
+opd
+openat
+OPENDATABASE
+OPENNETWORK
+opensslv
+opentest
+opfunc
+optarg
+Opteron
+optind
+optintf
+OPTIONAME
+OPTIONNAME
+OPTIONVALUE
+optype
+ori
+oscm
+osfhandle
+osname
+oss
+OSSL
+osx
+otel
+OTELMETRIC
+OTELSPANCONTEXTMESSAGE
+OTELSUM
+oth
+otherkey
+OTHERNAME
+othervalue
+OTLP
+oucp
+outdb
+outdir
+outfiles
+outfn
+outp
+outputtmp
+outt
+Overallocate
+overreplicated
+overreserving
+overutil
+overwriter
+ownedfp
+ows
+PACIASP
+packetization
+paddr
+PAddress
+pagedata
+pagerefs
+pagerlog
+papersize
+PARAMCHANGE
+parameterlist
+paramgen
+paramlist
+PARAMNAME
+paramtype
+PARAMVALUE
+pardirnatural
+parentpid
+parentwatch
+pargs
+participantgroup
+partitionings
+passcode
+passin
+Patronum
+paxos
+PClass
+PCLMUL
+pcnoordhuis
+pctile
+pctx
+pdata
+PDDS
+PDEATHSIG
+pdh
+pdhmsg
+peerc
+peerp
+Pelle
+PEMs
+Pentium
+perfcontext
+PERFMETRIC
+permi
+Peslyak
+pessimizing
+PFiles
+Pgain
+pgno
+pgrep
+PHANDLER
+phc
+phdr
+phnum
+physicalshardmove
+physicalshards
+pidfile
+pidinfo
+pidof
+pids
+Pilman
+PIncoming
+pinfo
+pingtest
+Pinnable
+pipefd
+pjvds
+pkeyopt
+pkgbuild
+pkgconfig
+pkv
+plainchar
+plinenoise
+plog
+plt
+plusone
+pmc
+pml
+pmutation
+PNetwork
+pointermap
+pointsize
+POLICYEXTRA
+POLICYINDEX
+POLICYSAMPLE
+POLICYTOTAL
+POLLIN
+POLLOUT
+ponger
+popcountll
+popout
+poppush
+posn
+postcheck
+postclients
+Postconditions
+Postgre
+postinst
+postread
+postrm
+postserver
+Potylitsin
+POutgoing
+Powerbook
+PPROCESS
+PPW
+PQSD
+praw
+prb
+prctl
+pread
+PREADWRITE
+preadwritelock
+prealloc
+preclients
+preconcurrency
+predfunc
+prefixpadding
+preflush
+Preftch
+preinst
+preinstalled
+Prepopulating
+prerendered
+prerm
+Preserializer
+preun
+preunserver
+prewrite
+pri
+Printables
+prioritization
+prioritylock
+PRIORITYMULTILOCK
+privkeyfile
+proactively
+procctl
+processenv
+processid
+PROCESSINFO
+processname
+procps
+procstk
+productbuild
+promhttp
+promisestream
+prot
+protocolversion
+PROXYCOMMITDATA
+prty
+Prv
+psapi
+pselect
+pseudobytes
+pssi
+pstack
+pstore
+pstr
+pstream
+psz
+pth
+pthread
+ptotal
+ptree
+pubkeyfile
+PUBLICADDR
+PUNPCKH
+PUNPCKL
+pvc
+PVer
+pwrite
+PWSTR
+pwsz
+pyam
+pyo
+pyresult
+PYTARGETDIR
+PYTARGETDIRCUSTOM
+pythonapi
+qcs
+QDelay
+qend
+QError
+QPresent
+qqq
+qrstuv
+qrv
+Qry
+qstart
+queryformat
+queuemodel
+QUEUEWAIT
+QUIETDATABASE
+quietdb
+qwe
+qwert
+qwertyu
+radixtree
+Ragne
+randchar
+randno
+RANDOMSEED
+RANDOMTEST
+rangeconfig
+RANGEFILE
+RANGEID
+RANGEMAP
+rangeop
+rangeresult
+Rangesb
+RANGESTREAM
+rangevalue
+ranlib
+rapidjson
+rapidxml
+ratekeeper
+RATEKEEPERINTERFACE
+ratelimit
+RATESAMPLE
+rawline
+rbg
+rbo
+rbp
+rbs
+Rbytes
+rcb
+rccr
+Rchar
+RCK
+rconn
+rcp
+rcx
+rdar
+rdc
+rdi
+rdit
+rdn
+RDQ
+RDQBS
+rdr
+rdri
+rdx
+rdynamic
+reachout
+readbg
+READBLOBGRANULE
+readgranulecontext
+readlinkat
+readload
+READNONE
+READPREFIX
+readrange
+readresult
+READTYPE
+READVALUE
+READWRITEWORKLOAD
+readycount
+READYOURWRITES
+reallocs
+rebalancer
+Rebooter
+recaching
+recipq
+recipsq
+reconfig
+recoverying
+RECOVERYSTATE
+recr
+Recursefilter
+redef
+redzones
+reentrantly
+refcounted
+refnode
+refres
+refspecific
+refuri
+regis
+REGISTERCLUSTER
+reinitialization
+relativelink
+rellen
+RELOCATESHARD
+relocators
+remoteload
+remotesend
+remotesubscribe
+REMOVECLUSTER
+renameat
+renametenant
+reorg
+repartitioning
+replicationdebug
+REPLICATIONTEST
+REPLYSTREAM
+REPORTCACHE
+REQBATCH
+reqlock
+reqpath
+reqprio
+reqq
+Requestb
+reqwait
+rerecruit
+reslock
+resnapshot
+resnapshotting
+RESOLVERINTERFACE
+respipe
+restarter
+RESTCLIENT
+RESTDo
+RESTKMS
+RESTORECLUSTER
+RESTORECOMMON
+RESTORECONTAINER
+RESTOREUTIL
+RESTOREWORKER
+RESTT
+retann
+retcode
+retrans
+retryable
+RETRYAFTER
+returntype
+returnvalue
+returnvoid
+revb
+REXMIT
+rfds
+Rfi
+rflags
+rfork
+Rivest
+rkey
+rki
+RKID
+RKMPU
+rkr
+rkv
+rlen
+rlim
+rlimit
+rmap
+RMK
+rmq
+rnds
+rocksdb
+ROCKSDBSTORAGE
+rolename
+rollforward
+rollsize
+rolltimes
+rotateleft
+rowlab
+rowlimit
+rpath
+RPCGENERICACTORS
+RPCNETWORKSENDER
+rpcs
+RPCTo
+RPF
+rpmbuild
+rpms
+rpmsave
+rpr
+rptr
+rri
+rrmxmx
+rrps
+rrr
+rrs
+RRW
+rsize
+rsp
+rsr
+rssize
+rsssize
+rto
+rtom
+rtr
+RTSS
+rtype
+rubydomain
+Ruid
+rundate
+RUnlock
+RUnn
+RUNRYWTRANSACTION
+RUNSCRIPTS
+RUNTESTS
+RUNTRANSACTION
+rvm
+RVs
+rwflag
+rwl
+RWLOCK
+RWMT
+ryanworl
+RYO
+ryow
+ryw
+RYWITERATOR
+RYWNo
+RYWT
+Ryzen
+saddr
+Sanfilippo
+sanitizers
+sanityrest
+SATF
+Sattolo
+SAXQ
+sblock
+sbox
+sbps
+sbuf
+sbuffer
+sbytes
+scalarize
+scalarized
+Scalia
+SCFK
+Scherer
+schmorp
+scl
+scm
+SCRIPTNAME
+sctx
+SCW
+sddl
+sdkutils
+sdt
+searchorder
+SECRETKEY
+sectionauthor
+SEEDCONNFILE
+SEEDCONNSTRING
+segfault
+segnb
+SEGV
+Sema
+SENDBUFFER
+sendfilev
+sendfilevec
+SENDPARAM
+separatecoordinator
+seprint
+seqno
+serdes
+SERVERDBINFO
+SERVERDIR
+SERVERKNOBCOLLECTION
+servershards
+Serverutils
+serviceaccount
+servicelog
+setaffinity
+setclass
+SETCLEAR
+SETCLEARRANGE
+setdetachstate
+setfunc
+setknob
+setlinebuf
+SETMASK
+setmcontext
+setname
+setrange
+setref
+setschedparam
+setscope
+setstacksize
+settime
+sev
+sevnum
+SFBTF
+SFC
+sfdb
+SFS
+SFT
+sfv
+SFW
+sget
+SGETRANGE
+sgi
+sgr
+shardedrocksdb
+Shardis
+SHARDSAFFECTEDBYTEAMFAILURE
+SHIBUKAWA
+shldl
+Shlwapi
+Shmem
+shmfd
+shmpath
+shmsize
+shrn
+shuf
+shufflevector
+SIGABORT
+sigaction
+sigaddset
+SIGCHLDs
+sigcontext
+sigemptyset
+sigev
+sigevent
+sigfillset
+siginfo
+SIGJBLEN
+SIGLEN
+sigmask
+Signalable
+signmask
+signo
+signode
+sigprof
+sigset
+simconfig
+simconnector
+simdir
+SIMENCRYPTKMSPROXY
+SIMENCRYPTVAULTPROXY
+simfdb
+simpledoc
+simsec
+SIMTIME
+SIMULATEDCLUSTER
+SIMULATORMACHINEINFO
+singlekey
+sipaddr
+Sisze
+sival
+skc
+skeys
+skfastrand
+skiplist
+skiplisttest
+SKIPTOTAL
+skr
+sks
+SKSC
+skv
+skylake
+SLAs
+sleeptest
+slf
+slli
+sln
+SLO
+sloesing
+slowpath
+SLOWTASK
+Slowx
+smallestkey
+smartypants
+Snapfiles
+SNAPSHOTCACHE
+SNAPSHOTINTERVAL
+SNAPUID
+sndrexmitpack
+sndtotal
+snprint
+socio
+soffset
+softirq
+sooo
+SOption
+sortedcontainers
+Sotomayor
+sourcedir
+sourcekit
+sourcelink
+Spah
+spamming
+spammy
+SPANCONTEXTMESSAGE
+spanid
+spd
+SPECIALKEYSPACE
+sphinxcontrib
+Splitable
+splt
+spop
+srcend
+srcofs
+srcs
+srcu
+SReclaimable
+sref
+sreqs
+SREs
+srfds
+srl
+srli
+SRPMS
+ssb
+sscount
+ssd
+sse
+ssection
+ssfailure
+SSget
+ssi
+ssid
+SSIn
+SSOn
+SSOr
+ssrs
+SSs
+ssshard
+sst
+sstables
+SSTo
+sstr
+stackcollapse
+stacksize
+stacktester
+startarg
+startdate
+startfn
+startkey
+startloc
+STARTOFFSET
+startproc
+startt
+starttime
+STARTUPINFO
+startvalue
+statdata
+statefulset
+statfs
+stati
+statinfo
+statm
+STATUSCLIENT
+statusdoc
+STATUSJSON
+statvfsat
+stdalign
+stdarg
+stdatomic
+stdbool
+stdc
+stdcpp
+stddef
+stdint
+stdtypes
+stdu
+steenking
+stenant
+stenantgroup
+sthrottled
+stksize
+stopcount
+STOPONERROR
+STORAGCHECKPOINT
+storagecache
+storageengine
+STORAGEMEMLIMIT
+STORAGEMETRICS
+storageserver
+storageserveractor
+STORAGESERVERINTERFACE
+STORAGESERVERSHARD
+STORAGESERVERUTILS
+STORAGEWIGGLEMETRICS
+storeu
+stp
+strb
+strdate
+strdup
+streamlinejs
+strecpy
+strem
+STREQUAL
+stricmp
+strinc
+stringbuffer
+STRINGIZE
+STRLESS
+strnicmp
+strsafe
+strsignal
+strtime
+strtoui
+structcheck
+stylechecker
+subcmd
+subcompactions
+subdoc
+subdocument
+subheaders
+subm
+subquery
+subsc
+subseq
+subsys
+Subtrace
+subtup
+subvector
+subworkloads
+SUNPRO
+SUnreclaim
+superpriority
+suspendkey
+svalue
+swapcontext
+swiftc
+swiftinterface
+swiftmodule
+swiftrt
+swisstables
+swversion
+symbian
+symbolicate
+symbolify
+symlinkat
+SYMLOOP
+syscalls
+sysconf
+sysctlbyname
+syskey
+syslimits
+sysmacros
+sysstat
+SYSTEMDATA
+tagid
+TAGPARTITIONEDLOGSYSTEM
+TAGPREFIXLENGTH
+tagstr
+TARGETDIR
+targetnode
+targetversion
+TARNAME
+taskbucket
+taskcount
+TASKFUNC
+taskimpl
+TASKPRIORITY
+taskready
+taskrunning
+taskset
+taskswitch
+tbd
+tbl
+tbz
+tcf
+TCHAR
+tci
+tclinken
+tcmalloc
+TCodec
+tcpdump
+tcps
+tcpstat
+tcpstatus
+tcx
+TDB
+tdisk
+tdmetric
+teambuilder
+tempfilename
+TENANTCONSISTENCY
+TENANTDATA
+TENANTENTRYCACHE
+tenantgroup
+tenantid
+TENANTINFO
+tenantmap
+TENANTNAME
+Tencent
+terabytes
+testcontainer
+TESTCTRL
+testdb
+testdelta
+TESTERINTERFACE
+testfilecorrectness
+testgraph
+testhost
+TESTINDEX
+testingstorage
+testint
+testkey
+TESTKNOBCOLLECTION
+testname
+Testnanosleep
+TESTONL
+testonly
+testonservers
+TESTPROBE
+testservers
+testspec
+TESTTOTAL
+testtype
+textmode
+tfp
+tgz
+thec
+Thiesfield
+THL
+thr
+threadcreate
+threadedly
+threadfuture
+THREADHELPER
+threadjoiner
+THREADPRIMITIVES
+THREADSAFETRANSACTION
+THREASHOLD
+threefoo
+throughputs
+ths
+Thu
+tids
+timebase
+timebomb
+timebuf
+timediff
+timedout
+timedwait
+timeframe
+timeinfo
+timep
+timepoint
+TIMERR
+timerslack
+timestamped
+timeval
+Timf
+tinfo
+tini
+tion
+titlesonly
+tjkuqo
+Tkconstants
+Tkdnd
+TKey
+tkfiledialog
+tksimpledialog
+tlcount
+tli
+tlog
+TLOGINTERFACE
+TLOGPOP
+tlogserver
+tlogset
+tlsca
+TLSCONFIG
+TLSNo
+tmpbuf
+tmpfs
+tmpfunc
+tname
+tnow
+tnsec
+tocbase
+toctree
+TODOREMOVE
+todos
+Toernig
+tofit
+TOKENCACHE
+tokencmp
+tokenfile
+tokenid
+tokensign
+Tokensx
+toobig
+toolset
+toparse
+topbar
+topdir
+topdirname
+TOPK
+toplevels
+totalbytes
+toversion
+TPCC
+tpcv
+TPLS
+tpointer
+tpschange
+tpsinterval
+tpsmax
+tpsmin
+TRACEALLOCATOR
+traceclock
+tracefile
+traceformat
+traceid
+tracepath
+traceroute
+trackit
+trackme
+transactio
+transactionality
+transactionread
+Transactionx
+Transactors
+transitioning
+transtype
+trapframe
+trapno
+TRBL
+treap
+TREEBENCHMARK
+treecontrol
+treecontroller
+treeviews
+triggerddteaminfolog
+triggerteaminfolog
+tring
+trollius
+trtr
+truncateat
+trx
+trycatch
+tsan
+tsav
+TSAVB
+Tschannen
+tsec
+TSection
+tsm
+TSRC
+tssi
+tssid
+TSSIn
+tssq
+tstamp
+tstart
+tsv
+TTask
+TTesters
+TTO
+tunables
+tuplename
+tupleorder
+tuplify
+tvdiff
+txns
+txnspec
+txntagging
+TXNTAGGINGPREFIX
+txntrace
+txs
+typecodes
+typeflag
+typenames
+typerolename
+typestring
+uber
+ubsan
+ubsum
+uby
+UChars
+ucnv
+ucontext
+UConverter
+ucp
+udata
+udt
+UError
+UIDP
+uidptr
+uids
+Uil
+uio
+ujrnpumbfvc
+uldlamzpspf
+ULOCK
+Ulr
+UMAAL
+UMAC
+UMULL
+unactorcompiler
+unalign
+unalignment
+unassigns
+unblobbified
+unblobbify
+unblobbifying
+unbufferedout
+uncache
+Uncoalesced
+unconfigured
+und
+underalignment
+undercount
+underfilled
+underutil
+underutilized
+unencodable
+unesc
+Unevictable
+Unexp
+UNFRAG
+unichr
+unimpl
+uniquify
+unistd
+UNITTESTPARAM
+unittests
+unixish
+unlinkat
+UNLINKONLOAD
+unmapping
+unmark
+unparam
+unparseable
+unpopped
+unproc
+unprofiled
+unprototyped
+unrecognize
+Unregistering
+unreplicated
+unretryable
+unseed
+unskipped
+unsync'd
+unthrottle
+unthrottling
+untrackable
+unversioned
+unversionstamped
+unwait
+uoffset
+uop
+upath
+updatekey
+updateranges
+Updatet
+UPDATETENANTGROUPS
+upgradeable
+upsmanship
+urand
+urandom
+urng
+usecase
+userdata
+userdel
+userid
+usertype
+usetenant
+ustring
+utimbuf
+utimensat
+utl
+utsname
+uuids
+Uvh
+uvlong
+vabdq
+vabsq
+vaddq
+vaddr
+vaeseq
+vaesmcq
+valbuf
+valgrind
+validkey
+validvalue
+vallen
+valreq
+valstr
+valt
+Valu
+valuemap
+Valuesize
+vandq
+varcheck
+varias
+vartype
+vbicq
+vblock
+vbslq
+vceqq
+vcgeq
+vcgtq
+vcleq
+vclt
+vcltq
+vcombine
+vcreate
+vcvtnq
+vcvtq
+vdbe
+vdup
+vdupq
+vectorize
+veorq
+VERSIONBATCH
+VERSIONEDBTREEDEBUG
+VERSIONEDMAP
+versionedmaptest
+versionepoch
+VERSIONLAG
+versionmap
+versionspersecond
+versionstamp
+Versionstampedvalue
+vexillographer
+vextq
+vfprint
+vfs
+vfy
+vget
+vgetq
+viewitems
+viewkeys
+viewvalues
+virtuals
+vlambda
+vld
+vlog
+vlong
+Vmalloc
+vmaxq
+VMEMLIMIT
+vminq
+vmlal
+vmmeter
+VMOV
+vmovl
+vmovn
+vms
+vmsplice
+vmul
+vmuleuw
+vmull
+vmulouw
+vmulq
+vmvnq
+vnegq
+Volker
+Vollmer
+vorrq
+vpadd
+vpaddlq
+VPMSUMD
+VPMSUMW
+vprint
+VPS
+vptr
+vqaddq
+vqdmulhq
+vqmovn
+vqmovun
+vqrdmulhq
+vqsubq
+vqtbl
+vqtbx
+vre
+vrecpeq
+vrecpsq
+vreinterpret
+vreinterpretq
+vrhaddq
+vrshrn
+vrsqrteq
+vrv
+vscprintf
+vseprint
+vsetq
+vsformat
+vshll
+vshlq
+vshrn
+vshrq
+vsize
+vsliq
+vsnprint
+vsraq
+vstamp
+VString
+vsubq
+vsx
+vtables
+vtableset
+vtags
+vtbl
+Vto
+vtune
+vtype
+vur
+vuzp
+vuzpq
+vvv
+VWG
+vws
+vyukov
+vzip
+Wadd
+waitable
+waitconnected
+waitfor
+waitfordone
+waitnext
+waitopen
+wal
+walpath
+Wappend
+war'ing
+WATCHIMPL
+watchinginboxes
+WATCHQ
+watchs
+Wbytemax
+Wbytemin
+WCE
+WCR
+wcsicmp
+wcx
+WDR
+wds
+websites
+WELLKNOWNENDPOINTS
+WERROR
+wfopen
+wfunc
+WFV
+wgen
+Wgenu
+WINAPI
+WINDOWSVOLUME
+winioctl
+winmm
+winnt
+WINVER
+wip
+withprobability
+WIVc
+wix
+wixobj
+wixproj
+WIXUI
+wlen
+WLTOKEN
+Wmax
+Wmin
+WMVALUE
+WNL
+WOAH
+wobj
+Wor
+WORKDIR
+WORKERINTERFACE
+WORKERLIST
+worstcase
+wpos
+wptr
+wqe
+wrep
+Writeback
+writebatch
+WRITEMAP
+writemode
+wrk
+wrklock
+wrkspc
+wrongtype
+wrps
+wrq
+Wset
+WVALUE
+WVR
+Wxor
+xab
+xacc
+xact
+XAttribute
+xbdascii
+Xcc
+xcheese
+xcond
+xcrun
+xctoolchain
+XDocument
+XElement
+xenix
+xer
+xerrors
+xff
+xffprefix
+XGLUE
+Xitems
+xlarge
+xlimit
+xlog
+xmlrpclib
+xmmintrin
+xmutex
+xone
+XOPEN
+xops
+xorshift
+XSAN
+xsecret
+xsi
+Xsuffix
+xthread
+xtn
+xumengpanda
+XUtn
+xwang
+xxdeadbeef
+xxh
+xxpermdi
+xxxat
+xxxx
+xxxxxx
+xxxxxxx
+XXXXXXXXX
+XXXXXXXXYY
+xyzdev
+yamr
+ycm
+ycsb
+YHJLq
+yiwu
+ymm
+Yoshiki
+Ytxn
+Zabcdefghijklmnopqrstuvwxyz
+zaefferer
+zapr
+zauras
+zcreads
+zcrefs
+ZEROJUNK
+zetan
+zetastatic
+Zhe
+zhewu
+Zhou
+zipf
+zipfian
+zipfianconstant
+zmm
+zoneid
+zookeeper
+Zpf
+ZVector
+zzz
diff --git a/.github/actions/spelling/line_forbidden.patterns b/.github/actions/spelling/line_forbidden.patterns
new file mode 100644
index 00000000000..5e1171c43e8
--- /dev/null
+++ b/.github/actions/spelling/line_forbidden.patterns
@@ -0,0 +1,163 @@
+# reject `m_data` as VxWorks defined it and that breaks things if it's used elsewhere
+# see [fprime](https://github.com/nasa/fprime/commit/d589f0a25c59ea9a800d851ea84c2f5df02fb529)
+# and [Qt](https://github.com/qtproject/qt-solutions/blame/fb7bc42bfcc578ff3fa3b9ca21a41e96eb37c1c7/qtscriptclassic/src/qscriptbuffer_p.h#L46)
+#\bm_data\b
+
+# Were you debugging using a framework with `fit()`?
+# If you have a framework that uses `it()` for testing and `fit()` for debugging a specific test,
+# you might not want to check in code where you skip all the other tests.
+#\bfit\(
+
+# Should be `anymore`
+\bany more[,.]
+
+# Should be `cannot` (or `can't`)
+# See https://www.grammarly.com/blog/cannot-or-can-not/
+# > Don't use `can not` when you mean `cannot`. The only time you're likely to see `can not` written as separate words is when the word `can` happens to precede some other phrase that happens to start with `not`.
+# > `Can't` is a contraction of `cannot`, and it's best suited for informal writing.
+# > In formal writing and where contractions are frowned upon, use `cannot`.
+# > It is possible to write `can not`, but you generally find it only as part of some other construction, such as `not only . . . but also.`
+# - if you encounter such a case, add a pattern for that case to patterns.txt.
+\b[Cc]an not\b
+
+# Should be `GitHub`
+(?"'`=(:])-(?:(?:J-|)(?:X?D(?!ate)|P(?!RER)|[WXY])|l(?!azy|ike|imit|ine|ist|ocal|ong)|f(?!ile|ract|ront))(?=[A-Z]{2,}|[A-Z][a-z]|[a-z]{2,})
+
+# hit-count: 309 file-count: 49
+# version suffix v#
+(?:(?<=[A-Z]{2})V|(?<=[a-z]{2}|[A-Z]{2})v)\d+(?:\b|(?=[a-zA-Z_]))
+
+# hit-count: 284 file-count: 55
+# hex runs
+\b[0-9a-fA-F]{16,}\b
+
+# hit-count: 209 file-count: 80
+# C network byte conversions
+(?:\d|\bh)to(?!ken)(?=[a-z])|(?:str|\b[a-zA-Z])to(?=[adhiklpun]\()
+
+Include="[^"]+"
+
+# hit-count: 144 file-count: 24
+# alternate printf markers if you run into latex and friends
+(?= 0.0.22)
+\\\w{2,}\{
+
+# hit-count: 2 file-count: 1
+# ANSI color codes
+(?:\\(?:u00|x)1[Bb]|\x1b|\\u\{1[Bb]\})\[\d+(?:;\d+|)m
+
+# hit-count: 1 file-count: 1
+# mailto urls
+mailto:[-a-zA-Z=;:/?%&0-9+@._]{3,}
+
+# hit-count: 1 file-count: 1
+# Non-English
+[a-zA-Z]*[ÀÁÂÃÄÅÆČÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝßàáâãäåæčçèéêëìíîïðñòóôõöøùúûüýÿĀāŁłŃńŅņŒœŚśŠšŜŝŸŽžź][a-zA-Z]{3}[a-zA-ZÀÁÂÃÄÅÆČÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝßàáâãäåæčçèéêëìíîïðñòóôõöøùúûüýÿĀāŁłŃńŅņŒœŚśŠšŜŝŸŽžź]*|[a-zA-Z]{3,}[ÀÁÂÃÄÅÆČÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝßàáâãäåæčçèéêëìíîïðñòóôõöøùúûüýÿĀāŁłŃńŅņŒœŚśŠšŜŝŸŽžź]|[ÀÁÂÃÄÅÆČÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝßàáâãäåæčçèéêëìíîïðñòóôõöøùúûüýÿĀāŁłŃńŅņŒœŚśŠšŜŝŸŽžź][a-zA-Z]{3,}
+
+:: MacOS
+
+/\*( [0-9a-f]{4,})+ \*/
+
+ActorStack=".*?"|".*"\s*\|\s*bin/acac
+
+"base64": ".*?"
+
+_mm_\w+
+
+# Questionably acceptable forms of `in to`
+# Personally, I prefer `log into`, but people object
+# https://www.tprteaching.com/log-into-log-in-to-login/
+\b(?:[Ll]og|[Ss]ign) in to\b
+
+# to opt in
+\bto opt in\b
+
+# acceptable duplicates
+# ls directory listings
+[-bcdlpsw](?:[-r][-w][-SsTtx]){3}[\.+*]?\s+\d+\s+\S+\s+\S+\s+\d+\s+
+# mount
+\bmount\s+-t\s+(\w+)\s+\g{-1}\b
+# C types and repeated CSS values
+\s(auto|center|div|inherit|long|LONG|none|normal|solid|thin|transparent|very)(?: \g{-1})+\s
+# C struct
+\bstruct\s+(\w+)\s+\g{-1}\b
+# go templates
+\s(\w+)\s+\g{-1}\s+\`(?:graphql|inject|json|yaml):
+# doxygen / javadoc / .net
+(?:[\\@](?:brief|groupname|link|t?param|return|retval)|(?:public|private|\[Parameter(?:\(.+\)|)\])(?:\s+(?:static|override|readonly|required|virtual))*)(?:\s+\{\w+\}|)\s+(\w+)\s+\g{-1}\s
+
+# Python package registry has incorrect spelling for macOS / Mac OS X
+"Operating System :: MacOS :: MacOS X"
+
+# Commit message -- Signed-off-by and friends
+^\s*(?:(?:Based-on-patch|Co-authored|Helped|Mentored|Reported|Reviewed|Signed-off)-by|Thanks-to): (?:[^<]*<[^>]*>|[^<]*)\s*$
+
+# Autogenerated revert commit message
+^This reverts commit [0-9a-f]{40}\.$
+
+# ignore long runs of a single character:
+\b([A-Za-z])\g{-1}{3,}\b
diff --git a/.github/actions/spelling/reject.txt b/.github/actions/spelling/reject.txt
new file mode 100644
index 00000000000..e5e4c3eef82
--- /dev/null
+++ b/.github/actions/spelling/reject.txt
@@ -0,0 +1,11 @@
+^attache$
+^bellow$
+benefitting
+occurences?
+^dependan.*
+^oer$
+Sorce
+^[Ss]pae.*
+^untill$
+^untilling$
+^wether.*
diff --git a/.github/workflows/spelling.yml b/.github/workflows/spelling.yml
new file mode 100644
index 00000000000..4c6113f5461
--- /dev/null
+++ b/.github/workflows/spelling.yml
@@ -0,0 +1,165 @@
+name: Check Spelling
+
+# Comment management is handled through a secondary job, for details see:
+# https://github.com/check-spelling/check-spelling/wiki/Feature%3A-Restricted-Permissions
+#
+# `jobs.comment-push` runs when a push is made to a repository and the `jobs.spelling` job needs to make a comment
+# (in odd cases, it might actually run just to collapse a comment, but that's fairly rare)
+# it needs `contents: write` in order to add a comment.
+#
+# `jobs.comment-pr` runs when a pull_request is made to a repository and the `jobs.spelling` job needs to make a comment
+# or collapse a comment (in the case where it had previously made a comment and now no longer needs to show a comment)
+# it needs `pull-requests: write` in order to manipulate those comments.
+
+# Updating pull request branches is managed via comment handling.
+# For details, see: https://github.com/check-spelling/check-spelling/wiki/Feature:-Update-expect-list
+#
+# These elements work together to make it happen:
+#
+# `on.issue_comment`
+# This event listens to comments by users asking to update the metadata.
+#
+# `jobs.update`
+# This job runs in response to an issue_comment and will push a new commit
+# to update the spelling metadata.
+#
+# `with.experimental_apply_changes_via_bot`
+# Tells the action to support and generate messages that enable it
+# to make a commit to update the spelling metadata.
+#
+# `with.ssh_key`
+# In order to trigger workflows when the commit is made, you can provide a
+# secret (typically, a write-enabled github deploy key).
+#
+# For background, see: https://github.com/check-spelling/check-spelling/wiki/Feature:-Update-with-deploy-key
+
+# Sarif reporting
+#
+# Access to Sarif reports is generally restricted (by GitHub) to members of the repository.
+#
+# Requires enabling `security-events: write`
+# and configuring the action with `use_sarif: 1`
+#
+# For information on the feature, see: https://github.com/check-spelling/check-spelling/wiki/Feature:-Sarif-output
+
+# Minimal workflow structure:
+#
+# on:
+# push:
+# ...
+# pull_request_target:
+# ...
+# jobs:
+# # you only want the spelling job, all others should be omitted
+# spelling:
+# # remove `security-events: write` and `use_sarif: 1`
+# # remove `experimental_apply_changes_via_bot: 1`
+# ... otherwise adjust the `with:` as you wish
+
+on:
+ push:
+ branches:
+ - "**"
+ tags-ignore:
+ - "**"
+ pull_request_target:
+ branches:
+ - "**"
+ types:
+ - 'opened'
+ - 'reopened'
+ - 'synchronize'
+ issue_comment:
+ types:
+ - 'created'
+
+jobs:
+ spelling:
+ name: Check Spelling
+ permissions:
+ contents: read
+ pull-requests: read
+ actions: read
+ security-events: write
+ outputs:
+ followup: ${{ steps.spelling.outputs.followup }}
+ runs-on: ubuntu-latest
+ if: ${{ contains(github.event_name, 'pull_request') || github.event_name == 'push' }}
+ concurrency:
+ group: spelling-${{ github.event.pull_request.number || github.ref }}
+ # note: If you use only_check_changed_files, you do not want cancel-in-progress
+ cancel-in-progress: true
+ steps:
+ - name: check-spelling
+ id: spelling
+ uses: check-spelling/check-spelling@prerelease
+ with:
+ suppress_push_for_open_pull_request: ${{ github.actor != 'dependabot[bot]' && 1 }}
+ checkout: true
+ check_file_names: 1
+ spell_check_this: check-spelling/spell-check-this@prerelease
+ post_comment: 0
+ use_magic_file: 1
+ report-timing: 1
+ warnings: bad-regex,binary-file,deprecated-feature,ignored-expect-variant,large-file,limited-references,no-newline-at-eof,noisy-file,non-alpha-in-dictionary,token-is-substring,unexpected-line-ending,whitespace-in-dictionary,minified-file,unsupported-configuration,no-files-to-check,unclosed-block-ignore-begin,unclosed-block-ignore-end
+ experimental_apply_changes_via_bot: 1
+ use_sarif: ${{ (!github.event.pull_request || (github.event.pull_request.head.repo.full_name == github.repository)) && 1 }}
+ wait-for-sarif-processing: true
+ check_extra_dictionaries: ''
+ extra_dictionaries: |
+ cspell:software-terms/dict/softwareTerms.txt
+ cspell:python/src/python/python-lib.txt
+ cspell:cpp/src/stdlib-cpp.txt
+ cspell:php/dict/php.txt
+ cspell:cpp/src/stdlib-c.txt
+ cspell:python/src/common/extra.txt
+ cspell:node/dict/node.txt
+ cspell:python/src/python/python.txt
+ cspell:java/src/java.txt
+ cspell:golang/dict/go.txt
+ cspell:mnemonics/src/mnemonics.txt
+ cspell:aws/aws.txt
+ cspell:filetypes/filetypes.txt
+ cspell:java/src/java-terms.txt
+ cspell:fullstack/dict/fullstack.txt
+ cspell:typescript/dict/typescript.txt
+ cspell:r/src/r.txt
+ cspell:scala/dict/scala.txt
+ cspell:swift/src/swift.txt
+ cspell:npm/dict/npm.txt
+ cspell:css/dict/css.txt
+ cspell:django/dict/django.txt
+ cspell:k8s/dict/k8s.txt
+ cspell:html/dict/html.txt
+ cspell:cpp/src/lang-keywords.txt
+ cspell:cpp/src/ecosystem.txt
+ cspell:ruby/dict/ruby.txt
+ cspell:dotnet/dict/dotnet.txt
+ cspell:cpp/src/compiler-msvc.txt
+ cspell:shell/dict/shell-all-words.txt
+ cspell:cpp/src/compiler-clang-attributes.txt
+ cspell:cpp/src/lang-jargon.txt
+ cspell:svelte/dict/svelte.txt
+
+ update:
+ name: Update PR
+ permissions:
+ contents: write
+ pull-requests: write
+ actions: read
+ runs-on: ubuntu-latest
+ if: ${{
+ github.event_name == 'issue_comment' &&
+ github.event.issue.pull_request &&
+ contains(github.event.comment.body, '@check-spelling-bot apply')
+ }}
+ concurrency:
+ group: spelling-update-${{ github.event.issue.number }}
+ cancel-in-progress: false
+ steps:
+ - name: apply spelling updates
+ uses: check-spelling/check-spelling@prerelease
+ with:
+ experimental_apply_changes_via_bot: 1
+ checkout: true
+ ssh_key: "${{ secrets.CHECK_SPELLING }}"