diff --git a/.automation/README.md b/.automation/README.md deleted file mode 100644 index 212f600e755..00000000000 --- a/.automation/README.md +++ /dev/null @@ -1,28 +0,0 @@ -# .automation - -This folder holds automation scripts to help `deploy` and `cleanup` **DockerHub** images of the **MegaLinter** - -## cleanup-docker.sh - -This script uses **GitHub Actions** so that when a PR is merged and closed, the **GitHub Action** is triggered. -It will then search **DockerHub** for the image that was deployed during the development, and remove it. - -## upload-docker.sh - -This script uses **GitHub Actions** so that when a push to the repository is committed, it will complete the following: - -- Checkout the source code -- Build the **Docker** container for **MegaLinter** using that source code -- Upload the container to **DockerHub** - -When the script is triggered on main, it will push with the tag:**latest** which is used by all scripting for general availability. -When the script is triggered in a branch, it will push with the tag:**NameOfBranch** which can be used for: - -- _testing_ -- _troubleshooting_ -- _debugging_ -- **Note:** The branch name will be reduced to alphanumeric for consistency and uploading - -## test - -This folder holds all **Test Cases** to help run the _CI/CT/CD_ process for the **MegaLinter**. diff --git a/.automation/build.py b/.automation/build.py index 812c5b2d053..801457402e1 100644 --- a/.automation/build.py +++ b/.automation/build.py @@ -25,7 +25,7 @@ import yaml from bs4 import BeautifulSoup from giturlparse import parse -from megalinter import utils +from megalinter import config, utils from megalinter.constants import ( DEFAULT_DOCKERFILE_APK_PACKAGES, DEFAULT_RELEASE, @@ -38,15 +38,17 @@ ML_REPO_URL, ) from requests.adapters import HTTPAdapter -from requests.packages.urllib3.util.retry import Retry +from urllib3.util import Retry from webpreview import web_preview RELEASE = "--release" in sys.argv +UPDATE_STATS = "--stats" in sys.argv or RELEASE is True UPDATE_DOC = "--doc" in sys.argv or RELEASE is True UPDATE_DEPENDENTS = "--dependents" in sys.argv UPDATE_CHANGELOG = "--changelog" in sys.argv IS_LATEST = "--latest" in sys.argv DELETE_DOCKERFILES = "--delete-dockerfiles" in sys.argv +DELETE_TEST_CLASSES = "--delete-test-classes" in sys.argv # Release args management if RELEASE is True: @@ -88,6 +90,7 @@ HELPS_FILE = REPO_HOME + "/.automation/generated/linter-helps.json" LINKS_PREVIEW_FILE = REPO_HOME + "/.automation/generated/linter-links-previews.json" DOCKER_STATS_FILE = REPO_HOME + "/.automation/generated/flavors-stats.json" +PLUGINS_FILE = REPO_HOME + "/.automation/plugins.yml" FLAVORS_DIR = REPO_HOME + "/flavors" LINTERS_DIR = REPO_HOME + "/linters" GLOBAL_FLAVORS_FILE = REPO_HOME + "/megalinter/descriptors/all_flavors.json" @@ -103,7 +106,7 @@ IDE_LIST = { "atom": {"label": "Atom", "url": "https://atom.io/"}, - "brackets": {"label": "Brackets", "url": "http://brackets.io/"}, + "brackets": {"label": "Brackets", "url": "https://brackets.io/"}, "eclipse": {"label": "Eclipse", "url": "https://www.eclipse.org/"}, "emacs": {"label": "Emacs", "url": "https://www.gnu.org/software/emacs/"}, "idea": { @@ -115,6 +118,18 @@ "vscode": {"label": "Visual Studio Code", "url": "https://code.visualstudio.com/"}, } +DEPRECATED_LINTERS = [ + "CREDENTIALS_SECRETLINT", # Removed in v6 + "DOCKERFILE_DOCKERFILELINT", # Removed in v6 + "GIT_GIT_DIFF", # Removed in v6 + "PHP_BUILTIN", # Removed in v6 + "KUBERNETES_KUBEVAL", # Removed in v7 + "REPOSITORY_GOODCHECK", # Removed in v7 + "SPELL_MISSPELL", # Removed in v7 + "TERRAFORM_CHECKOV", # Removed in v7 + "TERRAFORM_KICS", # Removed in v7 +] + DESCRIPTORS_FOR_BUILD_CACHE = None @@ -125,7 +140,7 @@ def generate_all_flavors(): for flavor, flavor_info in flavors.items(): generate_flavor(flavor, flavor_info) update_mkdocs_and_workflow_yml_with_flavors() - if UPDATE_DOC is True: + if UPDATE_STATS is True: try: update_docker_pulls_counter() except requests.exceptions.ConnectionError as e: @@ -153,7 +168,7 @@ def generate_flavor(flavor, flavor_info): descriptor_and_linters += [descriptor] flavor_descriptors += [descriptor["descriptor_id"]] # Get install instructions at linter level - linters = megalinter.linter_factory.list_all_linters() + linters = megalinter.linter_factory.list_all_linters(({"request_id": "build"})) requires_docker = False for linter in linters: if match_flavor(vars(linter), flavor, flavor_info) is True: @@ -312,7 +327,11 @@ def build_dockerfile( ) docker_from += [dockerfile_item] # ARG - elif dockerfile_item.startswith("ARG"): + elif dockerfile_item.startswith("ARG") or ( + len(dockerfile_item.splitlines()) > 1 + and dockerfile_item.splitlines()[0].startswith("# renovate: ") + and dockerfile_item.splitlines()[1].startswith("ARG") + ): docker_arg += [dockerfile_item] # COPY elif dockerfile_item.startswith("COPY"): @@ -389,13 +408,13 @@ def build_dockerfile( if "linter_name" in item and "pip" in item["install"]: pipvenv_packages[item["linter_name"]] = item["install"]["pip"] # Collect python packages - elif "pip" in item["install"]: + if "pip" in item["install"]: pip_packages += item["install"]["pip"] # Collect ruby packages - elif "gem" in item["install"]: + if "gem" in item["install"]: gem_packages += item["install"]["gem"] # Collect cargo packages (rust) - elif "cargo" in item["install"]: + if "cargo" in item["install"]: cargo_packages += item["install"]["cargo"] # Add node install if node packages are here if len(npm_packages) > 0: @@ -403,6 +422,20 @@ def build_dockerfile( # Add ruby apk packages if gem packages are here if len(gem_packages) > 0: apk_packages += ["ruby", "ruby-dev", "ruby-bundler", "ruby-rdoc"] + # Separate args used in FROM instructions from others + all_from_instructions = "\n".join(list(dict.fromkeys(docker_from))) + docker_arg_top = [] + docker_arg_main = [] + for docker_arg_item in docker_arg: + match = re.match( + r"(?:# renovate: .*\n)?ARG\s+([a-zA-Z_][a-zA-Z0-9_]*)\s*=?\s*", + docker_arg_item, + ) + arg_name = match.group(1) + if arg_name in all_from_instructions: + docker_arg_top += [docker_arg_item] + else: + docker_arg_main += [docker_arg_item] # Replace between tags in Dockerfile # Commands replace_in_file( @@ -411,11 +444,17 @@ def build_dockerfile( "#FROM__END", "\n".join(list(dict.fromkeys(docker_from))), ) + replace_in_file( + dockerfile, + "#ARGTOP__START", + "#ARGTOP__END", + "\n".join(list(dict.fromkeys(docker_arg_top))), + ) replace_in_file( dockerfile, "#ARG__START", "#ARG__END", - "\n".join(list(dict.fromkeys(docker_arg))), + "\n".join(list(dict.fromkeys(docker_arg_main))), ) replace_in_file( dockerfile, @@ -433,7 +472,7 @@ def build_dockerfile( apk_install_command = "" if len(apk_packages) > 0: apk_install_command = ( - "RUN apk add --update --no-cache \\\n " + "RUN apk add --no-cache \\\n " + " \\\n ".join(list(dict.fromkeys(apk_packages))) + " \\\n && git config --global core.autocrlf true" ) @@ -447,7 +486,17 @@ def build_dockerfile( cargo_packages.remove("clippy") rust_commands += ["rustup component add clippy"] keep_rustup = True - if len(cargo_packages) > 0: + # Only COMPILER_ONLY in descriptors just to have rust toolchain in the Dockerfile + if all(p == "COMPILER_ONLY" for p in cargo_packages): + rust_commands += [ + 'echo "No cargo package to install, we just need rust for dependencies"' + ] + keep_rustup = True + # Cargo packages to install minus empty package + elif len(cargo_packages) > 0: + cargo_packages = [ + p for p in cargo_packages if p != "COMPILER_ONLY" + ] # remove empty string packages cargo_cmd = "cargo install --force --locked " + " ".join( list(dict.fromkeys(cargo_packages)) ) @@ -473,19 +522,24 @@ def build_dockerfile( + "RUN npm --no-cache install --ignore-scripts --omit=dev \\\n " + " \\\n ".join(list(dict.fromkeys(npm_packages))) + " && \\\n" - + " npm audit fix --audit-level=critical || true \\\n" + # + ' echo "Fixing audit issues with npm…" \\\n' + # + " && npm audit fix --audit-level=critical || true \\\n" # Deactivated for now + + ' echo "Cleaning npm cache…" \\\n' + " && npm cache clean --force || true \\\n" + + ' && echo "Changing owner of node_modules files…" \\\n' + ' && chown -R "$(id -u)":"$(id -g)" node_modules # fix for https://github.com/npm/cli/issues/5900 \\\n' - + " && rm -rf /root/.npm/_cacache \\\n" - + ' && find . -name "*.d.ts" -delete \\\n' - + ' && find . -name "*.map" -delete \\\n' - + ' && find . -name "*.npmignore" -delete \\\n' - + ' && find . -name "*.travis.yml" -delete \\\n' - + ' && find . -name "CHANGELOG.md" -delete \\\n' - + ' && find . -name "README.md" -delete \\\n' - + ' && find . -name ".package-lock.json" -delete \\\n' - + ' && find . -name "package-lock.json" -delete \\\n' - + ' && find . -name "README.md" -delete\n' + + ' && echo "Removing extra node_module files…" \\\n' + + ' && find . \\( -not -path "/proc" \\)' + + " -and \\( -type f" + + ' \\( -iname "*.d.ts"' + + ' -o -iname "*.map"' + + ' -o -iname "*.npmignore"' + + ' -o -iname "*.travis.yml"' + + ' -o -iname "CHANGELOG.md"' + + ' -o -iname "README.md"' + + ' -o -iname ".package-lock.json"' + + ' -o -iname "package-lock.json"' + + " \\) -o -type d -name /root/.npm/_cacache \\) -delete \n" + "WORKDIR /\n" ) replace_in_file(dockerfile, "#NPM__START", "#NPM__END", npm_install_command) @@ -497,7 +551,8 @@ def build_dockerfile( + " PYTHONDONTWRITEBYTECODE=1 pip3 install --no-cache-dir --upgrade \\\n '" + "' \\\n '".join(list(dict.fromkeys(pip_packages))) + "' && \\\n" - + 'find . | grep -E "(/__pycache__$|\\.pyc$|\\.pyo$)" | xargs rm -rf && \\\n' + + r"find . \( -type f \( -iname \*.pyc -o -iname \*.pyo \) -o -type d -iname __pycache__ \) -delete" + + " \\\n && " + "rm -rf /root/.cache" ) replace_in_file(dockerfile, "#PIP__START", "#PIP__END", pip_install_command) @@ -523,8 +578,10 @@ def build_dockerfile( env_path_command += f":/venvs/{pip_linter}/bin" pipenv_install_command = pipenv_install_command[:-2] # remove last \ pipenv_install_command += ( - ' \\\n && find . | grep -E "(/__pycache__$|\\.pyc$|\\.pyo$)" | xargs rm -rf ' - + "&& rm -rf /root/.cache\n" + " \\\n && " + + r"find /venvs \( -type f \( -iname \*.pyc -o -iname \*.pyo \) -o -type d -iname __pycache__ \) -delete" + + " \\\n && " + + "rm -rf /root/.cache\n" + env_path_command ) else: @@ -561,8 +618,22 @@ def match_flavor(item, flavor, flavor_info): and flavor in item["descriptor_flavors_exclude"] ): return False + # Flavor all elif flavor == "all": return True + # Formatter flavor + elif flavor == "formatters": + if "is_formatter" in item and item["is_formatter"] is True: + return True + elif ( + "descriptor_flavors" in item + and flavor in item["descriptor_flavors"] + and "linter_name" not in item + ): + return True + else: + return False + # Other flavors elif "descriptor_flavors" in item: if flavor in item["descriptor_flavors"] or ( "all_flavors" in item["descriptor_flavors"] @@ -592,7 +663,7 @@ def generate_linter_dockerfiles(): if "install" in descriptor: descriptor_items += [descriptor] descriptor_linters = megalinter.linter_factory.build_descriptor_linters( - descriptor_file, None + descriptor_file, {"request_id": "build"} ) # Browse descriptor linters for linter in descriptor_linters: @@ -682,11 +753,12 @@ def generate_linter_dockerfiles(): def generate_linter_test_classes(): test_linters_root = f"{REPO_HOME}/megalinter/tests/test_megalinter/linters" - # Remove all the contents of test_linters_root beforehand so that the result is deterministic - shutil.rmtree(os.path.realpath(test_linters_root)) - os.makedirs(os.path.realpath(test_linters_root)) + if DELETE_TEST_CLASSES is True: + # Remove all the contents of test_linters_root beforehand so that the result is deterministic + shutil.rmtree(os.path.realpath(test_linters_root)) + os.makedirs(os.path.realpath(test_linters_root)) - linters = megalinter.linter_factory.list_all_linters() + linters = megalinter.linter_factory.list_all_linters(({"request_id": "build"})) for linter in linters: if linter.name is not None: linter_name = linter.name @@ -698,7 +770,7 @@ def generate_linter_test_classes(): test_class_code = f"""# !/usr/bin/env python3 \"\"\" Unit tests for {linter.descriptor_id} linter {linter.linter_name} -This class has been automatically {'@'}generated by .automation/build.py, please do not update it manually +This class has been automatically {'@'}generated by .automation/build.py, please don't update it manually \"\"\" from unittest import TestCase @@ -733,7 +805,7 @@ def list_descriptors_for_build(): descriptor = megalinter.linter_factory.build_descriptor_info(descriptor_file) descriptors += [descriptor] descriptor_linters = megalinter.linter_factory.build_descriptor_linters( - descriptor_file + descriptor_file, {"request_id": "build"} ) linters_by_type[descriptor_linters[0].descriptor_type] += descriptor_linters DESCRIPTORS_FOR_BUILD_CACHE = descriptors, linters_by_type @@ -782,8 +854,10 @@ def generate_documentation(): + f"[**{len(linters_by_type['tooling_format'])}** tooling formats](#tooling-formats) " + "and **ready to use out of the box**, as a GitHub action or any CI system " + "**highly configurable** and **free for all uses**.\n\n" - + "[**Upgrade to MegaLinter v6 !**]" - + "(https://github.com/oxsecurity/megalinter/issues/1592)" + + "[**Switch to MegaLinter v7 !**]" + + "(https://github.com/oxsecurity/megalinter/issues/2692)\n\n" + + "[![Upgrade to v7 Video](https://img.youtube.com/vi/6NSBzq01S9g/0.jpg)]" + + "(https://www.youtube.com/watch?v=6NSBzq01S9g)" ) # Update README.md file replace_in_file( @@ -809,6 +883,18 @@ def generate_documentation(): "", flavors_table_md_str, ) + + # Build & Update flavors table + plugins_table_md = build_plugins_md_table() + plugins_table_md_str = "\n".join(plugins_table_md) + logging.info("Generated Plugins table for README:\n" + plugins_table_md_str) + replace_in_file( + f"{REPO_HOME}/README.md", + "", + "", + plugins_table_md_str, + ) + # Generate flavors individual documentations flavors = megalinter.flavor_factory.get_all_flavors() for flavor, flavor_info in flavors.items(): @@ -832,7 +918,7 @@ def generate_descriptor_documentation(descriptor): f"{descriptor.get('descriptor_id')} files in MegaLinter", "---", "", - f"", + f"", f"", ] # Title @@ -896,12 +982,50 @@ def generate_descriptor_documentation(descriptor): "| ----------------- | -------------- | -------------- |", ] descriptor_md += [ + f"| {descriptor.get('descriptor_id')}_PRE_COMMANDS | List of bash commands to run before the linters | None |", + f"| {descriptor.get('descriptor_id')}_POST_COMMANDS | List of bash commands to run after the linters | None |", f"| {descriptor.get('descriptor_id')}_FILTER_REGEX_INCLUDE | Custom regex including filter | |", f"| {descriptor.get('descriptor_id')}_FILTER_REGEX_EXCLUDE | Custom regex excluding filter | |", "", ] add_in_config_schema_file( [ + [ + f"{descriptor.get('descriptor_id')}_PRE_COMMANDS", + { + "$id": f"#/properties/{descriptor.get('descriptor_id')}_PRE_COMMANDS", + "type": "array", + "title": f"Pre commands for {descriptor.get('descriptor_id')} descriptor", + "examples": [ + [ + { + "command": "composer install", + "continue_if_failed": False, + "cwd": "workspace", + } + ] + ], + "items": {"$ref": "#/definitions/command_info"}, + }, + ], + [ + f"{descriptor.get('descriptor_id')}_POST_COMMANDS", + { + "$id": f"#/properties/{descriptor.get('descriptor_id')}_POST_COMMANDS", + "type": "array", + "title": f"Post commands for {descriptor.get('descriptor_id')} descriptor", + "examples": [ + [ + { + "command": "npm run test", + "continue_if_failed": False, + "cwd": "workspace", + } + ] + ], + "items": {"$ref": "#/definitions/command_info"}, + }, + ], [ f"{descriptor.get('descriptor_id')}_FILTER_REGEX_INCLUDE", { @@ -994,8 +1118,8 @@ def generate_flavor_documentation(flavor_id, flavor, linters_tables_md): def dump_as_json(value: Any, empty_value: str) -> str: if not value: return empty_value - # Covert any value to string with JSON - # Do not indent since markdown table supports single line only + # Convert any value to string with JSON + # Don't indent since markdown table supports single line only result = json.dumps(value, indent=None, sort_keys=True) return f"`{result}`" @@ -1005,11 +1129,15 @@ def process_type(linters_by_type, type1, type_label, linters_tables_md): col_header = ( "Language" if type1 == "language" - else "Format" - if type1 == "format" - else "Tooling format" - if type1 == "tooling_format" - else "Code quality checker" + else ( + "Format" + if type1 == "format" + else ( + "Tooling format" + if type1 == "tooling_format" + else "Code quality checker" + ) + ) ) linters_tables_md += [ f"### {type_label}", @@ -1073,7 +1201,7 @@ def process_type(linters_by_type, type1, type_label, linters_tables_md): f" to analyze {linter.descriptor_id} files", "---", "", - f"", + f"", ] # Header image as title if ( @@ -1114,8 +1242,10 @@ def process_type(linters_by_type, type1, type_label, linters_tables_md): else: linter_doc_md += [f"# {linter.linter_name}\n{md_individual_extra}"] - # Indicate that a linter is disabled in this version + # Indicate that a linter is deprecated in this version + title_prefix = "" if hasattr(linter, "deprecated") and linter.deprecated is True: + title_prefix = "(deprecated) " linter_doc_md += [""] linter_doc_md += ["> This linter has been deprecated.", ">"] @@ -1139,9 +1269,10 @@ def process_type(linters_by_type, type1, type_label, linters_tables_md): # Indicate that a linter is disabled in this version if hasattr(linter, "disabled") and linter.disabled is True: linter_doc_md += [""] - linter_doc_md += [ - "_This linter has been temporary disabled in this version_" - ] + linter_doc_md += ["_This linter has been disabled in this version_"] + if hasattr(linter, "disabled_reason") and linter.disabled_reason is True: + linter_doc_md += [""] + linter_doc_md += [f"_Disabled reason: {linter.disabled_reason}_"] # Linter text , if defined in YML descriptor if hasattr(linter, "linter_text") and linter.linter_text: @@ -1185,7 +1316,7 @@ def process_type(linters_by_type, type1, type_label, linters_tables_md): config_file = f"TEMPLATES{os.path.sep}{linter.config_file_name}" if os.path.isfile(f"{REPO_HOME}{os.path.sep}{config_file}"): linter_doc_md += [ - f" - If custom `{linter.config_file_name}` config file is not found, " + f" - If custom `{linter.config_file_name}` config file isn't found, " f"[{linter.config_file_name}]({TEMPLATES_URL_ROOT}/{linter.config_file_name}){{target=_blank}}" " will be used" ] @@ -1253,7 +1384,7 @@ def process_type(linters_by_type, type1, type_label, linters_tables_md): if linter.cli_lint_fix_arg_name is not None: linter_doc_md += [ "", - f"- Enable **auto-fixes** by adding `{linter.name}` in [APPLY_FIXES variable]({apply_fixes_url})", + f"- Enable **autofixes** by adding `{linter.name}` in [APPLY_FIXES variable]({apply_fixes_url})", ] linter_doc_md += [ "", @@ -1279,6 +1410,11 @@ def process_type(linters_by_type, type1, type_label, linters_tables_md): f"| {linter.name}_ARGUMENTS | User custom arguments to add in linter CLI call
" f'Ex: `-s --foo "bar"` | |' ] + linter_doc_md += [ + f"| {linter.name}_COMMAND_REMOVE_ARGUMENTS | User custom arguments to remove " + "from command line before calling the linter
" + f'Ex: `-s --foo "bar"` | |' + ] # Files can be filtered only in cli_lint_mode is file or list_of_files if linter.cli_lint_mode != "project": linter_doc_md += [ @@ -1294,7 +1430,7 @@ def process_type(linters_by_type, type1, type_label, linters_tables_md): { "$id": f"#/properties/{linter.name}_FILTER_REGEX_INCLUDE", "type": "string", - "title": f"{linter.name}: Including Regex", + "title": f"{title_prefix}{linter.name}: Including Regex", }, ], [ @@ -1302,7 +1438,7 @@ def process_type(linters_by_type, type1, type_label, linters_tables_md): { "$id": f"#/properties/{linter.name}_FILTER_REGEX_EXCLUDE", "type": "string", - "title": f"{linter.name}: Excluding Regex", + "title": f"{title_prefix}{linter.name}: Excluding Regex", }, ], ] @@ -1342,7 +1478,7 @@ def process_type(linters_by_type, type1, type_label, linters_tables_md): { "$id": f"#/properties/{linter.name}_CLI_LINT_MODE", "type": "string", - "title": f"{linter.name}: Override default cli lint mode", + "title": f"{title_prefix}{linter.name}: Override default cli lint mode", "default": linter.cli_lint_mode, "enum": enum, }, @@ -1375,7 +1511,10 @@ def process_type(linters_by_type, type1, type_label, linters_tables_md): { "$id": f"#/properties/{linter.name}_FILE_EXTENSIONS", "type": "array", - "title": f"{linter.name}: Override descriptor/linter matching files extensions", + "title": ( + title_prefix + + f"{linter.name}: Override descriptor/linter matching files extensions" + ), "examples:": [".py", ".myext"], "items": {"type": "string"}, }, @@ -1385,7 +1524,10 @@ def process_type(linters_by_type, type1, type_label, linters_tables_md): { "$id": f"#/properties/{linter.name}_FILE_NAMES_REGEX", "type": "array", - "title": f"{linter.name}: Override descriptor/linter matching file name regex", + "title": ( + title_prefix + + f"{linter.name}: Override descriptor/linter matching file name regex" + ), "examples": ["Dockerfile(-.+)?", "Jenkinsfile"], "items": {"type": "string"}, }, @@ -1396,21 +1538,35 @@ def process_type(linters_by_type, type1, type_label, linters_tables_md): remove_in_config_schema_file( [f"{linter.name}_FILE_EXTENSIONS", f"{linter.name}_FILE_NAMES_REGEX"] ) - # Pre/post commands + # Pre/post commands & unsecured variables linter_doc_md += [ f"| {linter.name}_PRE_COMMANDS | List of bash commands to run before the linter" - f"| {dump_as_json(linter.pre_commands,'None')} |", + f"| {dump_as_json(linter.pre_commands, 'None')} |", f"| {linter.name}_POST_COMMANDS | List of bash commands to run after the linter" - f"| {dump_as_json(linter.post_commands,'None')} |", + f"| {dump_as_json(linter.post_commands, 'None')} |", + f"| {linter.name}_UNSECURED_ENV_VARIABLES | List of env variables explicitly " + + f"not filtered before calling {linter.name} and its pre/post commands" + f"| {dump_as_json(linter.post_commands, 'None')} |", ] add_in_config_schema_file( [ + [ + f"{linter.name}_COMMAND_REMOVE_ARGUMENTS", + { + "$id": f"#/properties/{linter.name}_COMMAND_REMOVE_ARGUMENTS", + "type": ["array", "string"], + "title": f"{title_prefix}{linter.name}: Custom remove arguments", + "description": f"{linter.name}: User custom arguments to remove before calling linter", + "examples:": ["--foo", "bar"], + "items": {"type": "string"}, + }, + ], [ f"{linter.name}_ARGUMENTS", { "$id": f"#/properties/{linter.name}_ARGUMENTS", "type": ["array", "string"], - "title": f"{linter.name}: Custom arguments", + "title": f"{title_prefix}{linter.name}: Custom arguments", "description": f"{linter.name}: User custom arguments to add in linter CLI call", "examples:": ["--foo", "bar"], "items": {"type": "string"}, @@ -1421,7 +1577,10 @@ def process_type(linters_by_type, type1, type_label, linters_tables_md): { "$id": f"#/properties/{linter.name}_PRE_COMMANDS", "type": "array", - "title": f"{linter.name}: Define or override a list of bash commands to run before the linter", + "title": ( + title_prefix + + f"{linter.name}: Define or override a list of bash commands to run before the linter" + ), "examples": [ [ { @@ -1439,7 +1598,10 @@ def process_type(linters_by_type, type1, type_label, linters_tables_md): { "$id": f"#/properties/{linter.name}_POST_COMMANDS", "type": "array", - "title": f"{linter.name}: Define or override a list of bash commands to run after the linter", + "title": ( + title_prefix + + f"{linter.name}: Define or override a list of bash commands to run after the linter" + ), "examples": [ [ { @@ -1458,7 +1620,10 @@ def process_type(linters_by_type, type1, type_label, linters_tables_md): "$id": f"#/properties/{linter.name}_DISABLE_ERRORS", "type": "boolean", "default": False, - "title": f"{linter.name}: Linter does not make MegaLinter fail even if errors are found", + "title": ( + title_prefix + + f"{linter.name}: Linter doesn't make MegaLinter fail even if errors are found" + ), }, ], [ @@ -1467,7 +1632,29 @@ def process_type(linters_by_type, type1, type_label, linters_tables_md): "$id": f"#/properties/{linter.name}_DISABLE_ERRORS_IF_LESS_THAN", "type": "number", "default": 0, - "title": f"{linter.name}: Maximum number of errors allowed", + "title": f"{title_prefix}{linter.name}: Maximum number of errors allowed", + }, + ], + [ + f"{linter.name}_CLI_EXECUTABLE", + { + "$id": f"#/properties/{linter.name}_CLI_EXECUTABLE", + "type": "array", + "default": [linter.cli_executable], + "title": f"{title_prefix}{linter.name}: CLI Executable", + "items": {"type": "string"}, + }, + ], + [ + f"{linter.name}_UNSECURED_ENV_VARIABLES", + { + "$id": f"#/properties/{linter.name}_UNSECURED_ENV_VARIABLES", + "type": "array", + "default": [], + "description": "List of env variables explicitly " + + f"not filtered before calling {linter.name} and its pre/post commands", + "title": f"{title_prefix}{linter.name}: Unsecured env variables", + "items": {"type": "string"}, }, ], ] @@ -1488,7 +1675,7 @@ def process_type(linters_by_type, type1, type_label, linters_tables_md): { "$id": f"#/properties/{linter.name}_CONFIG_FILE", "type": "string", - "title": f"{linter.name}: Custom config file name", + "title": f"{title_prefix}{linter.name}: Custom config file name", "default": linter.config_file_name, "description": f"{linter.name}: User custom config file name if different from default", }, @@ -1498,7 +1685,7 @@ def process_type(linters_by_type, type1, type_label, linters_tables_md): { "$id": f"#/properties/{linter.name}_RULES_PATH", "type": "string", - "title": f"{linter.name}: Custom config file path", + "title": f"{title_prefix}{linter.name}: Custom config file path", "description": f"{linter.name}: Path where to find linter configuration file", }, ], @@ -1510,11 +1697,14 @@ def process_type(linters_by_type, type1, type_label, linters_tables_md): f" `{default_disable_errors}` |", f"| {linter.name}_DISABLE_ERRORS_IF_LESS_THAN | Maximum number of errors allowed |" f" `0` |", + f"| {linter.name}_CLI_EXECUTABLE | Override CLI executable |" + f" `{str(linter.cli_executable)}` |", ] if linter.files_sub_directory is not None: linter_doc_md += [ - f"| {linter.descriptor_id}_DIRECTORY | Directory containing {linter.descriptor_id} files " + f"| {linter.descriptor_id}_DIRECTORY | Directory containing {linter.descriptor_id} files" + " (use `any` to always activate the linter)" f"| `{linter.files_sub_directory}` |" ] add_in_config_schema_file( @@ -1524,7 +1714,10 @@ def process_type(linters_by_type, type1, type_label, linters_tables_md): { "$id": f"#/properties/{linter.name}_DIRECTORY", "type": "string", - "title": f"{linter.name}: Directory containing {linter.descriptor_id} files", + "description": ( + 'Directory that must be found to activate linter. Use value "any" to always activate' + ), + "title": f"{title_prefix}{linter.name}: Directory containing {linter.descriptor_id} files", "default": linter.files_sub_directory, }, ], @@ -1606,13 +1799,13 @@ def process_type(linters_by_type, type1, type_label, linters_tables_md): ] if len(linter.file_names_not_ends_with) > 0: linter_doc_md += [ - f"- File name do not ends with: `{'`, `'.join(linter.file_names_not_ends_with)}`" + f"- File name don't ends with: `{'`, `'.join(linter.file_names_not_ends_with)}`" ] linter_doc_md += [ "", "", "", - ] # Do not check spelling of examples and logs + ] # Don't check spelling of examples and logs # Lint mode linter_doc_md += ["### How the linting is performed", ""] @@ -1622,7 +1815,7 @@ def process_type(linters_by_type, type1, type_label, linters_tables_md): "", "- filtering can not be done using MegaLinter configuration variables," f"it must be done using {linter.linter_name} configuration or ignore file (if existing)", - f"- `VALIDATE_ALL_CODEBASE: false` does not make {linter.linter_name} analyze only updated files", + f"- `VALIDATE_ALL_CODEBASE: false` doesn't make {linter.linter_name} analyze only updated files", ] elif linter.cli_lint_mode == "list_of_files": linter_doc_md += [ @@ -1759,6 +1952,24 @@ def build_flavors_md_table(filter_linter_name=None, replace_link=False): return md_table +# Build plugins table from YML file in .automation/plugins.yml +def build_plugins_md_table(): + with open(PLUGINS_FILE, "r", encoding="utf-8") as f: + plugins_file_data = yaml.safe_load(f) + plugins = plugins_file_data["plugins"] + md_table = [ + "| Name | Description | Author | Raw URL |", + "| :----- | :---------- | :--------------: | :--- |", + ] + for plugin in plugins: + md_table += [ + f"| [**{plugin['name']}**]({plugin['docUrl']}) | " + f"{plugin['description']} | {plugin['author']} | " + f"[Descriptor]({plugin['pluginUrl']}) |", + ] + return md_table + + def update_mkdocs_and_workflow_yml_with_flavors(): mkdocs_yml = [] gha_workflow_yml = [" flavor:", " ["] @@ -2146,7 +2357,7 @@ def add_in_config_schema_file(variables): json_schema["properties"] = json_schema_props if updated is True: with open(CONFIG_JSON_SCHEMA, "w", encoding="utf-8") as outfile: - json.dump(json_schema, outfile, indent=4, sort_keys=True) + json.dump(json_schema, outfile, indent=2, sort_keys=True) outfile.write("\n") @@ -2163,7 +2374,7 @@ def remove_in_config_schema_file(variables): json_schema["properties"] = json_schema_props if updated is True: with open(CONFIG_JSON_SCHEMA, "w", encoding="utf-8") as outfile: - json.dump(json_schema, outfile, indent=4, sort_keys=True) + json.dump(json_schema, outfile, indent=2, sort_keys=True) outfile.write("\n") @@ -2173,7 +2384,7 @@ def copy_md_file(source_file, target_file): os.path.relpath(source_file).replace("..\\", "").replace("\\", "/") ) comment = ( - f"" ) with open(target_file, "r+", encoding="utf-8") as f: @@ -2202,18 +2413,26 @@ def move_to_file(file_path, start, end, target_file, keep_in_source=False): with open(file_path, "w", encoding="utf-8") as file: file.write(file_content) logging.info("Updated " + file.name + " between " + start + " and " + end) - bracket_content = ( - bracket_content.replace("####", "#THREE#") - .replace("###", "#TWO#") - .replace("##", "#ONE#") - .replace("#THREE#", "###") - .replace("#TWO#", "##") - .replace("#ONE#", "#") - ) + if "" - comment = f"" + comment = f"" with open(target_file, "w", encoding="utf-8") as file2: file2.write( f"{mdl_disable}\n{comment}\n{start}\n{bracket_content}\n{end}\n" @@ -2241,7 +2460,14 @@ def replace_anchors_by_links(file_path, moves): ["formats", "supported-linters.md#formats"], ["tooling-formats", "supported-linters.md#tooling-formats"], ["other", "supported-linters.md#other"], - ["apply-fixes", "configuration.md#apply-fixes"], + ["apply-fixes", "config-apply-fixes.md"], + ["installation", "install-assisted.md"], + ["configuration", "config-file.md"], + ["activation-and-deactivation", "config-activation.md"], + ["filter-linted-files", "config-filtering.md"], + ["pre-commands", "config-precommands.md"], + ["post-commands", "config-postcommands.md"], + ["environment-variables-security", "config-variables-security.md"], ]: file_content_new = file_content_new.replace(f"(#{pair[0]})", f"({pair[1]})") if file_content_new != file_content: @@ -2307,8 +2533,27 @@ def finalize_doc_build(): # 'format', # 'tooling-formats', # 'other', - "installation", - "configuration", + "install-assisted", + "install-version", + "install-github", + "install-gitlab", + "install-azure", + "install-bitbucket", + "install-jenkins", + "install-concourse", + "install-drone", + "install-docker", + "install-locally", + "config-file", + "config-variables", + "config-activation", + "config-filtering", + "config-apply-fixes", + "config-linters", + "config-precommands", + "config-postcommands", + "config-variables-security", + "config-cli-lint-mode", "reporters", "flavors", "badge", @@ -2349,7 +2594,7 @@ def finalize_doc_build(): "", "", """![GitHub release](https://img.shields.io/github/v/release/oxsecurity/megalinter?sort=semver&color=%23FD80CD) -[![Docker Pulls](https://img.shields.io/badge/docker%20pulls-4.3M-blue?color=%23FD80CD)](https://megalinter.io/flavors/) +[![Docker Pulls](https://img.shields.io/badge/docker%20pulls-5.5M-blue?color=%23FD80CD)](https://megalinter.io/flavors/) [![Downloads/week](https://img.shields.io/npm/dw/mega-linter-runner.svg?color=%23FD80CD)](https://npmjs.org/package/mega-linter-runner) [![GitHub stars](https://img.shields.io/github/stars/oxsecurity/megalinter?cacheSeconds=3600&color=%23FD80CD)](https://github.com/oxsecurity/megalinter/stargazers/) [![Dependents](https://img.shields.io/static/v1?label=Used%20by&message=2180&color=%23FD80CD&logo=slickpic)](https://github.com/oxsecurity/megalinter/network/dependents) @@ -2370,6 +2615,18 @@ def finalize_doc_build(): "", "", ) + replace_in_file( + target_file, + "", + "", + "", + ) + replace_in_file( + target_file, + "", + "", + "", + ) # Remove link to online doc replace_in_file( target_file, @@ -2415,7 +2672,7 @@ def finalize_doc_build(): def generate_mkdocs_yml(): - logging.info("Generating mkdocs dynamic yml...") + logging.info("Generating mkdocs dynamic yml…") descriptors, linters_by_type = list_descriptors_for_build() process_type_mkdocs_yml(linters_by_type, "language") process_type_mkdocs_yml(linters_by_type, "format") @@ -2457,14 +2714,14 @@ def generate_json_schema_enums(): with open(DESCRIPTOR_JSON_SCHEMA, "r", encoding="utf-8") as json_file: json_schema = json.load(json_file) json_schema["definitions"]["enum_flavors"]["enum"] = ["all_flavors"] + list( - flavors.keys() + sorted(set(list(flavors.keys()))) ) with open(DESCRIPTOR_JSON_SCHEMA, "w", encoding="utf-8") as outfile: json.dump(json_schema, outfile, indent=2, sort_keys=True) outfile.write("\n") # Update list of descriptors and linters in configuration schema descriptors, _linters_by_type = list_descriptors_for_build() - linters = megalinter.linter_factory.list_all_linters() + linters = megalinter.linter_factory.list_all_linters({"request_id": "build"}) with open(CONFIG_JSON_SCHEMA, "r", encoding="utf-8") as json_file: json_schema = json.load(json_file) json_schema["definitions"]["enum_descriptor_keys"]["enum"] = [ @@ -2472,12 +2729,16 @@ def generate_json_schema_enums(): ] json_schema["definitions"]["enum_descriptor_keys"]["enum"] += ["CREDENTIALS", "GIT"] json_schema["definitions"]["enum_linter_keys"]["enum"] = [x.name for x in linters] - json_schema["definitions"]["enum_linter_keys"]["enum"] += [ - "CREDENTIALS_SECRETLINT", - "DOCKERFILE_DOCKERFILELINT", - "GIT_GIT_DIFF", - "PHP_BUILTIN", - ] + # Deprecated linters + json_schema["definitions"]["enum_linter_keys"]["enum"] += DEPRECATED_LINTERS + + # Sort: + json_schema["definitions"]["enum_descriptor_keys"]["enum"] = sorted( + set(json_schema["definitions"]["enum_descriptor_keys"]["enum"]) + ) + json_schema["definitions"]["enum_linter_keys"]["enum"] = sorted( + set(json_schema["definitions"]["enum_linter_keys"]["enum"]) + ) with open(CONFIG_JSON_SCHEMA, "w", encoding="utf-8") as outfile: json.dump(json_schema, outfile, indent=2, sort_keys=True) outfile.write("\n") @@ -2485,7 +2746,7 @@ def generate_json_schema_enums(): # Collect linters info from linter url, later used to build link preview card within linter documentation def collect_linter_previews(): - linters = megalinter.linter_factory.list_all_linters() + linters = megalinter.linter_factory.list_all_linters({"request_id": "build"}) # Read file with open(LINKS_PREVIEW_FILE, "r", encoding="utf-8") as json_file: data = json.load(json_file) @@ -2494,7 +2755,7 @@ def collect_linter_previews(): for linter in linters: if ( linter.linter_name not in data - or megalinter.config.get("REFRESH_LINTER_PREVIEWS", "false") == "true" + or megalinter.config.get(None, "REFRESH_LINTER_PREVIEWS", "false") == "true" ): logging.info( f"Collecting link preview info for {linter.linter_name} at {linter.linter_url}" @@ -2523,7 +2784,7 @@ def collect_linter_previews(): def generate_documentation_all_linters(): - linters_raw = megalinter.linter_factory.list_all_linters() + linters_raw = megalinter.linter_factory.list_all_linters(({"request_id": "build"})) linters = [] with open(VERSIONS_FILE, "r", encoding="utf-8") as json_file: linter_versions = json.load(json_file) @@ -2644,15 +2905,23 @@ def generate_documentation_all_linters(): # Update license key for licenses file resp = r.json() if resp is not None and not isinstance(resp, type(None)): - if "license" in resp and "spdx_id" in resp["license"]: + if ( + "license" in resp + and resp["license"] is not None + and "spdx_id" in resp["license"] + ): license = ( resp["license"]["spdx_id"] if resp["license"]["spdx_id"] != "NOASSERTION" - else resp["license"]["name"] - if "name" in resp["license"] - else resp["license"]["key"] - if "key" in resp["license"] - else "" + else ( + resp["license"]["name"] + if "name" in resp["license"] + else ( + resp["license"]["key"] + if "key" in resp["license"] + else "" + ) + ) ) if license != "": linter_licenses[linter.linter_name] = license @@ -2669,12 +2938,22 @@ def generate_documentation_all_linters(): resp_license = r_license.json() if "download_url" in resp_license: license_downloaded = session.get( - resp_license["download_url"] + resp_license["download_url"], + headers=api_github_headers, ) with open( linter_license_md_file, "w", encoding="utf-8" ) as license_out_file: - license_out_file.write(license_downloaded.text) + license_header = ( + "---\n" + f"title: License info for {linter.linter_name} within MegaLinter\n" + "search:\n" + " exclude: true\n" + "---\n" + ) + license_out_file.write( + license_header + license_downloaded.text + ) logging.info( f"Copied license of {linter.linter_name} in {linter_license_md_file}" ) @@ -2740,7 +3019,7 @@ def generate_documentation_all_linters(): md_table_lines += [md_table_line] if leave is True: - logging.warning("Error during process: Do not regenerate list of linters") + logging.warning("Error during process: Don't regenerate list of linters") return # Write referring linters to README @@ -2962,7 +3241,7 @@ def manage_output_variables(): def reformat_markdown_tables(): - logging.info("Formatting markdown tables...") + logging.info("Formatting markdown tables…") # Call markdown-table-formatter with the list of files if sys.platform == "win32": format_md_tables_command = ["bash", "format-tables.sh"] @@ -2985,7 +3264,7 @@ def reformat_markdown_tables(): def generate_version(): # npm version - logging.info("Updating npm package version...") + logging.info("Updating npm package version…") cwd_to_use = os.getcwd() + "/mega-linter-runner" process = subprocess.run( [ @@ -3033,7 +3312,7 @@ def generate_version(): def update_dependents_info(): - logging.info("Updating dependents info...") + logging.info("Updating dependents info…") command = [ "github-dependents-info", "--repo", @@ -3058,6 +3337,8 @@ def update_workflows_linters(): for descriptor in descriptors: for linter in descriptor["linters"]: + if "disabled" in linter and linter["disabled"] is True: + continue if "name" in linter: name = linter["name"].lower() else: @@ -3077,7 +3358,7 @@ def update_workflow_linters(file_path, linters): file_content = f.read() file_content = re.sub( r"(linter:\s+\[\s*)([^\[\]]*?)(\s*\])", - rf"\1{re.escape(linters).replace(chr(92),'').strip()}\3", + rf"\1{re.escape(linters).replace(chr(92), '').strip()}\3", file_content, ) @@ -3086,20 +3367,25 @@ def update_workflow_linters(file_path, linters): if __name__ == "__main__": + logging_format = ( + "[%(levelname)s] %(message)s" + if "CI" in os.environ + else "%(asctime)s [%(levelname)s] %(message)s" + ) try: logging.basicConfig( force=True, level=logging.INFO, - format="%(asctime)s [%(levelname)s] %(message)s", + format=logging_format, handlers=[logging.StreamHandler(sys.stdout)], ) except ValueError: logging.basicConfig( level=logging.INFO, - format="%(asctime)s [%(levelname)s] %(message)s", + format=logging_format, handlers=[logging.StreamHandler(sys.stdout)], ) - + config.init_config("build") # noinspection PyTypeChecker collect_linter_previews() generate_json_schema_enums() @@ -3111,7 +3397,7 @@ def update_workflow_linters(file_path, linters): generate_linter_test_classes() update_workflows_linters() if UPDATE_DOC is True: - logging.info("Running documentation generators...") + logging.info("Running documentation generators…") # refresh_users_info() # deprecated since now we use github-dependents-info generate_documentation() generate_documentation_all_linters() diff --git a/.automation/generated/flavors-stats.json b/.automation/generated/flavors-stats.json index 6a50de49c19..838602821b2 100644 --- a/.automation/generated/flavors-stats.json +++ b/.automation/generated/flavors-stats.json @@ -1399,4376 +1399,4448 @@ [ "2023-04-03T20:17:29", 2885492 - ] - ], - "ci_light": [ - [ - "2021-07-26T20:10:04", - 1856 ], [ - "2021-07-28T01:29:28", - 1858 + "2023-04-04T01:00:44", + 2886000 ], [ - "2021-07-29T01:25:08", - 1873 + "2023-04-05T01:02:44", + 2888508 ], [ - "2021-07-30T02:45:47", - 1878 + "2023-04-06T01:02:10", + 2890695 ], [ - "2021-07-31T02:55:52", - 1882 + "2023-04-10T19:39:37", + 2895894 ], [ - "2021-08-01T01:34:33", - 1884 + "2023-04-11T18:04:56", + 2897682 ], [ - "2021-08-02T01:25:51", - 1885 + "2023-04-12T19:58:02", + 2899426 ], [ - "2021-08-03T01:34:04", - 1885 + "2023-04-15T13:28:28", + 2904370 ], [ - "2021-08-04T01:25:42", - 1886 + "2023-04-16T20:56:34", + 2905424 ], [ - "2021-08-05T13:16:40", - 1902 + "2023-04-20T09:00:09", + 2912359 ], [ - "2021-08-06T10:08:44", - 1905 + "2023-04-22T18:08:18", + 2916195 ], [ - "2021-08-07T01:23:20", - 1916 + "2023-04-23T08:46:30", + 2916648 ], [ - "2021-08-08T17:46:20", - 1919 + "2023-04-24T10:35:05", + 2917777 ], [ - "2021-08-09T12:57:30", - 1922 + "2023-04-25T13:22:38", + 2920092 ], [ - "2021-08-10T18:15:58", - 1926 + "2023-04-26T01:05:21", + 2920930 ], [ - "2021-08-11T19:45:43", - 1940 + "2023-04-29T09:13:18", + 2926605 ], [ - "2021-08-12T16:45:06", - 1952 + "2023-04-30T23:37:21", + 2927694 ], [ - "2021-08-13T01:26:41", - 1964 + "2023-05-01T12:30:40", + 2928157 ], [ - "2021-08-14T08:26:41", - 1968 + "2023-05-02T01:03:19", + 2929080 ], [ - "2021-08-15T21:37:16", - 1989 + "2023-05-12T22:08:47", + 2947926 ], [ - "2021-08-17T01:22:18", - 1993 + "2023-05-13T20:23:06", + 2948676 ], [ - "2021-08-18T01:24:15", - 1994 + "2023-05-14T19:54:23", + 2949683 ], [ - "2021-08-19T22:44:18", - 2032 + "2023-05-17T23:06:02", + 2956012 ], [ - "2021-08-20T16:03:59", - 2058 + "2023-05-18T18:05:13", + 2957431 ], [ - "2021-08-21T12:36:04", - 2063 + "2023-05-19T18:27:46", + 2959002 ], [ - "2021-08-22T01:21:13", - 2064 + "2023-05-20T06:58:27", + 2959618 ], [ - "2021-08-23T20:34:23", - 2084 + "2023-05-21T17:54:05", + 2960551 ], [ - "2021-08-24T21:32:49", - 2089 + "2023-05-22T19:05:24", + 2962658 ], [ - "2021-08-28T19:11:50", - 2189 + "2023-05-23T01:07:57", + 2963164 ], [ - "2021-08-29T12:02:14", - 2199 + "2023-05-24T01:14:32", + 2965365 ], [ - "2021-08-31T03:01:11", - 2261 + "2023-05-26T01:11:00", + 2969496 ], [ - "2021-09-01T01:34:30", - 2275 + "2023-05-27T17:04:12", + 2971966 ], [ - "2021-09-02T11:26:37", - 2303 + "2023-05-28T17:03:24", + 2972895 ], [ - "2021-09-03T01:30:31", - 2310 + "2023-05-29T11:13:08", + 2973698 ], [ - "2021-09-04T13:35:27", - 2326 + "2023-05-31T23:48:39", + 2979928 ], [ - "2021-09-06T01:30:54", - 2345 + "2023-06-01T01:25:18", + 2980280 ], [ - "2021-09-07T01:30:29", - 2378 + "2023-06-02T01:10:33", + 2982873 ], [ - "2021-09-12T12:45:46", - 2438 + "2023-06-03T09:59:50", + 2985399 ], [ - "2021-09-15T03:11:38", - 2609 + "2023-06-04T01:13:43", + 2985820 ], [ - "2021-09-18T22:10:09", - 2823 + "2023-06-05T01:08:28", + 2986683 ], [ - "2021-09-19T15:32:31", - 2871 + "2023-06-07T01:10:00", + 2990975 ], [ - "2021-09-20T01:35:53", - 2918 + "2023-06-08T05:19:18", + 2993233 ], [ - "2021-09-21T17:53:24", - 2990 + "2023-06-11T18:48:09", + 2997453 ], [ - "2021-09-23T01:37:54", - 3041 + "2023-06-12T01:16:15", + 2997733 ], [ - "2021-09-24T03:14:34", - 3081 + "2023-06-13T01:11:33", + 2999733 ], [ - "2021-09-25T16:30:33", - 3171 + "2023-06-17T01:09:24", + 3008097 ], [ - "2021-09-26T12:23:03", - 3173 + "2023-06-21T05:26:13", + 3013604 ], [ - "2021-09-27T15:31:39", - 3252 + "2023-06-23T01:12:21", + 3017176 ], [ - "2021-09-29T01:26:48", - 3294 + "2023-06-24T01:13:03", + 3018770 ], [ - "2021-09-30T23:05:25", - 3438 + "2023-06-25T01:19:08", + 3019324 ], [ - "2021-10-01T16:05:31", - 3452 + "2023-07-02T01:17:57", + 3030041 ], [ - "2021-10-03T21:24:16", - 3508 + "2023-07-05T04:19:03", + 3034027 ], [ - "2021-10-05T01:32:48", - 3542 + "2023-07-06T01:13:59", + 3035756 ], [ - "2021-10-06T08:19:33", - 3613 + "2023-07-07T01:22:59", + 3037762 ], [ - "2021-10-07T19:01:06", - 3640 + "2023-07-09T01:17:28", + 3039856 ], [ - "2021-10-09T09:11:23", - 3671 + "2023-07-10T12:35:57", + 3041527 ], [ - "2021-10-10T16:38:57", - 3695 + "2023-07-11T18:04:48", + 3044556 ], [ - "2021-10-12T12:32:12", - 3747 + "2023-07-13T01:16:23", + 3047030 ], [ - "2021-10-13T01:33:36", - 3777 + "2023-07-14T18:55:34", + 3050109 ], [ - "2021-10-16T01:43:12", - 3844 + "2023-07-15T14:49:24", + 3050879 ], [ - "2021-10-17T12:27:08", - 3869 + "2023-07-17T01:18:56", + 3051957 ], [ - "2021-10-21T01:43:07", - 3970 + "2023-07-23T01:13:49", + 3061865 ], [ - "2021-10-24T15:47:49", - 4115 + "2023-07-24T12:19:15", + 3063321 ], [ - "2021-10-25T04:54:54", - 4133 + "2023-07-25T10:15:45", + 3065250 ], [ - "2021-10-26T19:08:21", - 4195 + "2023-07-26T21:02:52", + 3068947 ], [ - "2021-10-27T10:52:46", - 4207 + "2023-08-03T19:41:39", + 3082328 ], [ - "2021-10-28T01:27:35", - 4249 + "2023-08-06T01:17:07", + 3085127 ], [ - "2021-10-29T05:01:38", - 4298 + "2023-08-07T14:09:58", + 3086854 ], [ - "2021-10-30T20:34:54", - 49 + "2023-08-09T21:27:06", + 3091669 ], [ - "2021-10-31T18:17:07", - 4424 + "2023-08-10T00:37:45", + 3091764 ], [ - "2021-11-01T01:50:59", - 4464 + "2023-08-11T00:59:39", + 3094313 ], [ - "2021-11-02T11:56:56", - 4536 + "2023-08-14T01:07:10", + 3097717 ], [ - "2021-11-03T01:34:05", - 4563 + "2023-08-20T10:19:30", + 3108097 ], [ - "2021-11-04T22:06:35", - 4662 + "2023-08-21T01:02:38", + 3108611 ], [ - "2021-11-07T22:48:14", - 4706 + "2023-08-22T05:14:32", + 3110749 ], [ - "2021-11-08T16:38:12", - 4743 + "2023-08-23T01:09:12", + 3112626 ], [ - "2021-11-09T14:05:16", - 4777 + "2023-08-24T08:23:46", + 3115741 ], [ - "2021-11-11T23:43:38", - 4851 + "2023-08-25T01:09:33", + 3117861 ], [ - "2021-11-12T07:23:40", - 4852 + "2023-08-26T15:48:29", + 3120457 ], [ - "2021-11-13T03:49:42", - 4862 + "2023-09-01T01:00:53", + 3130530 ], [ - "2021-11-14T20:38:46", - 4875 + "2023-09-02T06:53:40", + 3132880 ], [ - "2021-11-15T21:50:19", - 4940 + "2023-09-03T17:23:10", + 3133769 ], [ - "2021-11-17T13:49:27", - 4971 + "2023-09-04T01:14:42", + 3134068 ], [ - "2021-11-18T12:57:03", - 5016 + "2023-09-06T09:29:05", + 3138812 ], [ - "2021-11-19T01:41:21", - 5043 + "2023-09-08T01:01:21", + 3142982 ], [ - "2021-11-21T18:45:36", - 5119 + "2023-09-17T18:42:04", + 3158633 ], [ - "2021-11-22T21:51:21", - 5172 + "2023-09-18T07:24:56", + 3159196 ], [ - "2021-11-24T01:32:35", - 5206 + "2023-09-19T01:04:12", + 3161029 ], [ - "2021-11-25T01:36:17", - 5222 + "2023-09-20T15:31:08", + 3164893 ], [ - "2021-11-26T01:28:24", - 5229 + "2023-09-21T01:10:04", + 3165854 ], [ - "2021-11-27T01:29:49", - 5246 + "2023-09-22T16:54:09", + 3169173 ], [ - "2021-11-29T19:53:22", - 5288 + "2023-09-24T01:09:47", + 3170844 ], [ - "2021-12-01T21:53:10", - 5386 + "2023-09-26T01:03:52", + 3173585 ], [ - "2021-12-02T22:38:42", - 5412 + "2023-09-28T01:03:35", + 3178021 ], [ - "2021-12-03T07:25:47", - 5429 + "2023-10-02T10:16:34", + 3183911 ], [ - "2021-12-04T10:20:40", - 5468 + "2023-10-11T01:02:27", + 3200277 ], [ - "2021-12-05T01:37:50", - 5473 + "2023-10-12T07:12:13", + 3203112 ], [ - "2021-12-06T01:34:54", - 5493 + "2023-10-15T18:35:06", + 3208738 ], [ - "2021-12-07T19:17:16", - 5597 + "2023-10-16T01:12:02", + 3209123 ], [ - "2021-12-08T11:50:21", - 5612 + "2023-10-17T01:19:48", + 3211397 ], [ - "2021-12-09T08:24:35", - 5673 + "2023-10-18T09:54:25", + 3214893 ], [ - "2021-12-11T10:08:27", - 5735 + "2023-10-19T05:13:12", + 3217326 ], [ - "2021-12-12T01:37:49", - 5745 + "2023-10-20T21:26:06", + 3221897 ], [ - "2021-12-14T01:36:23", - 5787 + "2023-10-21T07:20:54", + 3222405 ], [ - "2021-12-15T01:38:21", - 5825 + "2023-10-22T21:40:43", + 3223408 ], [ - "2021-12-16T01:40:15", - 5849 + "2023-10-24T01:08:57", + 3225808 ], [ - "2021-12-17T01:41:18", - 5895 + "2023-10-25T03:48:19", + 3228060 ], [ - "2021-12-18T12:07:04", - 5920 + "2023-10-28T17:16:00", + 3235406 ], [ - "2021-12-21T13:52:15", - 5977 + "2023-10-29T10:04:35", + 3236043 ], [ - "2021-12-23T13:53:28", - 6029 + "2023-10-30T01:06:23", + 3236726 ], [ - "2021-12-26T01:43:59", - 6038 + "2023-10-31T01:15:37", + 3239240 ], [ - "2021-12-29T20:36:25", - 6081 + "2023-11-01T12:58:49", + 3242649 ], [ - "2021-12-31T01:38:18", - 6083 + "2023-11-03T22:34:05", + 3248055 ], [ - "2022-01-01T01:37:58", - 6092 + "2023-11-04T17:14:00", + 3248714 ], [ - "2022-01-03T22:58:05", - 6164 + "2023-11-05T18:48:33", + 3249537 ], [ - "2022-01-09T14:02:41", - 6301 + "2023-11-06T22:30:41", + 3251887 ], [ - "2022-01-11T01:36:44", - 6359 + "2023-11-07T22:42:00", + 3254088 ], [ - "2022-01-12T01:35:34", - 6373 + "2023-11-08T22:22:32", + 3256273 ], [ - "2022-01-13T09:24:45", - 6404 + "2023-11-09T22:42:59", + 3258399 ], [ - "2022-01-14T01:38:08", - 6409 + "2023-11-10T22:40:09", + 3260624 ], [ - "2022-01-15T11:07:48", - 6469 + "2023-11-11T22:37:19", + 3261497 + ] + ], + "c_cpp": [ + [ + "2023-11-04T17:14:00", + 0 ], [ - "2022-01-16T01:40:08", - 6484 + "2023-11-05T18:48:33", + 0 ], [ - "2022-01-17T12:08:17", - 6514 + "2023-11-06T22:30:41", + 0 ], [ - "2022-01-18T04:25:59", - 6520 + "2023-11-07T22:42:00", + 0 ], [ - "2022-01-22T22:01:45", - 6621 + "2023-11-08T22:22:32", + 0 ], [ - "2022-01-23T19:48:17", - 6637 + "2023-11-09T22:42:59", + 0 ], [ - "2022-01-24T20:09:52", - 6703 + "2023-11-10T22:40:09", + 0 ], [ - "2022-01-25T07:19:01", - 6703 - ], + "2023-11-11T22:37:19", + 0 + ] + ], + "ci_light": [ [ - "2022-01-26T01:45:09", - 6711 + "2021-07-26T20:10:04", + 1856 ], [ - "2022-01-28T01:33:25", - 6763 + "2021-07-28T01:29:28", + 1858 ], [ - "2022-01-29T20:09:19", - 6778 + "2021-07-29T01:25:08", + 1873 ], [ - "2022-01-30T17:15:32", - 6790 + "2021-07-30T02:45:47", + 1878 ], [ - "2022-01-31T13:01:19", - 6862 + "2021-07-31T02:55:52", + 1882 ], [ - "2022-02-01T07:00:15", - 6875 + "2021-08-01T01:34:33", + 1884 ], [ - "2022-02-02T23:09:44", - 6928 + "2021-08-02T01:25:51", + 1885 ], [ - "2022-02-03T10:37:04", - 6957 + "2021-08-03T01:34:04", + 1885 ], [ - "2022-02-05T23:23:53", - 7017 + "2021-08-04T01:25:42", + 1886 ], [ - "2022-02-06T17:27:14", - 7020 + "2021-08-05T13:16:40", + 1902 ], [ - "2022-02-07T07:41:03", - 7031 + "2021-08-06T10:08:44", + 1905 ], [ - "2022-02-09T12:02:49", - 7117 + "2021-08-07T01:23:20", + 1916 ], [ - "2022-02-10T01:38:28", - 7124 + "2021-08-08T17:46:20", + 1919 ], [ - "2022-02-13T17:21:12", - 7184 + "2021-08-09T12:57:30", + 1922 ], [ - "2022-02-14T01:37:05", - 7191 + "2021-08-10T18:15:58", + 1926 ], [ - "2022-02-16T01:41:49", - 7306 + "2021-08-11T19:45:43", + 1940 ], [ - "2022-02-18T21:34:22", - 7451 + "2021-08-12T16:45:06", + 1952 ], [ - "2022-02-20T20:39:40", - 7489 + "2021-08-13T01:26:41", + 1964 ], [ - "2022-02-21T21:26:40", - 7535 + "2021-08-14T08:26:41", + 1968 ], [ - "2022-02-25T15:39:13", - 7828 + "2021-08-15T21:37:16", + 1989 ], [ - "2022-02-27T01:44:50", - 7926 + "2021-08-17T01:22:18", + 1993 ], [ - "2022-02-28T01:51:49", - 7944 + "2021-08-18T01:24:15", + 1994 ], [ - "2022-03-02T23:33:51", - 8135 + "2021-08-19T22:44:18", + 2032 ], [ - "2022-03-03T01:50:14", - 8137 + "2021-08-20T16:03:59", + 2058 ], [ - "2022-03-04T05:18:37", - 8185 + "2021-08-21T12:36:04", + 2063 ], [ - "2022-03-06T01:44:30", - 8199 + "2021-08-22T01:21:13", + 2064 ], [ - "2022-03-08T11:13:31", - 8220 + "2021-08-23T20:34:23", + 2084 ], [ - "2022-03-09T07:35:11", - 8250 + "2021-08-24T21:32:49", + 2089 ], [ - "2022-03-10T01:51:49", - 8281 + "2021-08-28T19:11:50", + 2189 ], [ - "2022-03-11T01:51:30", - 8301 + "2021-08-29T12:02:14", + 2199 ], [ - "2022-03-12T01:42:04", - 8322 + "2021-08-31T03:01:11", + 2261 ], [ - "2022-03-13T19:08:51", - 8336 + "2021-09-01T01:34:30", + 2275 ], [ - "2022-03-14T15:10:17", - 8359 + "2021-09-02T11:26:37", + 2303 ], [ - "2022-03-15T01:49:51", - 8364 + "2021-09-03T01:30:31", + 2310 ], [ - "2022-03-16T01:45:07", - 8395 + "2021-09-04T13:35:27", + 2326 ], [ - "2022-03-17T12:36:48", - 8428 + "2021-09-06T01:30:54", + 2345 ], [ - "2022-03-19T16:59:24", - 8464 + "2021-09-07T01:30:29", + 2378 ], [ - "2022-03-20T11:59:05", - 8464 + "2021-09-12T12:45:46", + 2438 ], [ - "2022-03-21T01:44:24", - 8466 + "2021-09-15T03:11:38", + 2609 ], [ - "2022-03-22T01:55:14", - 8494 + "2021-09-18T22:10:09", + 2823 ], [ - "2022-03-23T01:55:28", - 8503 + "2021-09-19T15:32:31", + 2871 ], [ - "2022-03-24T01:48:26", - 8517 + "2021-09-20T01:35:53", + 2918 ], [ - "2022-03-26T22:36:41", - 8771 + "2021-09-21T17:53:24", + 2990 ], [ - "2022-03-27T20:21:20", - 8789 + "2021-09-23T01:37:54", + 3041 ], [ - "2022-03-30T01:54:07", - 8859 + "2021-09-24T03:14:34", + 3081 ], [ - "2022-03-31T19:42:14", - 8947 + "2021-09-25T16:30:33", + 3171 ], [ - "2022-04-01T15:16:50", - 8965 + "2021-09-26T12:23:03", + 3173 ], [ - "2022-04-02T01:51:52", - 8976 + "2021-09-27T15:31:39", + 3252 ], [ - "2022-04-04T03:28:40", - 9009 + "2021-09-29T01:26:48", + 3294 ], [ - "2022-04-06T04:08:13", - 9045 + "2021-09-30T23:05:25", + 3438 ], [ - "2022-04-07T01:53:15", - 9083 + "2021-10-01T16:05:31", + 3452 ], [ - "2022-04-09T01:50:38", - 9123 + "2021-10-03T21:24:16", + 3508 ], [ - "2022-04-10T14:05:52", - 9137 + "2021-10-05T01:32:48", + 3542 ], [ - "2022-04-11T17:59:19", - 9190 + "2021-10-06T08:19:33", + 3613 ], [ - "2022-04-18T19:21:22", - 9348 + "2021-10-07T19:01:06", + 3640 ], [ - "2022-04-22T17:35:15", - 9445 + "2021-10-09T09:11:23", + 3671 ], [ - "2022-04-23T08:58:43", - 9447 + "2021-10-10T16:38:57", + 3695 ], [ - "2022-04-24T16:22:52", - 9458 + "2021-10-12T12:32:12", + 3747 ], [ - "2022-04-26T12:16:27", - 9514 + "2021-10-13T01:33:36", + 3777 ], [ - "2022-04-28T02:47:35", - 9553 + "2021-10-16T01:43:12", + 3844 ], [ - "2022-04-29T02:28:21", - 9588 + "2021-10-17T12:27:08", + 3869 ], [ - "2022-04-30T15:55:37", - 9608 + "2021-10-21T01:43:07", + 3970 ], [ - "2022-05-02T02:22:46", - 9639 + "2021-10-24T15:47:49", + 4115 ], [ - "2022-05-03T15:10:47", - 9686 + "2021-10-25T04:54:54", + 4133 ], [ - "2022-05-04T02:21:38", - 9689 + "2021-10-26T19:08:21", + 4195 ], [ - "2022-05-05T02:29:20", - 9726 + "2021-10-27T10:52:46", + 4207 ], [ - "2022-05-06T01:57:12", - 9765 + "2021-10-28T01:27:35", + 4249 ], [ - "2022-05-07T15:43:47", - 9837 + "2021-10-29T05:01:38", + 4298 ], [ - "2022-05-08T09:22:07", - 9851 + "2021-10-30T20:34:54", + 49 ], [ - "2022-05-11T18:46:39", - 10003 + "2021-10-31T18:17:07", + 4424 ], [ - "2022-05-14T10:19:10", - 10116 + "2021-11-01T01:50:59", + 4464 ], [ - "2022-05-15T18:35:14", - 10140 + "2021-11-02T11:56:56", + 4536 ], [ - "2022-05-17T02:16:25", - 10212 + "2021-11-03T01:34:05", + 4563 ], [ - "2022-05-20T02:14:29", - 10399 + "2021-11-04T22:06:35", + 4662 ], [ - "2022-05-21T01:55:42", - 10437 + "2021-11-07T22:48:14", + 4706 ], [ - "2022-05-22T02:10:42", - 10447 + "2021-11-08T16:38:12", + 4743 ], [ - "2022-05-24T11:16:46", - 10616 + "2021-11-09T14:05:16", + 4777 ], [ - "2022-05-25T02:18:32", - 10632 + "2021-11-11T23:43:38", + 4851 ], [ - "2022-05-27T02:15:18", - 10705 + "2021-11-12T07:23:40", + 4852 ], [ - "2022-05-28T02:22:34", - 10756 + "2021-11-13T03:49:42", + 4862 ], [ - "2022-05-30T02:21:03", - 10771 + "2021-11-14T20:38:46", + 4875 ], [ - "2022-05-31T19:33:59", - 10895 + "2021-11-15T21:50:19", + 4940 ], [ - "2022-06-01T02:31:42", - 10908 + "2021-11-17T13:49:27", + 4971 ], [ - "2022-06-02T02:27:43", - 10962 + "2021-11-18T12:57:03", + 5016 ], [ - "2022-06-03T01:55:13", - 11042 + "2021-11-19T01:41:21", + 5043 ], [ - "2022-06-08T20:16:03", - 11410 + "2021-11-21T18:45:36", + 5119 ], [ - "2022-06-09T13:28:16", - 11450 + "2021-11-22T21:51:21", + 5172 ], [ - "2022-06-10T02:21:45", - 11532 + "2021-11-24T01:32:35", + 5206 ], [ - "2022-06-11T02:20:43", - 11639 + "2021-11-25T01:36:17", + 5222 ], [ - "2022-06-12T13:23:39", - 11656 + "2021-11-26T01:28:24", + 5229 ], [ - "2022-06-14T02:30:00", - 11775 + "2021-11-27T01:29:49", + 5246 ], [ - "2022-06-15T20:20:02", - 12033 + "2021-11-29T19:53:22", + 5288 ], [ - "2022-06-17T02:17:40", - 12161 + "2021-12-01T21:53:10", + 5386 ], [ - "2022-06-19T07:40:43", - 12257 + "2021-12-02T22:38:42", + 5412 ], [ - "2022-06-22T23:37:06", - 12700 + "2021-12-03T07:25:47", + 5429 ], [ - "2022-06-23T09:06:53", - 12753 + "2021-12-04T10:20:40", + 5468 ], [ - "2022-06-24T02:16:36", - 12900 + "2021-12-05T01:37:50", + 5473 ], [ - "2022-06-25T02:27:04", - 13126 + "2021-12-06T01:34:54", + 5493 ], [ - "2022-06-26T16:16:05", - 13174 + "2021-12-07T19:17:16", + 5597 ], [ - "2022-09-10T23:57:56", - 24181 + "2021-12-08T11:50:21", + 5612 ], [ - "2022-09-11T17:27:20", - 24214 + "2021-12-09T08:24:35", + 5673 ], [ - "2022-09-12T17:31:29", - 24437 + "2021-12-11T10:08:27", + 5735 ], [ - "2022-09-15T12:40:02", - 24955 + "2021-12-12T01:37:49", + 5745 ], [ - "2022-09-16T01:11:41", - 25063 + "2021-12-14T01:36:23", + 5787 ], [ - "2022-09-17T01:12:07", - 25218 + "2021-12-15T01:38:21", + 5825 ], [ - "2022-09-19T22:06:52", - 25452 + "2021-12-16T01:40:15", + 5849 ], [ - "2022-09-20T01:15:00", - 25490 + "2021-12-17T01:41:18", + 5895 ], [ - "2022-09-21T18:40:27", - 25898 + "2021-12-18T12:07:04", + 5920 ], [ - "2022-09-22T16:43:34", - 26052 + "2021-12-21T13:52:15", + 5977 ], [ - "2022-09-25T01:14:04", - 26282 + "2021-12-23T13:53:28", + 6029 ], [ - "2022-09-26T01:16:57", - 26319 + "2021-12-26T01:43:59", + 6038 ], [ - "2022-09-27T20:49:14", - 26609 + "2021-12-29T20:36:25", + 6081 ], [ - "2022-09-30T01:39:04", - 26868 + "2021-12-31T01:38:18", + 6083 ], [ - "2022-10-01T17:39:25", - 27013 + "2022-01-01T01:37:58", + 6092 ], [ - "2022-10-02T12:03:53", - 27035 + "2022-01-03T22:58:05", + 6164 ], [ - "2022-10-03T08:03:32", - 27094 + "2022-01-09T14:02:41", + 6301 ], [ - "2022-10-04T01:20:50", - 27228 + "2022-01-11T01:36:44", + 6359 ], [ - "2022-10-05T01:21:27", - 27373 + "2022-01-12T01:35:34", + 6373 ], [ - "2022-10-08T23:24:13", - 27766 + "2022-01-13T09:24:45", + 6404 ], [ - "2022-10-10T01:35:49", - 27794 + "2022-01-14T01:38:08", + 6409 ], [ - "2022-10-11T01:16:06", - 27905 + "2022-01-15T11:07:48", + 6469 ], [ - "2022-10-12T19:05:48", - 28177 + "2022-01-16T01:40:08", + 6484 ], [ - "2022-10-13T01:19:16", - 28234 + "2022-01-17T12:08:17", + 6514 ], [ - "2022-10-14T01:30:33", - 28434 + "2022-01-18T04:25:59", + 6520 ], [ - "2022-10-15T01:22:21", - 28554 + "2022-01-22T22:01:45", + 6621 ], [ - "2022-10-16T21:43:31", - 28632 + "2022-01-23T19:48:17", + 6637 ], [ - "2022-10-18T06:25:58", - 28838 + "2022-01-24T20:09:52", + 6703 ], [ - "2022-10-22T11:41:20", - 29341 + "2022-01-25T07:19:01", + 6703 ], [ - "2022-10-23T01:13:56", - 29381 + "2022-01-26T01:45:09", + 6711 ], [ - "2022-10-24T20:11:55", - 29594 + "2022-01-28T01:33:25", + 6763 ], [ - "2022-10-25T00:08:55", - 29603 + "2022-01-29T20:09:19", + 6778 ], [ - "2022-10-26T01:07:23", - 29856 + "2022-01-30T17:15:32", + 6790 ], [ - "2022-10-27T01:11:40", - 29972 + "2022-01-31T13:01:19", + 6862 ], [ - "2022-10-29T01:02:52", - 30301 + "2022-02-01T07:00:15", + 6875 ], [ - "2022-10-30T20:09:57", - 30353 + "2022-02-02T23:09:44", + 6928 ], [ - "2022-10-31T22:27:03", - 30514 + "2022-02-03T10:37:04", + 6957 ], [ - "2022-11-01T18:25:59", - 30587 + "2022-02-05T23:23:53", + 7017 ], [ - "2022-11-03T01:11:15", - 30791 + "2022-02-06T17:27:14", + 7020 ], [ - "2022-11-04T11:35:34", - 31047 + "2022-02-07T07:41:03", + 7031 ], [ - "2022-11-05T07:41:24", - 31164 + "2022-02-09T12:02:49", + 7117 ], [ - "2022-11-06T11:06:34", - 31206 + "2022-02-10T01:38:28", + 7124 ], [ - "2022-11-07T19:40:53", - 31474 + "2022-02-13T17:21:12", + 7184 ], [ - "2022-11-08T01:06:52", - 31508 + "2022-02-14T01:37:05", + 7191 ], [ - "2022-11-11T17:10:50", - 32411 + "2022-02-16T01:41:49", + 7306 ], [ - "2022-11-13T20:58:24", - 32562 + "2022-02-18T21:34:22", + 7451 ], [ - "2022-11-14T23:48:23", - 0 + "2022-02-20T20:39:40", + 7489 ], [ - "2022-11-15T07:38:22", - 32831 + "2022-02-21T21:26:40", + 7535 ], [ - "2022-11-17T09:11:40", - 33258 + "2022-02-25T15:39:13", + 7828 ], [ - "2022-11-19T22:14:34", - 33654 + "2022-02-27T01:44:50", + 7926 ], [ - "2022-11-21T23:47:48", - 33884 + "2022-02-28T01:51:49", + 7944 ], [ - "2022-11-22T01:14:59", - 33894 + "2022-03-02T23:33:51", + 8135 ], [ - "2022-11-23T23:28:30", - 34181 + "2022-03-03T01:50:14", + 8137 ], [ - "2022-11-26T01:00:47", - 34535 + "2022-03-04T05:18:37", + 8185 ], [ - "2022-11-28T01:02:53", - 34600 + "2022-03-06T01:44:30", + 8199 ], [ - "2022-12-07T07:19:55", - 36335 + "2022-03-08T11:13:31", + 8220 ], [ - "2022-12-18T20:23:59", - 38358 + "2022-03-09T07:35:11", + 8250 ], [ - "2022-12-19T18:26:59", - 38629 + "2022-03-10T01:51:49", + 8281 ], [ - "2022-12-20T16:08:58", - 38875 + "2022-03-11T01:51:30", + 8301 ], [ - "2022-12-21T23:23:24", - 39181 + "2022-03-12T01:42:04", + 8322 ], [ - "2022-12-22T22:59:06", - 39425 + "2022-03-13T19:08:51", + 8336 ], [ - "2022-12-24T20:01:35", - 39674 + "2022-03-14T15:10:17", + 8359 ], [ - "2022-12-25T21:13:52", - 39700 + "2022-03-15T01:49:51", + 8364 ], [ - "2022-12-26T19:56:00", - 39839 + "2022-03-16T01:45:07", + 8395 ], [ - "2022-12-27T23:56:39", - 40047 + "2022-03-17T12:36:48", + 8428 ], [ - "2022-12-29T20:55:31", - 40459 + "2022-03-19T16:59:24", + 8464 ], [ - "2022-12-30T20:56:36", - 40563 + "2022-03-20T11:59:05", + 8464 ], [ - "2022-12-31T08:10:29", - 40599 + "2022-03-21T01:44:24", + 8466 ], [ - "2023-01-01T23:58:03", - 40655 + "2022-03-22T01:55:14", + 8494 ], [ - "2023-01-02T23:32:43", - 40824 + "2022-03-23T01:55:28", + 8503 ], [ - "2023-01-04T01:14:45", - 41045 + "2022-03-24T01:48:26", + 8517 ], [ - "2023-01-05T00:40:47", - 41320 + "2022-03-26T22:36:41", + 8771 ], [ - "2023-01-06T15:27:19", - 41782 + "2022-03-27T20:21:20", + 8789 ], [ - "2023-01-07T23:05:20", - 41903 + "2022-03-30T01:54:07", + 8859 ], [ - "2023-01-09T23:13:18", - 42265 + "2022-03-31T19:42:14", + 8947 ], [ - "2023-01-10T22:19:22", - 42496 + "2022-04-01T15:16:50", + 8965 ], [ - "2023-01-11T20:38:34", - 42708 + "2022-04-02T01:51:52", + 8976 ], [ - "2023-01-12T19:14:41", - 42937 + "2022-04-04T03:28:40", + 9009 ], [ - "2023-01-14T22:19:17", - 43298 + "2022-04-06T04:08:13", + 9045 ], [ - "2023-01-15T05:54:49", - 43309 + "2022-04-07T01:53:15", + 9083 ], [ - "2023-01-16T01:07:20", - 43358 + "2022-04-09T01:50:38", + 9123 ], [ - "2023-01-18T01:10:41", - 43957 + "2022-04-10T14:05:52", + 9137 ], [ - "2023-01-19T01:11:47", - 44190 + "2022-04-11T17:59:19", + 9190 ], [ - "2023-01-20T01:07:56", - 44364 + "2022-04-18T19:21:22", + 9348 ], [ - "2023-01-21T01:11:30", - 44538 + "2022-04-22T17:35:15", + 9445 ], [ - "2023-01-22T23:52:22", - 44604 + "2022-04-23T08:58:43", + 9447 ], [ - "2023-01-24T01:13:09", - 44821 + "2022-04-24T16:22:52", + 9458 ], [ - "2023-01-25T01:09:15", - 45018 + "2022-04-26T12:16:27", + 9514 ], [ - "2023-01-27T01:08:47", - 45309 + "2022-04-28T02:47:35", + 9553 ], [ - "2023-01-28T23:00:24", - 45541 + "2022-04-29T02:28:21", + 9588 ], [ - "2023-01-29T11:12:53", - 45564 + "2022-04-30T15:55:37", + 9608 ], [ - "2023-01-31T09:09:55", - 45861 + "2022-05-02T02:22:46", + 9639 ], [ - "2023-02-04T01:08:11", - 46571 + "2022-05-03T15:10:47", + 9686 ], [ - "2023-02-05T19:16:16", - 46629 + "2022-05-04T02:21:38", + 9689 ], [ - "2023-02-06T01:06:21", - 46650 + "2022-05-05T02:29:20", + 9726 ], [ - "2023-02-07T01:06:44", - 46922 + "2022-05-06T01:57:12", + 9765 ], [ - "2023-02-08T19:33:17", - 47254 + "2022-05-07T15:43:47", + 9837 ], [ - "2023-02-16T01:07:41", - 48142 + "2022-05-08T09:22:07", + 9851 ], [ - "2023-02-17T20:09:45", - 48477 + "2022-05-11T18:46:39", + 10003 ], [ - "2023-02-19T16:48:31", - 48552 + "2022-05-14T10:19:10", + 10116 ], [ - "2023-02-22T01:09:24", - 48941 + "2022-05-15T18:35:14", + 10140 ], [ - "2023-02-25T18:11:10", - 49556 + "2022-05-17T02:16:25", + 10212 ], [ - "2023-02-26T01:20:44", - 49566 + "2022-05-20T02:14:29", + 10399 ], [ - "2023-02-27T01:05:31", - 49605 + "2022-05-21T01:55:42", + 10437 ], [ - "2023-02-28T01:12:07", - 49798 + "2022-05-22T02:10:42", + 10447 ], [ - "2023-03-01T01:11:53", - 50017 + "2022-05-24T11:16:46", + 10616 ], [ - "2023-03-02T01:11:37", - 50199 + "2022-05-25T02:18:32", + 10632 ], [ - "2023-03-04T19:06:27", - 50571 + "2022-05-27T02:15:18", + 10705 ], [ - "2023-03-05T21:22:00", - 50662 + "2022-05-28T02:22:34", + 10756 ], [ - "2023-03-06T18:58:36", - 50967 + "2022-05-30T02:21:03", + 10771 ], [ - "2023-03-07T22:04:26", - 51285 + "2022-05-31T19:33:59", + 10895 ], [ - "2023-03-11T18:55:05", - 51900 + "2022-06-01T02:31:42", + 10908 ], [ - "2023-03-13T01:08:17", - 51962 + "2022-06-02T02:27:43", + 10962 ], [ - "2023-03-16T01:14:43", - 52633 + "2022-06-03T01:55:13", + 11042 ], [ - "2023-03-25T20:41:27", - 54546 + "2022-06-08T20:16:03", + 11410 ], [ - "2023-03-26T18:35:58", - 54606 + "2022-06-09T13:28:16", + 11450 ], [ - "2023-03-27T19:04:51", - 54788 + "2022-06-10T02:21:45", + 11532 ], [ - "2023-03-28T14:20:40", - 55001 + "2022-06-11T02:20:43", + 11639 ], [ - "2023-03-29T01:10:08", - 55075 + "2022-06-12T13:23:39", + 11656 ], [ - "2023-03-30T01:06:23", - 55339 + "2022-06-14T02:30:00", + 11775 ], [ - "2023-04-01T16:38:16", - 56089 + "2022-06-15T20:20:02", + 12033 ], [ - "2023-04-02T18:16:54", - 56142 + "2022-06-17T02:17:40", + 12161 ], [ - "2023-04-03T20:17:29", - 56393 - ] - ], - "cupcake": [ + "2022-06-19T07:40:43", + 12257 + ], [ - "2022-10-22T11:41:20", - 1 + "2022-06-22T23:37:06", + 12700 ], [ - "2022-10-23T01:13:56", - 1 + "2022-06-23T09:06:53", + 12753 ], [ - "2022-10-24T20:11:55", - 1 + "2022-06-24T02:16:36", + 12900 ], [ - "2022-10-25T00:08:55", - 1 + "2022-06-25T02:27:04", + 13126 ], [ - "2022-10-26T01:07:23", - 1 + "2022-06-26T16:16:05", + 13174 ], [ - "2022-10-27T01:11:40", - 2 + "2022-09-10T23:57:56", + 24181 ], [ - "2022-10-29T01:02:52", - 10 + "2022-09-11T17:27:20", + 24214 ], [ - "2022-10-30T20:09:57", - 10 + "2022-09-12T17:31:29", + 24437 ], [ - "2022-10-31T22:27:03", - 10 + "2022-09-15T12:40:02", + 24955 ], [ - "2022-11-01T18:25:59", - 13 + "2022-09-16T01:11:41", + 25063 ], [ - "2022-11-03T01:11:15", - 18 + "2022-09-17T01:12:07", + 25218 ], [ - "2022-11-04T11:35:34", - 22 + "2022-09-19T22:06:52", + 25452 ], [ - "2022-11-05T07:41:24", - 24 + "2022-09-20T01:15:00", + 25490 ], [ - "2022-11-06T11:06:34", - 24 + "2022-09-21T18:40:27", + 25898 ], [ - "2022-11-07T19:40:53", - 24 + "2022-09-22T16:43:34", + 26052 ], [ - "2022-11-08T01:06:52", - 24 + "2022-09-25T01:14:04", + 26282 ], [ - "2022-11-11T17:10:50", - 33 + "2022-09-26T01:16:57", + 26319 ], [ - "2022-11-13T20:58:24", - 33 + "2022-09-27T20:49:14", + 26609 ], [ - "2022-11-14T23:48:23", - 0 + "2022-09-30T01:39:04", + 26868 ], [ - "2022-11-15T07:38:22", - 34 + "2022-10-01T17:39:25", + 27013 ], [ - "2022-11-17T09:11:40", - 41 + "2022-10-02T12:03:53", + 27035 ], [ - "2022-11-19T22:14:34", - 56 + "2022-10-03T08:03:32", + 27094 ], [ - "2022-11-21T23:47:48", - 171 + "2022-10-04T01:20:50", + 27228 ], [ - "2022-11-22T01:14:59", - 180 + "2022-10-05T01:21:27", + 27373 ], [ - "2022-11-23T23:28:30", - 291 + "2022-10-08T23:24:13", + 27766 ], [ - "2022-11-26T01:00:47", - 454 + "2022-10-10T01:35:49", + 27794 ], [ - "2022-11-28T01:02:53", - 457 + "2022-10-11T01:16:06", + 27905 ], [ - "2022-12-07T07:19:55", - 559 + "2022-10-12T19:05:48", + 28177 ], [ - "2022-12-18T20:23:59", - 906 + "2022-10-13T01:19:16", + 28234 + ], + [ + "2022-10-14T01:30:33", + 28434 + ], + [ + "2022-10-15T01:22:21", + 28554 + ], + [ + "2022-10-16T21:43:31", + 28632 + ], + [ + "2022-10-18T06:25:58", + 28838 + ], + [ + "2022-10-22T11:41:20", + 29341 + ], + [ + "2022-10-23T01:13:56", + 29381 + ], + [ + "2022-10-24T20:11:55", + 29594 + ], + [ + "2022-10-25T00:08:55", + 29603 + ], + [ + "2022-10-26T01:07:23", + 29856 + ], + [ + "2022-10-27T01:11:40", + 29972 + ], + [ + "2022-10-29T01:02:52", + 30301 + ], + [ + "2022-10-30T20:09:57", + 30353 + ], + [ + "2022-10-31T22:27:03", + 30514 + ], + [ + "2022-11-01T18:25:59", + 30587 + ], + [ + "2022-11-03T01:11:15", + 30791 + ], + [ + "2022-11-04T11:35:34", + 31047 + ], + [ + "2022-11-05T07:41:24", + 31164 + ], + [ + "2022-11-06T11:06:34", + 31206 + ], + [ + "2022-11-07T19:40:53", + 31474 + ], + [ + "2022-11-08T01:06:52", + 31508 + ], + [ + "2022-11-11T17:10:50", + 32411 + ], + [ + "2022-11-13T20:58:24", + 32562 + ], + [ + "2022-11-14T23:48:23", + 0 + ], + [ + "2022-11-15T07:38:22", + 32831 + ], + [ + "2022-11-17T09:11:40", + 33258 + ], + [ + "2022-11-19T22:14:34", + 33654 + ], + [ + "2022-11-21T23:47:48", + 33884 + ], + [ + "2022-11-22T01:14:59", + 33894 + ], + [ + "2022-11-23T23:28:30", + 34181 + ], + [ + "2022-11-26T01:00:47", + 34535 + ], + [ + "2022-11-28T01:02:53", + 34600 + ], + [ + "2022-12-07T07:19:55", + 36335 + ], + [ + "2022-12-18T20:23:59", + 38358 ], [ "2022-12-19T18:26:59", - 926 + 38629 ], [ "2022-12-20T16:08:58", - 945 + 38875 ], [ "2022-12-21T23:23:24", - 1155 + 39181 ], [ "2022-12-22T22:59:06", - 1204 + 39425 ], [ "2022-12-24T20:01:35", - 1225 + 39674 ], [ "2022-12-25T21:13:52", - 1225 + 39700 ], [ - "2022-12-26T19:30:31", - 1228 + "2022-12-26T19:56:00", + 39839 ], [ "2022-12-27T23:56:39", - 1244 + 40047 ], [ "2022-12-29T20:55:31", - 1286 + 40459 ], [ "2022-12-30T20:56:36", - 1302 + 40563 ], [ "2022-12-31T08:10:29", - 1303 + 40599 ], [ "2023-01-01T23:58:03", - 1304 + 40655 ], [ "2023-01-02T23:32:43", - 1313 + 40824 ], [ "2023-01-04T01:14:45", - 1343 + 41045 ], [ "2023-01-05T00:40:47", - 1362 + 41320 ], [ "2023-01-06T15:27:19", - 1393 + 41782 ], [ "2023-01-07T23:05:20", - 1424 + 41903 ], [ "2023-01-09T23:13:18", - 1454 + 42265 ], [ "2023-01-10T22:19:22", - 1481 + 42496 ], [ "2023-01-11T20:38:34", - 1507 + 42708 ], [ "2023-01-12T19:14:41", - 1548 + 42937 ], [ "2023-01-14T22:19:17", - 1594 + 43298 ], [ "2023-01-15T05:54:49", - 1594 + 43309 ], [ "2023-01-16T01:07:20", - 1594 + 43358 ], [ "2023-01-18T01:10:41", - 1657 + 43957 ], [ "2023-01-19T01:11:47", - 1701 + 44190 ], [ "2023-01-20T01:07:56", - 1734 + 44364 ], [ "2023-01-21T01:11:30", - 1771 + 44538 ], [ "2023-01-22T23:52:22", - 1773 + 44604 ], [ "2023-01-24T01:13:09", - 1792 + 44821 ], [ "2023-01-25T01:09:15", - 1839 + 45018 ], [ "2023-01-27T01:08:47", - 1928 + 45309 ], [ "2023-01-28T23:00:24", - 1964 + 45541 ], [ "2023-01-29T11:12:53", - 1964 + 45564 ], [ "2023-01-31T09:09:55", - 2061 + 45861 ], [ "2023-02-04T01:08:11", - 2258 + 46571 ], [ "2023-02-05T19:16:16", - 2273 + 46629 ], [ "2023-02-06T01:06:21", - 2273 + 46650 ], [ "2023-02-07T01:06:44", - 2326 + 46922 ], [ "2023-02-08T19:33:17", - 2443 + 47254 ], [ "2023-02-16T01:07:41", - 2834 + 48142 ], [ "2023-02-17T20:09:45", - 2907 + 48477 ], [ "2023-02-19T16:48:31", - 2933 + 48552 ], [ "2023-02-22T01:09:24", - 3038 + 48941 ], [ "2023-02-25T18:11:10", - 3224 + 49556 ], [ "2023-02-26T01:20:44", - 3228 + 49566 ], [ "2023-02-27T01:05:31", - 3239 + 49605 ], [ "2023-02-28T01:12:07", - 3340 + 49798 ], [ "2023-03-01T01:11:53", - 3456 + 50017 ], [ "2023-03-02T01:11:37", - 3558 + 50199 ], [ "2023-03-04T19:06:27", - 3728 + 50571 ], [ "2023-03-05T21:22:00", - 3758 + 50662 ], [ "2023-03-06T18:58:36", - 3903 + 50967 ], [ "2023-03-07T22:04:26", - 4028 + 51285 ], [ "2023-03-11T18:55:05", - 4394 + 51900 ], [ "2023-03-13T01:08:17", - 4409 + 51962 ], [ "2023-03-16T01:14:43", - 4882 + 52633 ], [ "2023-03-25T20:41:27", - 6045 + 54546 ], [ "2023-03-26T18:35:58", - 6079 + 54606 ], [ "2023-03-27T19:04:51", - 6277 + 54788 ], [ "2023-03-28T14:20:40", - 6408 + 55001 ], [ "2023-03-29T01:10:08", - 6569 + 55075 ], [ "2023-03-30T01:06:23", - 6686 + 55339 ], [ "2023-04-01T16:38:16", - 7078 + 56089 ], [ "2023-04-02T18:16:54", - 7111 + 56142 ], [ "2023-04-03T20:17:29", - 7208 - ] - ], - "dart": [ + 56393 + ], [ - "2021-07-26T20:10:04", - 650 + "2023-04-04T01:00:44", + 56448 ], [ - "2021-07-28T01:29:28", - 651 + "2023-04-05T01:02:44", + 56804 ], [ - "2021-07-29T01:25:08", - 652 + "2023-04-06T01:02:10", + 56980 ], [ - "2021-07-30T02:45:47", - 654 + "2023-04-10T19:39:37", + 57595 ], [ - "2021-07-31T02:55:52", - 655 + "2023-04-11T18:04:56", + 57791 ], [ - "2021-08-01T01:34:33", - 657 + "2023-04-12T19:58:02", + 58151 ], [ - "2021-08-02T01:25:51", - 658 + "2023-04-15T13:28:28", + 58524 ], [ - "2021-08-03T01:34:04", - 658 + "2023-04-16T20:56:34", + 58575 ], [ - "2021-08-04T01:25:42", - 668 + "2023-04-20T09:00:09", + 59164 ], [ - "2021-08-05T13:16:40", - 675 + "2023-04-22T18:08:18", + 59559 ], [ - "2021-08-06T10:08:44", - 684 + "2023-04-23T08:46:30", + 59597 ], [ - "2021-08-07T01:23:20", - 684 + "2023-04-24T10:35:05", + 59728 ], [ - "2021-08-08T17:46:20", - 687 + "2023-04-25T13:22:38", + 60008 ], [ - "2021-08-09T12:57:30", - 690 + "2023-04-26T01:05:21", + 60153 ], [ - "2021-08-10T18:15:58", - 694 + "2023-04-29T09:13:18", + 60989 ], [ - "2021-08-11T19:45:43", - 699 + "2023-04-30T23:37:21", + 61072 ], [ - "2021-08-12T16:45:06", - 711 + "2023-05-01T12:30:40", + 61122 ], [ - "2021-08-13T01:26:41", - 717 + "2023-05-02T01:03:19", + 61205 ], [ - "2021-08-14T08:26:41", - 718 + "2023-05-12T22:08:47", + 63797 ], [ - "2021-08-15T21:37:16", - 731 + "2023-05-13T20:23:06", + 63857 ], [ - "2021-08-17T01:22:18", - 734 + "2023-05-14T19:54:23", + 63946 ], [ - "2021-08-18T01:24:15", - 739 + "2023-05-17T23:06:02", + 64761 ], [ - "2021-08-19T22:44:18", - 748 + "2023-05-18T18:05:13", + 64933 ], [ - "2021-08-20T16:03:59", - 760 + "2023-05-19T18:27:46", + 65149 ], [ - "2021-08-21T12:36:04", - 767 + "2023-05-20T06:58:27", + 65247 ], [ - "2021-08-22T01:21:13", - 768 + "2023-05-21T17:54:05", + 65353 ], [ - "2021-08-23T20:34:23", - 798 + "2023-05-22T19:05:24", + 65540 ], [ - "2021-08-24T21:32:49", - 817 + "2023-05-23T01:07:57", + 65598 ], [ - "2021-08-28T19:11:50", - 841 + "2023-05-24T01:14:32", + 65843 ], [ - "2021-08-29T12:02:14", - 847 + "2023-05-26T01:11:00", + 66471 ], [ - "2021-08-31T03:01:11", - 852 + "2023-05-27T17:04:12", + 66727 ], [ - "2021-09-01T01:34:30", - 861 + "2023-05-28T17:03:24", + 66788 ], [ - "2021-09-02T11:26:37", - 867 + "2023-05-29T11:13:08", + 66872 ], [ - "2021-09-03T01:30:31", - 873 + "2023-05-31T23:48:39", + 67518 ], [ - "2021-09-04T13:35:27", - 878 + "2023-06-01T01:25:18", + 67540 ], [ - "2021-09-06T01:30:54", - 888 + "2023-06-02T01:10:33", + 67746 ], [ - "2021-09-07T01:30:29", - 893 + "2023-06-03T09:59:50", + 67948 ], [ - "2021-09-12T12:45:46", - 901 + "2023-06-04T01:13:43", + 67991 ], [ - "2021-09-15T03:11:38", - 922 + "2023-06-05T01:08:28", + 68043 ], [ - "2021-09-18T22:10:09", - 954 + "2023-06-07T01:10:00", + 68684 ], [ - "2021-09-19T15:32:31", - 959 + "2023-06-08T05:19:18", + 69031 ], [ - "2021-09-20T01:35:53", - 961 + "2023-06-11T18:48:09", + 69579 ], [ - "2021-09-21T17:53:24", - 969 + "2023-06-12T01:16:15", + 69631 ], [ - "2021-09-23T01:37:54", - 980 + "2023-06-13T01:11:33", + 69939 ], [ - "2021-09-24T03:14:34", - 984 + "2023-06-17T01:09:24", + 71103 ], [ - "2021-09-25T16:30:33", - 1006 + "2023-06-21T05:26:13", + 71933 ], [ - "2021-09-26T12:23:03", - 1011 + "2023-06-23T01:12:21", + 72425 ], [ - "2021-09-27T15:31:39", - 1025 + "2023-06-24T01:13:03", + 72723 ], [ - "2021-09-29T01:26:48", - 1039 + "2023-06-25T01:19:08", + 72767 ], [ - "2021-09-30T23:05:25", - 1047 + "2023-07-02T01:17:57", + 74840 ], [ - "2021-10-01T16:05:31", - 1049 + "2023-07-05T04:19:03", + 75591 ], [ - "2021-10-03T21:24:16", - 1054 + "2023-07-06T01:13:59", + 75909 ], [ - "2021-10-05T01:32:48", - 1064 + "2023-07-07T01:22:59", + 76220 ], [ - "2021-10-06T08:19:33", - 1073 + "2023-07-09T01:17:28", + 76549 ], [ - "2021-10-07T19:01:06", - 1081 + "2023-07-10T12:35:57", + 76815 ], [ - "2021-10-09T09:11:23", - 1088 + "2023-07-11T18:04:48", + 77401 ], [ - "2021-10-10T16:38:57", - 1094 + "2023-07-13T01:16:23", + 77844 ], [ - "2021-10-12T12:32:12", - 1108 + "2023-07-14T18:55:34", + 78446 ], [ - "2021-10-13T01:33:36", - 1116 + "2023-07-15T14:49:24", + 78520 ], [ - "2021-10-16T01:43:12", - 1128 + "2023-07-17T01:18:56", + 78617 ], [ - "2021-10-17T12:27:08", - 1134 + "2023-07-23T01:13:49", + 80052 ], [ - "2021-10-21T01:43:07", - 1151 + "2023-07-24T12:19:15", + 80257 ], [ - "2021-10-24T15:47:49", - 1186 + "2023-07-25T10:15:45", + 80468 ], [ - "2021-10-25T04:54:54", - 1191 + "2023-07-26T21:02:52", + 81009 ], [ - "2021-10-26T19:08:21", - 1214 + "2023-08-03T19:41:39", + 82957 ], [ - "2021-10-27T10:52:46", - 1218 + "2023-08-06T01:17:07", + 83208 ], [ - "2021-10-28T01:27:35", - 1222 + "2023-08-07T14:09:58", + 83425 ], [ - "2021-10-29T05:01:38", - 1224 + "2023-08-09T21:27:06", + 84033 ], [ - "2021-10-30T20:34:54", - 46 + "2023-08-10T00:37:45", + 84040 ], [ - "2021-10-31T18:17:07", - 1295 + "2023-08-11T00:59:39", + 84330 ], [ - "2021-11-01T01:50:59", - 1308 + "2023-08-14T01:07:10", + 84696 ], [ - "2021-11-02T11:56:56", - 1329 + "2023-08-20T10:19:30", + 86093 ], [ - "2021-11-03T01:34:05", - 1343 + "2023-08-21T01:02:38", + 86128 ], [ - "2021-11-04T22:06:35", - 1371 + "2023-08-22T05:14:32", + 86486 ], [ - "2021-11-07T22:48:14", - 1397 + "2023-08-23T01:09:12", + 86729 ], [ - "2021-11-08T16:38:12", - 1408 + "2023-08-24T08:23:46", + 87130 ], [ - "2021-11-09T14:05:16", - 1421 + "2023-08-25T01:09:33", + 87391 ], [ - "2021-11-11T23:43:38", - 1446 + "2023-08-26T15:48:29", + 87695 ], [ - "2021-11-12T07:23:40", - 1454 + "2023-09-01T01:00:53", + 88970 ], [ - "2021-11-13T03:49:42", - 1460 + "2023-09-02T06:53:40", + 89236 ], [ - "2021-11-14T20:38:46", - 1465 + "2023-09-03T17:23:10", + 89327 ], [ - "2021-11-15T21:50:19", - 1476 + "2023-09-04T01:14:42", + 89342 ], [ - "2021-11-17T13:49:27", - 1487 + "2023-09-06T09:29:05", + 89993 ], [ - "2021-11-18T12:57:03", - 1491 + "2023-09-08T01:01:21", + 90526 ], [ - "2021-11-19T01:41:21", - 1508 + "2023-09-17T18:42:04", + 92538 ], [ - "2021-11-21T18:45:36", - 1536 + "2023-09-18T07:24:56", + 92629 ], [ - "2021-11-22T21:51:21", - 1547 + "2023-09-19T01:04:12", + 92880 ], [ - "2021-11-24T01:32:35", - 1551 + "2023-09-20T15:31:08", + 93433 ], [ - "2021-11-25T01:36:17", - 1554 + "2023-09-21T01:10:04", + 93513 ], [ - "2021-11-26T01:28:24", - 1557 + "2023-09-22T16:54:09", + 93978 ], [ - "2021-11-27T01:29:49", - 1561 + "2023-09-24T01:09:47", + 94065 ], [ - "2021-11-29T19:53:22", - 1573 + "2023-09-26T01:03:52", + 94382 ], [ - "2021-12-01T21:53:10", - 1597 + "2023-09-28T01:03:35", + 94982 ], [ - "2021-12-02T22:38:42", - 1610 + "2023-10-02T10:16:34", + 95699 ], [ - "2021-12-03T07:25:47", - 1621 + "2023-10-11T01:02:27", + 97817 ], [ - "2021-12-04T10:20:40", - 1630 + "2023-10-12T07:12:13", + 98069 ], [ - "2021-12-05T01:37:50", - 1634 + "2023-10-15T18:35:06", + 98643 ], [ - "2021-12-06T01:34:54", - 1638 + "2023-10-16T01:12:02", + 98655 ], [ - "2021-12-07T19:17:16", - 1678 + "2023-10-17T01:19:48", + 98996 ], [ - "2021-12-08T11:50:21", - 1687 + "2023-10-18T09:54:25", + 99299 ], [ - "2021-12-09T08:24:35", - 1712 + "2023-10-19T05:13:12", + 99560 ], [ - "2021-12-11T10:08:27", - 1720 + "2023-10-20T21:26:06", + 100067 ], [ - "2021-12-12T01:37:49", - 1735 + "2023-10-21T07:20:54", + 100080 ], [ - "2021-12-14T01:36:23", - 1747 + "2023-10-22T21:40:43", + 100100 ], [ - "2021-12-15T01:38:21", - 1749 + "2023-10-24T01:08:57", + 100359 ], [ - "2021-12-16T01:40:15", - 1751 + "2023-10-25T03:48:19", + 100807 ], [ - "2021-12-17T01:41:18", - 1754 + "2023-10-28T17:16:00", + 101483 ], [ - "2021-12-18T12:07:04", - 1759 + "2023-10-29T10:04:35", + 101506 ], [ - "2021-12-21T13:52:15", - 1779 + "2023-10-30T01:06:23", + 101536 ], [ - "2021-12-23T13:53:28", - 1787 + "2023-10-31T01:15:37", + 101828 ], [ - "2021-12-26T01:43:59", - 1788 + "2023-11-01T12:58:49", + 102122 ], [ - "2021-12-29T20:36:25", - 1793 + "2023-11-03T22:34:05", + 102617 ], [ - "2021-12-31T01:38:18", - 1793 + "2023-11-04T17:14:00", + 102630 ], [ - "2022-01-01T01:37:58", - 1794 + "2023-11-05T18:48:33", + 102650 ], [ - "2022-01-03T22:58:05", - 1797 + "2023-11-06T22:30:41", + 102960 ], [ - "2022-01-09T14:02:41", - 1845 + "2023-11-07T22:42:00", + 103272 ], [ - "2022-01-11T01:36:44", - 1864 + "2023-11-08T22:22:32", + 103603 ], [ - "2022-01-12T01:35:34", - 1869 + "2023-11-09T22:42:59", + 103848 ], [ - "2022-01-13T09:24:45", - 1886 + "2023-11-10T22:40:09", + 104074 ], [ - "2022-01-14T01:38:08", - 1898 + "2023-11-11T22:37:19", + 104091 + ] + ], + "cupcake": [ + [ + "2022-10-22T11:41:20", + 1 ], [ - "2022-01-15T11:07:48", - 1906 + "2022-10-23T01:13:56", + 1 ], [ - "2022-01-16T01:40:08", - 1911 + "2022-10-24T20:11:55", + 1 ], [ - "2022-01-17T12:08:17", - 1914 + "2022-10-25T00:08:55", + 1 ], [ - "2022-01-18T04:25:59", - 1918 + "2022-10-26T01:07:23", + 1 ], [ - "2022-01-22T22:01:45", - 1937 + "2022-10-27T01:11:40", + 2 ], [ - "2022-01-23T19:48:17", - 1962 + "2022-10-29T01:02:52", + 10 ], [ - "2022-01-24T20:09:52", - 1980 + "2022-10-30T20:09:57", + 10 ], [ - "2022-01-25T07:19:01", - 1984 + "2022-10-31T22:27:03", + 10 ], [ - "2022-01-26T01:45:09", - 2003 + "2022-11-01T18:25:59", + 13 ], [ - "2022-01-28T01:33:25", - 2031 + "2022-11-03T01:11:15", + 18 ], [ - "2022-01-29T20:09:19", - 2037 + "2022-11-04T11:35:34", + 22 ], [ - "2022-01-30T17:15:32", - 2045 + "2022-11-05T07:41:24", + 24 ], [ - "2022-01-31T13:01:19", - 2077 + "2022-11-06T11:06:34", + 24 ], [ - "2022-02-01T07:00:15", - 2095 + "2022-11-07T19:40:53", + 24 ], [ - "2022-02-02T23:09:44", - 2124 + "2022-11-08T01:06:52", + 24 ], [ - "2022-02-03T10:37:04", - 2151 + "2022-11-11T17:10:50", + 33 ], [ - "2022-02-05T23:23:53", - 2171 + "2022-11-13T20:58:24", + 33 ], [ - "2022-02-06T17:27:14", - 2174 + "2022-11-14T23:48:23", + 0 ], [ - "2022-02-07T07:41:03", - 2177 + "2022-11-15T07:38:22", + 34 ], [ - "2022-02-09T12:02:49", - 2197 + "2022-11-17T09:11:40", + 41 ], [ - "2022-02-10T01:38:28", - 2201 + "2022-11-19T22:14:34", + 56 ], [ - "2022-02-13T17:21:12", - 2226 + "2022-11-21T23:47:48", + 171 ], [ - "2022-02-14T01:37:05", - 2232 + "2022-11-22T01:14:59", + 180 ], [ - "2022-02-16T01:41:49", - 2258 + "2022-11-23T23:28:30", + 291 ], [ - "2022-02-18T21:34:22", - 2287 + "2022-11-26T01:00:47", + 454 ], [ - "2022-02-20T20:39:40", - 2314 + "2022-11-28T01:02:53", + 457 ], [ - "2022-02-21T21:26:40", - 2329 + "2022-12-07T07:19:55", + 559 ], [ - "2022-02-25T15:39:13", - 2353 + "2022-12-18T20:23:59", + 906 ], [ - "2022-02-27T01:44:50", - 2353 + "2022-12-19T18:26:59", + 926 ], [ - "2022-02-28T01:51:49", - 2354 + "2022-12-20T16:08:58", + 945 ], [ - "2022-03-02T23:33:51", - 2366 + "2022-12-21T23:23:24", + 1155 ], [ - "2022-03-03T01:50:14", - 2369 + "2022-12-22T22:59:06", + 1204 ], [ - "2022-03-04T05:18:37", - 2381 + "2022-12-24T20:01:35", + 1225 ], [ - "2022-03-06T01:44:30", - 2382 + "2022-12-25T21:13:52", + 1225 ], [ - "2022-03-08T11:13:31", - 2393 + "2022-12-26T19:30:31", + 1228 ], [ - "2022-03-09T07:35:11", - 2409 + "2022-12-27T23:56:39", + 1244 ], [ - "2022-03-10T01:51:49", - 2415 + "2022-12-29T20:55:31", + 1286 ], [ - "2022-03-11T01:51:30", - 2417 + "2022-12-30T20:56:36", + 1302 ], [ - "2022-03-12T01:42:04", - 2417 + "2022-12-31T08:10:29", + 1303 ], [ - "2022-03-13T19:08:51", - 2420 + "2023-01-01T23:58:03", + 1304 ], [ - "2022-03-14T15:10:17", - 2432 + "2023-01-02T23:32:43", + 1313 ], [ - "2022-03-15T01:49:51", - 2437 + "2023-01-04T01:14:45", + 1343 ], [ - "2022-03-16T01:45:07", - 2442 + "2023-01-05T00:40:47", + 1362 ], [ - "2022-03-17T12:36:48", - 2455 + "2023-01-06T15:27:19", + 1393 ], [ - "2022-03-19T16:59:24", - 2466 + "2023-01-07T23:05:20", + 1424 ], [ - "2022-03-20T11:59:05", - 2468 + "2023-01-09T23:13:18", + 1454 ], [ - "2022-03-21T01:44:24", - 2468 + "2023-01-10T22:19:22", + 1481 ], [ - "2022-03-22T01:55:14", - 2479 + "2023-01-11T20:38:34", + 1507 ], [ - "2022-03-23T01:55:28", - 2485 + "2023-01-12T19:14:41", + 1548 ], [ - "2022-03-24T01:48:26", - 2488 + "2023-01-14T22:19:17", + 1594 ], [ - "2022-03-26T22:36:41", - 2499 + "2023-01-15T05:54:49", + 1594 ], [ - "2022-03-27T20:21:20", - 2499 + "2023-01-16T01:07:20", + 1594 ], [ - "2022-03-30T01:54:07", - 2516 + "2023-01-18T01:10:41", + 1657 ], [ - "2022-03-31T19:42:14", - 2521 + "2023-01-19T01:11:47", + 1701 ], [ - "2022-04-01T15:16:50", - 2522 + "2023-01-20T01:07:56", + 1734 ], [ - "2022-04-02T01:51:52", - 2524 + "2023-01-21T01:11:30", + 1771 ], [ - "2022-04-04T03:28:40", - 2526 + "2023-01-22T23:52:22", + 1773 ], [ - "2022-04-06T04:08:13", - 2545 + "2023-01-24T01:13:09", + 1792 ], [ - "2022-04-07T01:53:15", - 2557 + "2023-01-25T01:09:15", + 1839 ], [ - "2022-04-09T01:50:38", - 2580 + "2023-01-27T01:08:47", + 1928 ], [ - "2022-04-10T14:05:52", - 2580 + "2023-01-28T23:00:24", + 1964 ], [ - "2022-04-11T17:59:19", - 2586 + "2023-01-29T11:12:53", + 1964 ], [ - "2022-04-18T19:21:22", - 2635 + "2023-01-31T09:09:55", + 2061 ], [ - "2022-04-22T17:35:15", - 2660 + "2023-02-04T01:08:11", + 2258 ], [ - "2022-04-23T08:58:43", - 2662 + "2023-02-05T19:16:16", + 2273 ], [ - "2022-04-24T16:22:52", - 2664 + "2023-02-06T01:06:21", + 2273 ], [ - "2022-04-26T12:16:27", - 2669 + "2023-02-07T01:06:44", + 2326 ], [ - "2022-04-28T02:47:35", - 2673 + "2023-02-08T19:33:17", + 2443 ], [ - "2022-04-29T02:28:21", - 2681 + "2023-02-16T01:07:41", + 2834 ], [ - "2022-04-30T15:55:37", - 2687 + "2023-02-17T20:09:45", + 2907 ], [ - "2022-05-02T02:22:46", - 2695 + "2023-02-19T16:48:31", + 2933 ], [ - "2022-05-03T15:10:47", - 2704 + "2023-02-22T01:09:24", + 3038 ], [ - "2022-05-04T02:21:38", - 2715 + "2023-02-25T18:11:10", + 3224 ], [ - "2022-05-05T02:29:20", - 2724 + "2023-02-26T01:20:44", + 3228 ], [ - "2022-05-06T01:57:12", - 2728 + "2023-02-27T01:05:31", + 3239 ], [ - "2022-05-07T15:43:47", - 2736 + "2023-02-28T01:12:07", + 3340 ], [ - "2022-05-08T09:22:07", - 2736 + "2023-03-01T01:11:53", + 3456 ], [ - "2022-05-11T18:46:39", - 2745 + "2023-03-02T01:11:37", + 3558 ], [ - "2022-05-14T10:19:10", - 2767 + "2023-03-04T19:06:27", + 3728 ], [ - "2022-05-15T18:35:14", - 2767 + "2023-03-05T21:22:00", + 3758 ], [ - "2022-05-17T02:16:25", - 2776 + "2023-03-06T18:58:36", + 3903 ], [ - "2022-05-20T02:14:29", - 2812 + "2023-03-07T22:04:26", + 4028 ], [ - "2022-05-21T01:55:42", - 2821 + "2023-03-11T18:55:05", + 4394 ], [ - "2022-05-22T02:10:42", - 2823 + "2023-03-13T01:08:17", + 4409 ], [ - "2022-05-24T11:16:46", - 2832 + "2023-03-16T01:14:43", + 4882 ], [ - "2022-05-25T02:18:32", - 2833 + "2023-03-25T20:41:27", + 6045 ], [ - "2022-05-27T02:15:18", - 2842 + "2023-03-26T18:35:58", + 6079 ], [ - "2022-05-28T02:22:34", - 2850 + "2023-03-27T19:04:51", + 6277 ], [ - "2022-05-30T02:21:03", - 2852 + "2023-03-28T14:20:40", + 6408 ], [ - "2022-05-31T19:33:59", - 2859 + "2023-03-29T01:10:08", + 6569 ], [ - "2022-06-01T02:31:42", - 2861 + "2023-03-30T01:06:23", + 6686 ], [ - "2022-06-02T02:27:43", - 2870 + "2023-04-01T16:38:16", + 7078 ], [ - "2022-06-03T01:55:13", - 2879 + "2023-04-02T18:16:54", + 7111 ], [ - "2022-06-08T20:16:03", - 2930 + "2023-04-03T20:17:29", + 7208 ], [ - "2022-06-09T13:28:16", - 2941 + "2023-04-04T01:00:44", + 7235 ], [ - "2022-06-10T02:21:45", - 2947 + "2023-04-05T01:02:44", + 7306 ], [ - "2022-06-11T02:20:43", - 2971 + "2023-04-06T01:02:10", + 7392 ], [ - "2022-06-12T13:23:39", - 2972 + "2023-04-10T19:39:37", + 7641 ], [ - "2022-06-14T02:30:00", - 2993 + "2023-04-11T18:04:56", + 7740 ], [ - "2022-06-15T20:20:02", - 3016 + "2023-04-12T19:58:02", + 7851 ], [ - "2022-06-17T02:17:40", - 3032 + "2023-04-15T13:28:28", + 8059 ], [ - "2022-06-19T07:40:43", - 3046 + "2023-04-16T20:56:34", + 8093 ], [ - "2022-06-22T23:37:06", - 3091 + "2023-04-20T09:00:09", + 8464 ], [ - "2022-06-23T09:06:53", - 3092 + "2023-04-22T18:08:18", + 8674 ], [ - "2022-06-24T02:16:36", - 3114 + "2023-04-23T08:46:30", + 8701 ], [ - "2022-06-25T02:27:04", - 3128 + "2023-04-24T10:35:05", + 8729 ], [ - "2022-06-26T16:16:05", - 3131 - ] - ], - "documentation": [ + "2023-04-25T13:22:38", + 8855 + ], [ - "2021-07-26T20:10:04", - 6405 + "2023-04-26T01:05:21", + 8941 ], [ - "2021-07-28T01:29:28", - 6502 + "2023-04-29T09:13:18", + 9222 ], [ - "2021-07-29T01:25:08", - 6600 + "2023-04-30T23:37:21", + 9241 ], [ - "2021-07-30T02:45:47", - 6712 + "2023-05-01T12:30:40", + 9254 ], [ - "2021-07-31T02:55:52", - 6802 + "2023-05-02T01:03:19", + 9329 ], [ - "2021-08-01T01:34:33", - 6813 + "2023-05-12T22:08:47", + 10469 ], [ - "2021-08-02T01:25:51", - 6820 + "2023-05-13T20:23:06", + 10508 ], [ - "2021-08-03T01:34:04", - 6912 + "2023-05-14T19:54:23", + 10530 ], [ - "2021-08-04T01:25:42", - 6968 + "2023-05-17T23:06:02", + 10950 ], [ - "2021-08-05T13:16:40", - 7073 + "2023-05-18T18:05:13", + 11130 ], [ - "2021-08-06T10:08:44", - 7157 + "2023-05-19T18:27:46", + 11308 ], [ - "2021-08-07T01:23:20", - 7268 + "2023-05-20T06:58:27", + 11458 ], [ - "2021-08-08T17:46:20", - 7291 + "2023-05-21T17:54:05", + 11476 ], [ - "2021-08-09T12:57:30", - 7311 + "2023-05-22T19:05:24", + 11597 ], [ - "2021-08-10T18:15:58", - 7427 + "2023-05-23T01:07:57", + 11677 ], [ - "2021-08-11T19:45:43", - 7548 + "2023-05-24T01:14:32", + 11975 ], [ - "2021-08-12T16:45:06", - 7670 + "2023-05-26T01:11:00", + 12354 ], [ - "2021-08-13T01:26:41", - 7761 + "2023-05-27T17:04:12", + 12625 ], [ - "2021-08-14T08:26:41", - 7876 + "2023-05-28T17:03:24", + 12641 ], [ - "2021-08-15T21:37:16", - 7902 + "2023-05-29T11:13:08", + 12665 ], [ - "2021-08-17T01:22:18", - 7998 + "2023-05-31T23:48:39", + 13001 ], [ - "2021-08-18T01:24:15", - 8161 + "2023-06-01T01:25:18", + 13016 ], [ - "2021-08-19T22:44:18", - 8324 + "2023-06-02T01:10:33", + 13151 ], [ - "2021-08-20T16:03:59", - 8422 + "2023-06-03T09:59:50", + 13318 ], [ - "2021-08-21T12:36:04", - 8511 + "2023-06-04T01:13:43", + 13322 ], [ - "2021-08-22T01:21:13", - 8527 + "2023-06-05T01:08:28", + 13334 ], [ - "2021-08-23T20:34:23", - 8650 + "2023-06-07T01:10:00", + 13679 ], [ - "2021-08-24T21:32:49", - 8820 + "2023-06-08T05:19:18", + 13861 ], [ - "2021-08-28T19:11:50", - 9216 + "2023-06-11T18:48:09", + 14314 ], [ - "2021-08-29T12:02:14", - 9267 + "2023-06-12T01:16:15", + 14328 ], [ - "2021-08-31T03:01:11", - 9493 + "2023-06-13T01:11:33", + 14534 ], [ - "2021-09-01T01:34:30", - 9673 + "2023-06-17T01:09:24", + 15273 ], [ - "2021-09-02T11:26:37", - 9822 + "2023-06-21T05:26:13", + 15679 ], [ - "2021-09-03T01:30:31", - 9943 + "2023-06-23T01:12:21", + 16016 ], [ - "2021-09-04T13:35:27", - 10017 + "2023-06-24T01:13:03", + 16249 ], [ - "2021-09-06T01:30:54", - 10046 + "2023-06-25T01:19:08", + 16256 ], [ - "2021-09-07T01:30:29", - 10122 + "2023-07-02T01:17:57", + 17199 ], [ - "2021-09-12T12:45:46", - 10632 + "2023-07-05T04:19:03", + 17497 ], [ - "2021-09-15T03:11:38", - 10984 + "2023-07-06T01:13:59", + 17717 ], [ - "2021-09-18T22:10:09", - 11311 + "2023-07-07T01:22:59", + 17951 ], [ - "2021-09-19T15:32:31", - 11338 + "2023-07-09T01:17:28", + 18346 ], [ - "2021-09-20T01:35:53", - 11370 + "2023-07-10T12:35:57", + 18539 ], [ - "2021-09-21T17:53:24", - 11733 + "2023-07-11T18:04:48", + 18937 ], [ - "2021-09-23T01:37:54", - 11962 + "2023-07-13T01:16:23", + 19361 ], [ - "2021-09-24T03:14:34", - 12136 + "2023-07-14T18:55:34", + 19859 ], [ - "2021-09-25T16:30:33", - 12214 + "2023-07-15T14:49:24", + 19910 ], [ - "2021-09-26T12:23:03", - 12243 + "2023-07-17T01:18:56", + 20011 ], [ - "2021-09-27T15:31:39", - 12359 + "2023-07-23T01:13:49", + 21171 ], [ - "2021-09-29T01:26:48", - 12545 + "2023-07-24T12:19:15", + 21269 ], [ - "2021-09-30T23:05:25", - 13011 + "2023-07-25T10:15:45", + 21432 ], [ - "2021-10-01T16:05:31", - 13079 + "2023-07-26T21:02:52", + 21844 ], [ - "2021-10-03T21:24:16", - 13207 + "2023-08-03T19:41:39", + 23024 ], [ - "2021-10-05T01:32:48", - 13399 + "2023-08-06T01:17:07", + 23139 ], [ - "2021-10-06T08:19:33", - 13614 + "2023-08-07T14:09:58", + 23300 ], [ - "2021-10-07T19:01:06", - 13875 + "2023-08-09T21:27:06", + 23773 ], [ - "2021-10-09T09:11:23", - 14135 + "2023-08-10T00:37:45", + 23781 ], [ - "2021-10-10T16:38:57", - 14168 + "2023-08-11T00:59:39", + 24181 ], [ - "2021-10-12T12:32:12", - 14425 + "2023-08-14T01:07:10", + 24425 ], [ - "2021-10-13T01:33:36", - 14507 + "2023-08-20T10:19:30", + 25623 ], [ - "2021-10-16T01:43:12", - 14929 + "2023-08-21T01:02:38", + 25710 ], [ - "2021-10-17T12:27:08", - 14939 + "2023-08-22T05:14:32", + 25869 ], [ - "2021-10-21T01:43:07", - 15652 + "2023-08-23T01:09:12", + 26000 ], [ - "2021-10-24T15:47:49", - 16110 + "2023-08-24T08:23:46", + 26289 ], [ - "2021-10-25T04:54:54", - 16121 + "2023-08-25T01:09:33", + 26497 ], [ - "2021-10-26T19:08:21", - 16495 + "2023-08-26T15:48:29", + 26704 ], [ - "2021-10-27T10:52:46", - 16572 + "2023-09-01T01:00:53", + 27887 ], [ - "2021-10-28T01:27:35", - 16729 + "2023-09-02T06:53:40", + 28202 ], [ - "2021-10-29T05:01:38", - 17032 + "2023-09-03T17:23:10", + 28287 ], [ - "2021-10-30T20:34:54", - 46 + "2023-09-04T01:14:42", + 28327 ], [ - "2021-10-31T18:17:07", - 17483 + "2023-09-06T09:29:05", + 28691 ], [ - "2021-11-01T01:50:59", - 17567 + "2023-09-08T01:01:21", + 29011 ], [ - "2021-11-02T11:56:56", - 17938 + "2023-09-17T18:42:04", + 30104 ], [ - "2021-11-03T01:34:05", - 18159 + "2023-09-18T07:24:56", + 30266 ], [ - "2021-11-04T22:06:35", - 18648 + "2023-09-19T01:04:12", + 30414 ], [ - "2021-11-07T22:48:14", - 18944 + "2023-09-20T15:31:08", + 30740 ], [ - "2021-11-08T16:38:12", - 19171 + "2023-09-21T01:10:04", + 30854 ], [ - "2021-11-09T14:05:16", - 19363 + "2023-09-22T16:54:09", + 31058 ], [ - "2021-11-11T23:43:38", - 19880 + "2023-09-24T01:09:47", + 31128 ], [ - "2021-11-12T07:23:40", - 19893 + "2023-09-26T01:03:52", + 31399 ], [ - "2021-11-13T03:49:42", - 19984 + "2023-09-28T01:03:35", + 31794 ], [ - "2021-11-14T20:38:46", - 20035 + "2023-10-02T10:16:34", + 32321 ], [ - "2021-11-15T21:50:19", - 20202 + "2023-10-11T01:02:27", + 33200 ], [ - "2021-11-17T13:49:27", - 20500 + "2023-10-12T07:12:13", + 33350 ], [ - "2021-11-18T12:57:03", - 20993 + "2023-10-15T18:35:06", + 33624 ], [ - "2021-11-19T01:41:21", - 21088 + "2023-10-16T01:12:02", + 33684 ], [ - "2021-11-21T18:45:36", - 21298 + "2023-10-17T01:19:48", + 33792 ], [ - "2021-11-22T21:51:21", - 21471 + "2023-10-18T09:54:25", + 33900 ], [ - "2021-11-24T01:32:35", - 21651 + "2023-10-19T05:13:12", + 33983 ], [ - "2021-11-25T01:36:17", - 21912 + "2023-10-20T21:26:06", + 34156 ], [ - "2021-11-26T01:28:24", - 22006 + "2023-10-21T07:20:54", + 34170 ], [ - "2021-11-27T01:29:49", - 22150 + "2023-10-22T21:40:43", + 34308 ], [ - "2021-11-29T19:53:22", - 22344 + "2023-10-24T01:08:57", + 34447 ], [ - "2021-12-01T21:53:10", - 23000 + "2023-10-25T03:48:19", + 34643 ], [ - "2021-12-02T22:38:42", - 23134 + "2023-10-28T17:16:00", + 34946 ], [ - "2021-12-03T07:25:47", - 23149 + "2023-10-29T10:04:35", + 34960 ], [ - "2021-12-04T10:20:40", - 23337 + "2023-10-30T01:06:23", + 35038 ], [ - "2021-12-05T01:37:50", - 23344 + "2023-10-31T01:15:37", + 35150 ], [ - "2021-12-06T01:34:54", - 23358 + "2023-11-01T12:58:49", + 35401 ], [ - "2021-12-07T19:17:16", - 23887 + "2023-11-03T22:34:05", + 35775 ], [ - "2021-12-08T11:50:21", - 24000 + "2023-11-04T17:14:00", + 35786 ], [ - "2021-12-09T08:24:35", - 24246 + "2023-11-05T18:48:33", + 35791 ], [ - "2021-12-11T10:08:27", - 24625 + "2023-11-06T22:30:41", + 35979 ], [ - "2021-12-12T01:37:49", - 24649 + "2023-11-07T22:42:00", + 36140 ], [ - "2021-12-14T01:36:23", - 24778 + "2023-11-08T22:22:32", + 36329 ], [ - "2021-12-15T01:38:21", - 24878 + "2023-11-09T22:42:59", + 36480 ], [ - "2021-12-16T01:40:15", - 25005 + "2023-11-10T22:40:09", + 36610 ], [ - "2021-12-17T01:41:18", - 25138 + "2023-11-11T22:37:19", + 36634 + ] + ], + "dart": [ + [ + "2021-07-26T20:10:04", + 650 ], [ - "2021-12-18T12:07:04", - 25227 + "2021-07-28T01:29:28", + 651 ], [ - "2021-12-21T13:52:15", - 25344 + "2021-07-29T01:25:08", + 652 ], [ - "2021-12-23T13:53:28", - 25473 + "2021-07-30T02:45:47", + 654 ], [ - "2021-12-26T01:43:59", - 25516 + "2021-07-31T02:55:52", + 655 ], [ - "2021-12-29T20:36:25", - 25595 + "2021-08-01T01:34:33", + 657 ], [ - "2021-12-31T01:38:18", - 25637 + "2021-08-02T01:25:51", + 658 ], [ - "2022-01-01T01:37:58", - 25649 + "2021-08-03T01:34:04", + 658 ], [ - "2022-01-03T22:58:05", - 25700 + "2021-08-04T01:25:42", + 668 ], [ - "2022-01-09T14:02:41", - 26157 + "2021-08-05T13:16:40", + 675 ], [ - "2022-01-11T01:36:44", - 26368 + "2021-08-06T10:08:44", + 684 ], [ - "2022-01-12T01:35:34", - 26686 + "2021-08-07T01:23:20", + 684 ], [ - "2022-01-13T09:24:45", - 27123 + "2021-08-08T17:46:20", + 687 ], [ - "2022-01-14T01:38:08", - 27381 + "2021-08-09T12:57:30", + 690 ], [ - "2022-01-15T11:07:48", - 27898 + "2021-08-10T18:15:58", + 694 ], [ - "2022-01-16T01:40:08", - 27932 + "2021-08-11T19:45:43", + 699 ], [ - "2022-01-17T12:08:17", - 28208 + "2021-08-12T16:45:06", + 711 ], [ - "2022-01-18T04:25:59", - 28523 + "2021-08-13T01:26:41", + 717 ], [ - "2022-01-22T22:01:45", - 31809 + "2021-08-14T08:26:41", + 718 ], [ - "2022-01-23T19:48:17", - 31874 + "2021-08-15T21:37:16", + 731 ], [ - "2022-01-24T20:09:52", - 32914 + "2021-08-17T01:22:18", + 734 ], [ - "2022-01-25T07:19:01", - 32996 + "2021-08-18T01:24:15", + 739 ], [ - "2022-01-26T01:45:09", - 33612 + "2021-08-19T22:44:18", + 748 ], [ - "2022-01-28T01:33:25", - 34456 + "2021-08-20T16:03:59", + 760 ], [ - "2022-01-29T20:09:19", - 34766 + "2021-08-21T12:36:04", + 767 ], [ - "2022-01-30T17:15:32", - 34865 + "2021-08-22T01:21:13", + 768 ], [ - "2022-01-31T13:01:19", - 35016 + "2021-08-23T20:34:23", + 798 ], [ - "2022-02-01T07:00:15", - 35142 + "2021-08-24T21:32:49", + 817 ], [ - "2022-02-02T23:09:44", - 35493 + "2021-08-28T19:11:50", + 841 ], [ - "2022-02-03T10:37:04", - 35591 + "2021-08-29T12:02:14", + 847 ], [ - "2022-02-05T23:23:53", - 36074 + "2021-08-31T03:01:11", + 852 ], [ - "2022-02-06T17:27:14", - 36206 + "2021-09-01T01:34:30", + 861 ], [ - "2022-02-07T07:41:03", - 36295 + "2021-09-02T11:26:37", + 867 ], [ - "2022-02-09T12:02:49", - 37200 + "2021-09-03T01:30:31", + 873 ], [ - "2022-02-10T01:38:28", - 37479 + "2021-09-04T13:35:27", + 878 ], [ - "2022-02-13T17:21:12", - 38680 + "2021-09-06T01:30:54", + 888 ], [ - "2022-02-14T01:37:05", - 38700 + "2021-09-07T01:30:29", + 893 ], [ - "2022-02-16T01:41:49", - 39534 + "2021-09-12T12:45:46", + 901 ], [ - "2022-02-18T21:34:22", - 40938 + "2021-09-15T03:11:38", + 922 ], [ - "2022-02-20T20:39:40", - 41222 + "2021-09-18T22:10:09", + 954 ], [ - "2022-02-21T21:26:40", - 41770 + "2021-09-19T15:32:31", + 959 ], [ - "2022-02-25T15:39:13", - 43418 + "2021-09-20T01:35:53", + 961 ], [ - "2022-02-27T01:44:50", - 43584 + "2021-09-21T17:53:24", + 969 ], [ - "2022-02-28T01:51:49", - 43717 + "2021-09-23T01:37:54", + 980 ], [ - "2022-03-02T23:33:51", - 44349 + "2021-09-24T03:14:34", + 984 ], [ - "2022-03-03T01:50:14", - 44356 + "2021-09-25T16:30:33", + 1006 ], [ - "2022-03-04T05:18:37", - 44438 + "2021-09-26T12:23:03", + 1011 ], [ - "2022-03-06T01:44:30", - 44534 + "2021-09-27T15:31:39", + 1025 ], [ - "2022-03-08T11:13:31", - 44738 + "2021-09-29T01:26:48", + 1039 ], [ - "2022-03-09T07:35:11", - 44801 + "2021-09-30T23:05:25", + 1047 ], [ - "2022-03-10T01:51:49", - 44888 + "2021-10-01T16:05:31", + 1049 ], [ - "2022-03-11T01:51:30", - 44973 + "2021-10-03T21:24:16", + 1054 ], [ - "2022-03-12T01:42:04", - 45034 + "2021-10-05T01:32:48", + 1064 ], [ - "2022-03-13T19:08:51", - 45067 + "2021-10-06T08:19:33", + 1073 ], [ - "2022-03-14T15:10:17", - 45156 + "2021-10-07T19:01:06", + 1081 ], [ - "2022-03-15T01:49:51", - 45221 + "2021-10-09T09:11:23", + 1088 ], [ - "2022-03-16T01:45:07", - 45351 + "2021-10-10T16:38:57", + 1094 ], [ - "2022-03-17T12:36:48", - 45464 + "2021-10-12T12:32:12", + 1108 ], [ - "2022-03-19T16:59:24", - 45717 + "2021-10-13T01:33:36", + 1116 ], [ - "2022-03-20T11:59:05", - 45731 + "2021-10-16T01:43:12", + 1128 ], [ - "2022-03-21T01:44:24", - 45748 + "2021-10-17T12:27:08", + 1134 ], [ - "2022-03-22T01:55:14", - 45875 + "2021-10-21T01:43:07", + 1151 ], [ - "2022-03-23T01:55:28", - 45961 + "2021-10-24T15:47:49", + 1186 ], [ - "2022-03-24T01:48:26", - 46087 + "2021-10-25T04:54:54", + 1191 ], [ - "2022-03-26T22:36:41", - 46328 + "2021-10-26T19:08:21", + 1214 ], [ - "2022-03-27T20:21:20", - 46359 + "2021-10-27T10:52:46", + 1218 ], [ - "2022-03-30T01:54:07", - 46690 + "2021-10-28T01:27:35", + 1222 ], [ - "2022-03-31T19:42:14", - 46835 + "2021-10-29T05:01:38", + 1224 ], [ - "2022-04-01T15:16:50", - 46931 + "2021-10-30T20:34:54", + 46 ], [ - "2022-04-02T01:51:52", - 46980 + "2021-10-31T18:17:07", + 1295 ], [ - "2022-04-04T03:28:40", - 47046 + "2021-11-01T01:50:59", + 1308 ], [ - "2022-04-06T04:08:13", - 47283 + "2021-11-02T11:56:56", + 1329 ], [ - "2022-04-07T01:53:15", - 47424 + "2021-11-03T01:34:05", + 1343 ], [ - "2022-04-09T01:50:38", - 47772 + "2021-11-04T22:06:35", + 1371 ], [ - "2022-04-10T14:05:52", - 47830 + "2021-11-07T22:48:14", + 1397 ], [ - "2022-04-11T17:59:19", - 47969 + "2021-11-08T16:38:12", + 1408 ], [ - "2022-04-18T19:21:22", - 48966 + "2021-11-09T14:05:16", + 1421 ], [ - "2022-04-22T17:35:15", - 49871 + "2021-11-11T23:43:38", + 1446 ], [ - "2022-04-23T08:58:43", - 49985 + "2021-11-12T07:23:40", + 1454 ], [ - "2022-04-24T16:22:52", - 50018 + "2021-11-13T03:49:42", + 1460 ], [ - "2022-04-26T12:16:27", - 50375 + "2021-11-14T20:38:46", + 1465 ], [ - "2022-04-28T02:47:35", - 50724 + "2021-11-15T21:50:19", + 1476 ], [ - "2022-04-29T02:28:21", - 50937 + "2021-11-17T13:49:27", + 1487 ], [ - "2022-04-30T15:55:37", - 51218 + "2021-11-18T12:57:03", + 1491 ], [ - "2022-05-02T02:22:46", - 51337 + "2021-11-19T01:41:21", + 1508 ], [ - "2022-05-03T15:10:47", - 51662 + "2021-11-21T18:45:36", + 1536 ], [ - "2022-05-04T02:21:38", - 51769 + "2021-11-22T21:51:21", + 1547 ], [ - "2022-05-05T02:29:20", - 51960 + "2021-11-24T01:32:35", + 1551 ], [ - "2022-05-06T01:57:12", - 52113 + "2021-11-25T01:36:17", + 1554 ], [ - "2022-05-07T15:43:47", - 52293 + "2021-11-26T01:28:24", + 1557 ], [ - "2022-05-08T09:22:07", - 52328 + "2021-11-27T01:29:49", + 1561 ], [ - "2022-05-11T18:46:39", - 53023 + "2021-11-29T19:53:22", + 1573 ], [ - "2022-05-14T10:19:10", - 53463 + "2021-12-01T21:53:10", + 1597 ], [ - "2022-05-15T18:35:14", - 53501 + "2021-12-02T22:38:42", + 1610 ], [ - "2022-05-17T02:16:25", - 53792 + "2021-12-03T07:25:47", + 1621 ], [ - "2022-05-20T02:14:29", - 54481 + "2021-12-04T10:20:40", + 1630 ], [ - "2022-05-21T01:55:42", - 54619 + "2021-12-05T01:37:50", + 1634 ], [ - "2022-05-22T02:10:42", - 54660 + "2021-12-06T01:34:54", + 1638 ], [ - "2022-05-24T11:16:46", - 55034 + "2021-12-07T19:17:16", + 1678 ], [ - "2022-05-25T02:18:32", - 55215 + "2021-12-08T11:50:21", + 1687 ], [ - "2022-05-27T02:15:18", - 55559 + "2021-12-09T08:24:35", + 1712 ], [ - "2022-05-28T02:22:34", - 55715 + "2021-12-11T10:08:27", + 1720 ], [ - "2022-05-30T02:21:03", - 55754 + "2021-12-12T01:37:49", + 1735 ], [ - "2022-05-31T19:33:59", - 56073 + "2021-12-14T01:36:23", + 1747 ], [ - "2022-06-01T02:31:42", - 56154 + "2021-12-15T01:38:21", + 1749 ], [ - "2022-06-02T02:27:43", - 56403 + "2021-12-16T01:40:15", + 1751 ], [ - "2022-06-03T01:55:13", - 56520 + "2021-12-17T01:41:18", + 1754 ], [ - "2022-06-08T20:16:03", - 57277 + "2021-12-18T12:07:04", + 1759 ], [ - "2022-06-09T13:28:16", - 57447 + "2021-12-21T13:52:15", + 1779 ], [ - "2022-06-10T02:21:45", - 57566 + "2021-12-23T13:53:28", + 1787 ], [ - "2022-06-11T02:20:43", - 57703 + "2021-12-26T01:43:59", + 1788 ], [ - "2022-06-12T13:23:39", - 57745 + "2021-12-29T20:36:25", + 1793 ], [ - "2022-06-14T02:30:00", - 58026 + "2021-12-31T01:38:18", + 1793 ], [ - "2022-06-15T20:20:02", - 58406 + "2022-01-01T01:37:58", + 1794 ], [ - "2022-06-17T02:17:40", - 58664 + "2022-01-03T22:58:05", + 1797 ], [ - "2022-06-19T07:40:43", - 58809 + "2022-01-09T14:02:41", + 1845 ], [ - "2022-06-22T23:37:06", - 59232 + "2022-01-11T01:36:44", + 1864 ], [ - "2022-06-23T09:06:53", - 59295 + "2022-01-12T01:35:34", + 1869 ], [ - "2022-06-24T02:16:36", - 59431 + "2022-01-13T09:24:45", + 1886 ], [ - "2022-06-25T02:27:04", - 59587 + "2022-01-14T01:38:08", + 1898 ], [ - "2022-06-26T16:16:05", - 59661 + "2022-01-15T11:07:48", + 1906 ], [ - "2022-09-10T23:57:56", - 70406 + "2022-01-16T01:40:08", + 1911 ], [ - "2022-09-11T17:27:20", - 70521 + "2022-01-17T12:08:17", + 1914 ], [ - "2022-09-12T17:31:29", - 70826 + "2022-01-18T04:25:59", + 1918 ], [ - "2022-09-15T12:40:02", - 71657 + "2022-01-22T22:01:45", + 1937 ], [ - "2022-09-16T01:11:41", - 71784 + "2022-01-23T19:48:17", + 1962 ], [ - "2022-09-17T01:12:07", - 71937 + "2022-01-24T20:09:52", + 1980 ], [ - "2022-09-19T22:06:52", - 72190 + "2022-01-25T07:19:01", + 1984 ], [ - "2022-09-20T01:15:00", - 72263 + "2022-01-26T01:45:09", + 2003 ], [ - "2022-09-21T18:40:27", - 72782 + "2022-01-28T01:33:25", + 2031 ], [ - "2022-09-22T16:43:34", - 73026 + "2022-01-29T20:09:19", + 2037 ], [ - "2022-09-25T01:14:04", - 73323 + "2022-01-30T17:15:32", + 2045 ], [ - "2022-09-26T01:16:57", - 73404 + "2022-01-31T13:01:19", + 2077 ], [ - "2022-09-27T20:49:14", - 73940 + "2022-02-01T07:00:15", + 2095 ], [ - "2022-09-30T01:39:04", - 74727 + "2022-02-02T23:09:44", + 2124 ], [ - "2022-10-01T17:39:25", - 74973 + "2022-02-03T10:37:04", + 2151 ], [ - "2022-10-02T12:03:53", - 75025 + "2022-02-05T23:23:53", + 2171 ], [ - "2022-10-03T08:03:32", - 75119 + "2022-02-06T17:27:14", + 2174 ], [ - "2022-10-04T01:20:50", - 75517 + "2022-02-07T07:41:03", + 2177 ], [ - "2022-10-05T01:21:27", - 75849 + "2022-02-09T12:02:49", + 2197 ], [ - "2022-10-08T23:24:13", - 76792 + "2022-02-10T01:38:28", + 2201 ], [ - "2022-10-10T01:35:49", - 76850 + "2022-02-13T17:21:12", + 2226 ], [ - "2022-10-11T01:16:06", - 76999 + "2022-02-14T01:37:05", + 2232 ], [ - "2022-10-12T19:05:48", - 77468 + "2022-02-16T01:41:49", + 2258 ], [ - "2022-10-13T01:19:16", - 77579 + "2022-02-18T21:34:22", + 2287 ], [ - "2022-10-14T01:30:33", - 77869 + "2022-02-20T20:39:40", + 2314 ], [ - "2022-10-15T01:22:21", - 78082 + "2022-02-21T21:26:40", + 2329 ], [ - "2022-10-16T21:43:31", - 78217 + "2022-02-25T15:39:13", + 2353 ], [ - "2022-10-18T06:25:58", - 78557 + "2022-02-27T01:44:50", + 2353 ], [ - "2022-10-22T11:41:20", - 79788 + "2022-02-28T01:51:49", + 2354 ], [ - "2022-10-23T01:13:56", - 79825 + "2022-03-02T23:33:51", + 2366 ], [ - "2022-10-24T20:11:55", - 80244 + "2022-03-03T01:50:14", + 2369 ], [ - "2022-10-25T00:08:55", - 80265 + "2022-03-04T05:18:37", + 2381 ], [ - "2022-10-26T01:07:23", - 80659 + "2022-03-06T01:44:30", + 2382 ], [ - "2022-10-27T01:11:40", - 81062 + "2022-03-08T11:13:31", + 2393 ], [ - "2022-10-29T01:02:52", - 81776 + "2022-03-09T07:35:11", + 2409 ], [ - "2022-10-30T20:09:57", - 82058 + "2022-03-10T01:51:49", + 2415 ], [ - "2022-10-31T22:27:03", - 82398 + "2022-03-11T01:51:30", + 2417 ], [ - "2022-11-01T18:25:59", - 82705 + "2022-03-12T01:42:04", + 2417 ], [ - "2022-11-03T01:11:15", - 83238 + "2022-03-13T19:08:51", + 2420 ], [ - "2022-11-04T11:35:34", - 83720 + "2022-03-14T15:10:17", + 2432 ], [ - "2022-11-05T07:41:24", - 83964 + "2022-03-15T01:49:51", + 2437 ], [ - "2022-11-06T11:06:34", - 84133 + "2022-03-16T01:45:07", + 2442 ], [ - "2022-11-07T19:40:53", - 84646 + "2022-03-17T12:36:48", + 2455 ], [ - "2022-11-08T01:06:52", - 84744 + "2022-03-19T16:59:24", + 2466 ], [ - "2022-11-11T17:10:50", - 86152 + "2022-03-20T11:59:05", + 2468 ], [ - "2022-11-13T20:58:24", - 86459 + "2022-03-21T01:44:24", + 2468 ], [ - "2022-11-14T23:48:23", - 0 + "2022-03-22T01:55:14", + 2479 ], [ - "2022-11-15T07:38:22", - 86887 + "2022-03-23T01:55:28", + 2485 ], [ - "2022-11-17T09:11:40", - 87693 + "2022-03-24T01:48:26", + 2488 ], [ - "2022-11-19T22:14:34", - 88488 + "2022-03-26T22:36:41", + 2499 ], [ - "2022-11-21T23:47:48", - 88909 + "2022-03-27T20:21:20", + 2499 ], [ - "2022-11-22T01:14:59", - 88929 + "2022-03-30T01:54:07", + 2516 ], [ - "2022-11-23T23:28:30", - 89753 + "2022-03-31T19:42:14", + 2521 ], [ - "2022-11-26T01:00:47", - 90514 + "2022-04-01T15:16:50", + 2522 ], [ - "2022-11-28T01:02:53", - 90823 + "2022-04-02T01:51:52", + 2524 ], [ - "2022-12-07T07:19:55", - 93754 + "2022-04-04T03:28:40", + 2526 ], [ - "2022-12-18T20:23:59", - 96858 + "2022-04-06T04:08:13", + 2545 ], [ - "2022-12-19T18:26:59", - 97082 + "2022-04-07T01:53:15", + 2557 ], [ - "2022-12-20T16:08:58", - 97258 + "2022-04-09T01:50:38", + 2580 ], [ - "2022-12-21T23:23:24", - 97555 + "2022-04-10T14:05:52", + 2580 ], [ - "2022-12-22T22:59:06", - 97790 + "2022-04-11T17:59:19", + 2586 ], [ - "2022-12-24T20:01:35", - 98101 + "2022-04-18T19:21:22", + 2635 ], [ - "2022-12-25T21:13:52", - 98252 + "2022-04-22T17:35:15", + 2660 ], [ - "2022-12-26T19:56:00", - 98392 + "2022-04-23T08:58:43", + 2662 ], [ - "2022-12-27T23:56:39", - 98568 + "2022-04-24T16:22:52", + 2664 ], [ - "2022-12-29T20:55:31", - 98941 + "2022-04-26T12:16:27", + 2669 ], [ - "2022-12-30T20:56:36", - 99113 + "2022-04-28T02:47:35", + 2673 ], [ - "2022-12-31T08:10:29", - 99178 + "2022-04-29T02:28:21", + 2681 ], [ - "2023-01-01T23:58:03", - 99497 + "2022-04-30T15:55:37", + 2687 ], [ - "2023-01-02T23:32:43", - 99760 + "2022-05-02T02:22:46", + 2695 ], [ - "2023-01-04T01:14:45", - 100155 + "2022-05-03T15:10:47", + 2704 ], [ - "2023-01-05T00:40:47", - 100398 + "2022-05-04T02:21:38", + 2715 ], [ - "2023-01-06T15:27:19", - 100872 + "2022-05-05T02:29:20", + 2724 ], [ - "2023-01-07T23:05:20", - 101154 + "2022-05-06T01:57:12", + 2728 ], [ - "2023-01-09T23:13:18", - 101705 + "2022-05-07T15:43:47", + 2736 ], [ - "2023-01-10T22:19:22", - 102044 + "2022-05-08T09:22:07", + 2736 ], [ - "2023-01-11T20:38:34", - 102460 + "2022-05-11T18:46:39", + 2745 ], [ - "2023-01-12T19:14:41", - 102748 + "2022-05-14T10:19:10", + 2767 ], [ - "2023-01-14T22:19:17", - 103456 + "2022-05-15T18:35:14", + 2767 ], [ - "2023-01-15T05:54:49", - 103544 + "2022-05-17T02:16:25", + 2776 ], [ - "2023-01-16T01:07:20", - 103714 + "2022-05-20T02:14:29", + 2812 ], [ - "2023-01-18T01:10:41", - 104341 + "2022-05-21T01:55:42", + 2821 ], [ - "2023-01-19T01:11:47", - 104819 + "2022-05-22T02:10:42", + 2823 ], [ - "2023-01-20T01:07:56", - 105202 + "2022-05-24T11:16:46", + 2832 ], [ - "2023-01-21T01:11:30", - 105520 + "2022-05-25T02:18:32", + 2833 ], [ - "2023-01-22T23:52:22", - 105914 + "2022-05-27T02:15:18", + 2842 ], [ - "2023-01-24T01:13:09", - 106297 + "2022-05-28T02:22:34", + 2850 ], [ - "2023-01-25T01:09:15", - 106667 + "2022-05-30T02:21:03", + 2852 ], [ - "2023-01-27T01:08:47", - 107447 + "2022-05-31T19:33:59", + 2859 ], [ - "2023-01-28T23:00:24", - 108019 + "2022-06-01T02:31:42", + 2861 ], [ - "2023-01-29T11:12:53", - 108123 + "2022-06-02T02:27:43", + 2870 ], [ - "2023-01-31T09:09:55", - 108725 + "2022-06-03T01:55:13", + 2879 ], [ - "2023-02-04T01:08:11", - 110423 + "2022-06-08T20:16:03", + 2930 ], [ - "2023-02-05T19:16:16", - 110742 + "2022-06-09T13:28:16", + 2941 ], [ - "2023-02-06T01:06:21", - 110810 + "2022-06-10T02:21:45", + 2947 ], [ - "2023-02-07T01:06:44", - 111141 + "2022-06-11T02:20:43", + 2971 ], [ - "2023-02-08T19:33:17", - 111868 + "2022-06-12T13:23:39", + 2972 ], [ - "2023-02-16T01:07:41", - 114610 + "2022-06-14T02:30:00", + 2993 ], [ - "2023-02-17T20:09:45", - 115446 + "2022-06-15T20:20:02", + 3016 ], [ - "2023-02-19T16:48:31", - 115886 + "2022-06-17T02:17:40", + 3032 ], [ - "2023-02-22T01:09:24", - 116680 + "2022-06-19T07:40:43", + 3046 ], [ - "2023-02-25T18:11:10", - 117957 + "2022-06-22T23:37:06", + 3091 ], [ - "2023-02-26T01:20:44", - 118021 + "2022-06-23T09:06:53", + 3092 ], [ - "2023-02-27T01:05:31", - 118213 + "2022-06-24T02:16:36", + 3114 ], [ - "2023-02-28T01:12:07", - 118560 - ], - [ - "2023-03-01T01:11:53", - 118883 - ], - [ - "2023-03-02T01:11:37", - 119268 - ], - [ - "2023-03-04T19:06:27", - 120177 - ], - [ - "2023-03-05T21:22:00", - 120395 - ], - [ - "2023-03-06T18:58:36", - 120908 - ], - [ - "2023-03-07T22:04:26", - 121462 - ], - [ - "2023-03-11T18:55:05", - 124545 - ], - [ - "2023-03-13T01:08:17", - 124894 - ], - [ - "2023-03-16T01:14:43", - 126938 - ], - [ - "2023-03-25T20:41:27", - 131898 - ], - [ - "2023-03-26T18:35:58", - 132144 - ], - [ - "2023-03-27T19:04:51", - 132637 - ], - [ - "2023-03-28T14:20:40", - 133238 - ], - [ - "2023-03-29T01:10:08", - 133495 - ], - [ - "2023-03-30T01:06:23", - 134045 - ], - [ - "2023-04-01T16:38:16", - 135290 - ], - [ - "2023-04-02T18:16:54", - 135531 + "2022-06-25T02:27:04", + 3128 ], [ - "2023-04-03T20:17:29", - 135954 + "2022-06-26T16:16:05", + 3131 ] ], - "dotnet": [ + "documentation": [ [ "2021-07-26T20:10:04", - 215546 + 6405 ], [ "2021-07-28T01:29:28", - 215612 + 6502 ], [ "2021-07-29T01:25:08", - 215655 + 6600 ], [ "2021-07-30T02:45:47", - 215693 + 6712 ], [ "2021-07-31T02:55:52", - 215736 + 6802 ], [ "2021-08-01T01:34:33", - 215742 + 6813 ], [ "2021-08-02T01:25:51", - 215755 + 6820 ], [ "2021-08-03T01:34:04", - 215956 + 6912 ], [ "2021-08-04T01:25:42", - 216028 + 6968 ], [ "2021-08-05T13:16:40", - 216193 + 7073 ], [ "2021-08-06T10:08:44", - 216223 + 7157 ], [ "2021-08-07T01:23:20", - 216273 + 7268 ], [ "2021-08-08T17:46:20", - 216280 + 7291 ], [ "2021-08-09T12:57:30", - 216310 + 7311 ], [ "2021-08-10T18:15:58", - 216381 + 7427 ], [ "2021-08-11T19:45:43", - 216760 + 7548 ], [ "2021-08-12T16:45:06", - 217047 + 7670 ], [ "2021-08-13T01:26:41", - 217189 + 7761 ], [ "2021-08-14T08:26:41", - 217638 + 7876 ], [ "2021-08-15T21:37:16", - 218095 + 7902 ], [ "2021-08-17T01:22:18", - 218479 + 7998 ], [ "2021-08-18T01:24:15", - 218782 + 8161 ], [ "2021-08-19T22:44:18", - 219393 + 8324 ], [ "2021-08-20T16:03:59", - 219728 + 8422 ], [ "2021-08-21T12:36:04", - 220011 + 8511 ], [ "2021-08-22T01:21:13", - 220213 + 8527 ], [ "2021-08-23T20:34:23", - 220907 + 8650 ], [ "2021-08-24T21:32:49", - 221455 + 8820 ], [ "2021-08-28T19:11:50", - 222749 + 9216 ], [ "2021-08-29T12:02:14", - 222972 + 9267 ], [ "2021-08-31T03:01:11", - 223499 + 9493 ], [ "2021-09-01T01:34:30", - 223803 + 9673 ], [ "2021-09-02T11:26:37", - 224324 + 9822 ], [ "2021-09-03T01:30:31", - 224502 + 9943 ], [ "2021-09-04T13:35:27", - 224936 + 10017 ], [ "2021-09-06T01:30:54", - 225388 + 10046 ], [ "2021-09-07T01:30:29", - 225689 + 10122 ], [ "2021-09-12T12:45:46", - 227344 + 10632 ], [ "2021-09-15T03:11:38", - 228140 + 10984 ], [ "2021-09-18T22:10:09", - 229296 + 11311 ], [ "2021-09-19T15:32:31", - 229501 + 11338 ], [ "2021-09-20T01:35:53", - 229620 + 11370 ], [ "2021-09-21T17:53:24", - 230158 + 11733 ], [ "2021-09-23T01:37:54", - 230603 + 11962 ], [ "2021-09-24T03:14:34", - 230954 + 12136 ], [ "2021-09-25T16:30:33", - 231453 + 12214 ], [ "2021-09-26T12:23:03", - 231689 + 12243 ], [ "2021-09-27T15:31:39", - 232065 + 12359 ], [ "2021-09-29T01:26:48", - 232536 + 12545 ], [ "2021-09-30T23:05:25", - 233158 + 13011 ], [ "2021-10-01T16:05:31", - 233357 + 13079 ], [ "2021-10-03T21:24:16", - 234042 + 13207 ], [ "2021-10-05T01:32:48", - 234484 + 13399 ], [ "2021-10-06T08:19:33", - 234944 + 13614 ], [ "2021-10-07T19:01:06", - 235378 + 13875 ], [ "2021-10-09T09:11:23", - 235856 + 14135 ], [ "2021-10-10T16:38:57", - 236275 + 14168 ], [ "2021-10-12T12:32:12", - 236847 + 14425 ], [ "2021-10-13T01:33:36", - 237028 + 14507 ], [ "2021-10-16T01:43:12", - 237947 + 14929 ], [ "2021-10-17T12:27:08", - 238374 + 14939 ], [ "2021-10-21T01:43:07", - 239507 + 15652 ], [ "2021-10-24T15:47:49", - 240611 + 16110 ], [ "2021-10-25T04:54:54", - 240788 + 16121 ], [ "2021-10-26T19:08:21", - 241372 + 16495 ], [ "2021-10-27T10:52:46", - 241558 + 16572 ], [ "2021-10-28T01:27:35", - 241786 + 16729 ], [ "2021-10-29T05:01:38", - 242180 + 17032 ], [ "2021-10-30T20:34:54", @@ -5776,819 +5848,819 @@ ], [ "2021-10-31T18:17:07", - 243099 + 17483 ], [ "2021-11-01T01:50:59", - 243250 + 17567 ], [ "2021-11-02T11:56:56", - 243709 + 17938 ], [ "2021-11-03T01:34:05", - 243935 + 18159 ], [ "2021-11-04T22:06:35", - 244885 + 18648 ], [ "2021-11-07T22:48:14", - 245984 + 18944 ], [ "2021-11-08T16:38:12", - 246294 + 19171 ], [ "2021-11-09T14:05:16", - 246648 + 19363 ], [ "2021-11-11T23:43:38", - 247479 + 19880 ], [ "2021-11-12T07:23:40", - 247594 + 19893 ], [ "2021-11-13T03:49:42", - 247916 + 19984 ], [ "2021-11-14T20:38:46", - 248418 + 20035 ], [ "2021-11-15T21:50:19", - 248822 + 20202 ], [ "2021-11-17T13:49:27", - 249518 + 20500 ], [ "2021-11-18T12:57:03", - 250052 + 20993 ], [ "2021-11-19T01:41:21", - 250213 + 21088 ], [ "2021-11-21T18:45:36", - 251223 + 21298 ], [ "2021-11-22T21:51:21", - 251715 + 21471 ], [ "2021-11-24T01:32:35", - 252095 + 21651 ], [ "2021-11-25T01:36:17", - 252405 + 21912 ], [ "2021-11-26T01:28:24", - 252862 + 22006 ], [ "2021-11-27T01:29:49", - 253287 + 22150 ], [ "2021-11-29T19:53:22", - 254166 + 22344 ], [ "2021-12-01T21:53:10", - 255122 + 23000 ], [ "2021-12-02T22:38:42", - 255603 + 23134 ], [ "2021-12-03T07:25:47", - 255723 + 23149 ], [ "2021-12-04T10:20:40", - 256159 + 23337 ], [ "2021-12-05T01:37:50", - 256346 + 23344 ], [ "2021-12-06T01:34:54", - 256643 + 23358 ], [ "2021-12-07T19:17:16", - 257300 + 23887 ], [ "2021-12-08T11:50:21", - 257529 + 24000 ], [ "2021-12-09T08:24:35", - 257905 + 24246 ], [ "2021-12-11T10:08:27", - 258701 + 24625 ], [ "2021-12-12T01:37:49", - 258913 + 24649 ], [ "2021-12-14T01:36:23", - 259582 + 24778 ], [ "2021-12-15T01:38:21", - 259907 + 24878 ], [ "2021-12-16T01:40:15", - 260363 + 25005 ], [ "2021-12-17T01:41:18", - 260772 + 25138 ], [ "2021-12-18T12:07:04", - 261008 + 25227 ], [ "2021-12-21T13:52:15", - 261272 + 25344 ], [ "2021-12-23T13:53:28", - 261541 + 25473 ], [ "2021-12-26T01:43:59", - 261725 + 25516 ], [ "2021-12-29T20:36:25", - 261969 + 25595 ], [ "2021-12-31T01:38:18", - 262062 + 25637 ], [ "2022-01-01T01:37:58", - 262130 + 25649 ], [ "2022-01-03T22:58:05", - 262439 + 25700 ], [ "2022-01-09T14:02:41", - 264825 + 26157 ], [ "2022-01-11T01:36:44", - 265418 + 26368 ], [ "2022-01-12T01:35:34", - 265881 + 26686 ], [ "2022-01-13T09:24:45", - 266544 + 27123 ], [ "2022-01-14T01:38:08", - 266932 + 27381 ], [ "2022-01-15T11:07:48", - 267448 + 27898 ], [ "2022-01-16T01:40:08", - 267625 + 27932 ], [ "2022-01-17T12:08:17", - 268087 + 28208 ], [ "2022-01-18T04:25:59", - 268384 + 28523 ], [ "2022-01-22T22:01:45", - 270480 + 31809 ], [ "2022-01-23T19:48:17", - 270760 + 31874 ], [ "2022-01-24T20:09:52", - 271262 + 32914 ], [ "2022-01-25T07:19:01", - 271425 + 32996 ], [ "2022-01-26T01:45:09", - 271750 + 33612 ], [ "2022-01-28T01:33:25", - 272740 + 34456 ], [ "2022-01-29T20:09:19", - 273447 + 34766 ], [ "2022-01-30T17:15:32", - 273835 + 34865 ], [ "2022-01-31T13:01:19", - 274257 + 35016 ], [ "2022-02-01T07:00:15", - 274626 + 35142 ], [ "2022-02-02T23:09:44", - 275454 + 35493 ], [ "2022-02-03T10:37:04", - 275710 + 35591 ], [ "2022-02-05T23:23:53", - 276794 + 36074 ], [ "2022-02-06T17:27:14", - 277064 + 36206 ], [ "2022-02-07T07:41:03", - 277249 + 36295 ], [ "2022-02-09T12:02:49", - 278691 + 37200 ], [ "2022-02-10T01:38:28", - 279139 + 37479 ], [ "2022-02-13T17:21:12", - 280735 + 38680 ], [ "2022-02-14T01:37:05", - 280841 + 38700 ], [ "2022-02-16T01:41:49", - 281922 + 39534 ], [ "2022-02-18T21:34:22", - 283629 + 40938 ], [ "2022-02-20T20:39:40", - 284258 + 41222 ], [ "2022-02-21T21:26:40", - 284818 + 41770 ], [ "2022-02-25T15:39:13", - 286982 + 43418 ], [ "2022-02-27T01:44:50", - 287824 + 43584 ], [ "2022-02-28T01:51:49", - 288123 + 43717 ], [ "2022-03-02T23:33:51", - 289309 + 44349 ], [ "2022-03-03T01:50:14", - 289312 + 44356 ], [ "2022-03-04T05:18:37", - 289481 + 44438 ], [ "2022-03-06T01:44:30", - 289646 + 44534 ], [ "2022-03-08T11:13:31", - 289901 + 44738 ], [ "2022-03-09T07:35:11", - 290009 + 44801 ], [ "2022-03-10T01:51:49", - 290174 + 44888 ], [ "2022-03-11T01:51:30", - 290325 + 44973 ], [ "2022-03-12T01:42:04", - 290485 + 45034 ], [ "2022-03-13T19:08:51", - 290502 + 45067 ], [ "2022-03-14T15:10:17", - 290587 + 45156 ], [ "2022-03-15T01:49:51", - 290662 + 45221 ], [ "2022-03-16T01:45:07", - 290855 + 45351 ], [ "2022-03-17T12:36:48", - 291030 + 45464 ], [ "2022-03-19T16:59:24", - 291267 + 45717 ], [ "2022-03-20T11:59:05", - 291274 + 45731 ], [ "2022-03-21T01:44:24", - 291280 + 45748 ], [ "2022-03-22T01:55:14", - 291460 + 45875 ], [ "2022-03-23T01:55:28", - 291599 + 45961 ], [ "2022-03-24T01:48:26", - 291690 + 46087 ], [ "2022-03-26T22:36:41", - 291986 + 46328 ], [ "2022-03-27T20:21:20", - 292016 + 46359 ], [ "2022-03-30T01:54:07", - 292318 + 46690 ], [ "2022-03-31T19:42:14", - 292625 + 46835 ], [ "2022-04-01T15:16:50", - 292749 + 46931 ], [ "2022-04-02T01:51:52", - 292786 + 46980 ], [ "2022-04-04T03:28:40", - 292815 + 47046 ], [ "2022-04-06T04:08:13", - 293210 + 47283 ], [ "2022-04-07T01:53:15", - 293383 + 47424 ], [ "2022-04-09T01:50:38", - 293609 + 47772 ], [ "2022-04-10T14:05:52", - 293623 + 47830 ], [ "2022-04-11T17:59:19", - 293759 + 47969 ], [ "2022-04-18T19:21:22", - 294299 + 48966 ], [ "2022-04-22T17:35:15", - 294738 + 49871 ], [ "2022-04-23T08:58:43", - 294755 + 49985 ], [ "2022-04-24T16:22:52", - 294820 + 50018 ], [ "2022-04-26T12:16:27", - 295015 + 50375 ], [ "2022-04-28T02:47:35", - 295137 + 50724 ], [ "2022-04-29T02:28:21", - 295256 + 50937 ], [ "2022-04-30T15:55:37", - 295406 + 51218 ], [ "2022-05-02T02:22:46", - 295446 + 51337 ], [ "2022-05-03T15:10:47", - 295740 + 51662 ], [ "2022-05-04T02:21:38", - 295869 + 51769 ], [ "2022-05-05T02:29:20", - 296012 + 51960 ], [ "2022-05-06T01:57:12", - 296249 + 52113 ], [ "2022-05-07T15:43:47", - 296483 + 52293 ], [ "2022-05-08T09:22:07", - 296513 + 52328 ], [ "2022-05-11T18:46:39", - 297116 + 53023 ], [ "2022-05-14T10:19:10", - 297323 + 53463 ], [ "2022-05-15T18:35:14", - 297342 + 53501 ], [ "2022-05-17T02:16:25", - 297488 + 53792 ], [ "2022-05-20T02:14:29", - 297875 + 54481 ], [ "2022-05-21T01:55:42", - 298000 + 54619 ], [ "2022-05-22T02:10:42", - 298005 + 54660 ], [ "2022-05-24T11:16:46", - 298188 + 55034 ], [ "2022-05-25T02:18:32", - 298266 + 55215 ], [ "2022-05-27T02:15:18", - 298474 + 55559 ], [ "2022-05-28T02:22:34", - 298601 + 55715 ], [ "2022-05-30T02:21:03", - 298674 + 55754 ], [ "2022-05-31T19:33:59", - 299006 + 56073 ], [ "2022-06-01T02:31:42", - 299025 + 56154 ], [ "2022-06-02T02:27:43", - 299160 + 56403 ], [ "2022-06-03T01:55:13", - 299284 + 56520 ], [ "2022-06-08T20:16:03", - 299785 + 57277 ], [ "2022-06-09T13:28:16", - 299871 + 57447 ], [ "2022-06-10T02:21:45", - 299925 + 57566 ], [ "2022-06-11T02:20:43", - 300025 + 57703 ], [ "2022-06-12T13:23:39", - 300033 + 57745 ], [ "2022-06-14T02:30:00", - 300212 + 58026 ], [ "2022-06-15T20:20:02", - 300461 + 58406 ], [ "2022-06-17T02:17:40", - 300644 + 58664 ], [ "2022-06-19T07:40:43", - 300791 + 58809 ], [ "2022-06-22T23:37:06", - 301272 + 59232 ], [ "2022-06-23T09:06:53", - 301295 + 59295 ], [ "2022-06-24T02:16:36", - 301475 + 59431 ], [ "2022-06-25T02:27:04", - 301636 + 59587 ], [ "2022-06-26T16:16:05", - 301651 + 59661 ], [ "2022-09-10T23:57:56", - 311287 + 70406 ], [ "2022-09-11T17:27:20", - 311321 + 70521 ], [ "2022-09-12T17:31:29", - 311538 + 70826 ], [ "2022-09-15T12:40:02", - 312024 + 71657 ], [ "2022-09-16T01:11:41", - 312105 + 71784 ], [ "2022-09-17T01:12:07", - 312239 + 71937 ], [ "2022-09-19T22:06:52", - 312455 + 72190 ], [ "2022-09-20T01:15:00", - 312479 + 72263 ], [ "2022-09-21T18:40:27", - 312788 + 72782 ], [ "2022-09-22T16:43:34", - 312969 + 73026 ], [ "2022-09-25T01:14:04", - 313330 + 73323 ], [ "2022-09-26T01:16:57", - 313354 + 73404 ], [ "2022-09-27T20:49:14", - 313859 + 73940 ], [ "2022-09-30T01:39:04", - 314291 + 74727 ], [ "2022-10-01T17:39:25", - 314475 + 74973 ], [ "2022-10-02T12:03:53", - 314511 + 75025 ], [ "2022-10-03T08:03:32", - 314543 + 75119 ], [ "2022-10-04T01:20:50", - 314721 + 75517 ], [ "2022-10-05T01:21:27", - 314946 + 75849 ], [ "2022-10-08T23:24:13", - 315595 + 76792 ], [ "2022-10-10T01:35:49", - 315606 + 76850 ], [ "2022-10-11T01:16:06", - 315727 + 76999 ], [ "2022-10-12T19:05:48", - 316027 + 77468 ], [ "2022-10-13T01:19:16", - 316074 + 77579 ], [ "2022-10-14T01:30:33", - 316298 + 77869 ], [ "2022-10-15T01:22:21", - 316462 + 78082 ], [ "2022-10-16T21:43:31", - 316491 + 78217 ], [ "2022-10-18T06:25:58", - 316688 + 78557 ], [ "2022-10-22T11:41:20", - 317453 + 79788 ], [ "2022-10-23T01:13:56", - 317460 + 79825 ], [ "2022-10-24T20:11:55", - 317649 + 80244 ], [ "2022-10-25T00:08:55", - 317661 + 80265 ], [ "2022-10-26T01:07:23", - 317883 + 80659 ], [ "2022-10-27T01:11:40", - 318131 + 81062 ], [ "2022-10-29T01:02:52", - 318562 + 81776 ], [ "2022-10-30T20:09:57", - 318598 + 82058 ], [ "2022-10-31T22:27:03", - 318785 + 82398 ], [ "2022-11-01T18:25:59", - 318976 + 82705 ], [ "2022-11-03T01:11:15", - 319389 + 83238 ], [ "2022-11-04T11:35:34", - 319650 + 83720 ], [ "2022-11-05T07:41:24", - 319748 + 83964 ], [ "2022-11-06T11:06:34", - 319766 + 84133 ], [ "2022-11-07T19:40:53", - 320073 + 84646 ], [ "2022-11-08T01:06:52", - 320127 + 84744 ], [ "2022-11-11T17:10:50", - 321054 + 86152 ], [ "2022-11-13T20:58:24", - 321118 + 86459 ], [ "2022-11-14T23:48:23", @@ -6596,4205 +6668,4063 @@ ], [ "2022-11-15T07:38:22", - 321357 + 86887 ], [ "2022-11-17T09:11:40", - 321949 + 87693 ], [ "2022-11-19T22:14:34", - 322479 + 88488 ], [ "2022-11-21T23:47:48", - 322826 + 88909 ], [ "2022-11-22T01:14:59", - 322837 + 88929 ], [ "2022-11-23T23:28:30", - 323478 + 89753 ], [ "2022-11-26T01:00:47", - 324294 + 90514 ], [ "2022-11-28T01:02:53", - 324351 + 90823 ], [ "2022-12-07T07:19:55", - 328159 + 93754 ], [ "2022-12-18T20:23:59", - 332613 + 96858 ], [ "2022-12-19T18:26:59", - 332974 + 97082 ], [ "2022-12-20T16:08:58", - 333267 + 97258 ], [ "2022-12-21T23:23:24", - 333886 + 97555 ], [ "2022-12-22T22:59:06", - 334190 + 97790 ], [ "2022-12-24T20:01:35", - 334463 + 98101 ], [ "2022-12-25T21:13:52", - 334507 + 98252 ], [ "2022-12-26T19:56:00", - 334588 + 98392 ], [ "2022-12-27T23:56:39", - 334910 + 98568 ], [ "2022-12-29T20:55:31", - 335266 + 98941 ], [ "2022-12-30T20:56:36", - 335538 + 99113 ], [ "2022-12-31T08:10:29", - 335631 + 99178 ], [ "2023-01-01T23:58:03", - 335719 + 99497 ], [ "2023-01-02T23:32:43", - 335910 + 99760 ], [ "2023-01-04T01:14:45", - 336346 + 100155 ], [ "2023-01-05T00:40:47", - 336755 + 100398 ], [ "2023-01-06T15:27:19", - 337313 + 100872 ], [ "2023-01-07T23:05:20", - 337598 + 101154 ], [ "2023-01-09T23:13:18", - 338154 + 101705 ], [ "2023-01-10T22:19:22", - 338629 + 102044 ], [ "2023-01-11T20:38:34", - 339167 + 102460 ], [ "2023-01-12T19:14:41", - 339690 + 102748 ], [ "2023-01-14T22:19:17", - 340259 + 103456 ], [ "2023-01-15T05:54:49", - 340274 + 103544 ], [ "2023-01-16T01:07:20", - 340305 + 103714 ], [ "2023-01-18T01:10:41", - 341085 + 104341 ], [ "2023-01-19T01:11:47", - 341515 + 104819 ], [ "2023-01-20T01:07:56", - 341924 + 105202 ], [ "2023-01-21T01:11:30", - 342225 + 105520 ], [ "2023-01-22T23:52:22", - 342315 + 105914 ], [ "2023-01-24T01:13:09", - 342627 + 106297 ], [ "2023-01-25T01:09:15", - 342966 + 106667 ], [ "2023-01-27T01:08:47", - 343553 + 107447 ], [ "2023-01-28T23:00:24", - 343959 + 108019 ], [ "2023-01-29T11:12:53", - 344006 + 108123 ], [ "2023-01-31T09:09:55", - 344437 + 108725 ], [ "2023-02-04T01:08:11", - 345978 + 110423 ], [ "2023-02-05T19:16:16", - 346073 + 110742 ], [ "2023-02-06T01:06:21", - 346105 + 110810 ], [ "2023-02-07T01:06:44", - 346484 + 111141 ], [ "2023-02-08T19:33:17", - 347112 + 111868 ], [ "2023-02-16T01:07:41", - 349110 + 114610 ], [ "2023-02-17T20:09:45", - 349566 + 115446 ], [ "2023-02-19T16:48:31", - 349703 + 115886 ], [ "2023-02-22T01:09:24", - 350487 + 116680 ], [ "2023-02-25T18:11:10", - 351764 + 117957 ], [ "2023-02-26T01:20:44", - 351789 + 118021 ], [ "2023-02-27T01:05:31", - 351858 + 118213 ], [ "2023-02-28T01:12:07", - 352181 + 118560 ], [ "2023-03-01T01:11:53", - 352565 + 118883 ], [ "2023-03-02T01:11:37", - 352976 + 119268 ], [ "2023-03-04T19:06:27", - 353709 + 120177 ], [ "2023-03-05T21:22:00", - 353795 + 120395 ], [ "2023-03-06T18:58:36", - 354287 + 120908 ], [ "2023-03-07T22:04:26", - 354887 + 121462 ], [ "2023-03-11T18:55:05", - 356945 + 124545 ], [ "2023-03-13T01:08:17", - 357087 + 124894 ], [ "2023-03-16T01:14:43", - 359166 + 126938 ], [ "2023-03-25T20:41:27", - 364426 + 131898 ], [ "2023-03-26T18:35:58", - 364559 + 132144 ], [ "2023-03-27T19:04:51", - 365247 + 132637 ], [ "2023-03-28T14:20:40", - 365764 + 133238 ], [ "2023-03-29T01:10:08", - 366426 + 133495 ], [ "2023-03-30T01:06:23", - 367117 + 134045 ], [ "2023-04-01T16:38:16", - 369004 + 135290 ], [ "2023-04-02T18:16:54", - 369088 + 135531 ], [ "2023-04-03T20:17:29", - 369457 - ] - ], - "go": [ - [ - "2021-07-26T20:10:04", - 2256 + 135954 ], [ - "2021-07-28T01:29:28", - 2306 + "2023-04-04T01:00:44", + 136154 ], [ - "2021-07-29T01:25:08", - 2326 + "2023-04-05T01:02:44", + 136629 ], [ - "2021-07-30T02:45:47", - 2334 + "2023-04-06T01:02:10", + 137214 ], [ - "2021-07-31T02:55:52", - 2347 + "2023-04-10T19:39:37", + 138314 ], [ - "2021-08-01T01:34:33", - 2349 + "2023-04-11T18:04:56", + 138672 ], [ - "2021-08-02T01:25:51", - 2351 + "2023-04-12T19:58:02", + 139001 ], [ - "2021-08-03T01:34:04", - 2381 + "2023-04-15T13:28:28", + 139970 ], [ - "2021-08-04T01:25:42", - 2418 + "2023-04-16T20:56:34", + 140155 ], [ - "2021-08-05T13:16:40", - 2433 + "2023-04-20T09:00:09", + 141385 ], [ - "2021-08-06T10:08:44", - 2438 + "2023-04-22T18:08:18", + 142096 ], [ - "2021-08-07T01:23:20", - 2455 + "2023-04-23T08:46:30", + 142193 ], [ - "2021-08-08T17:46:20", - 2463 + "2023-04-24T10:35:05", + 142419 ], [ - "2021-08-09T12:57:30", - 2471 + "2023-04-25T13:22:38", + 142809 ], [ - "2021-08-10T18:15:58", - 2504 + "2023-04-26T01:05:21", + 142999 ], [ - "2021-08-11T19:45:43", - 2541 + "2023-04-29T09:13:18", + 144153 ], [ - "2021-08-12T16:45:06", - 2650 + "2023-04-30T23:37:21", + 144472 ], [ - "2021-08-13T01:26:41", - 2695 + "2023-05-01T12:30:40", + 144553 ], [ - "2021-08-14T08:26:41", - 2761 + "2023-05-02T01:03:19", + 144857 ], [ - "2021-08-15T21:37:16", - 2825 + "2023-05-12T22:08:47", + 147803 ], [ - "2021-08-17T01:22:18", - 2861 + "2023-05-13T20:23:06", + 147866 ], [ - "2021-08-18T01:24:15", - 2886 + "2023-05-14T19:54:23", + 147933 ], [ - "2021-08-19T22:44:18", - 2907 + "2023-05-17T23:06:02", + 149017 ], [ - "2021-08-20T16:03:59", - 2922 + "2023-05-18T18:05:13", + 149270 ], [ - "2021-08-21T12:36:04", - 2934 + "2023-05-19T18:27:46", + 149612 ], [ - "2021-08-22T01:21:13", - 2935 + "2023-05-20T06:58:27", + 149753 ], [ - "2021-08-23T20:34:23", - 2957 + "2023-05-21T17:54:05", + 149917 ], [ - "2021-08-24T21:32:49", - 2972 + "2023-05-22T19:05:24", + 150249 ], [ - "2021-08-28T19:11:50", - 3059 + "2023-05-23T01:07:57", + 150318 ], [ - "2021-08-29T12:02:14", - 3074 + "2023-05-24T01:14:32", + 150695 ], [ - "2021-08-31T03:01:11", - 3125 + "2023-05-26T01:11:00", + 151632 ], [ - "2021-09-01T01:34:30", - 3150 + "2023-05-27T17:04:12", + 152034 ], [ - "2021-09-02T11:26:37", - 3190 + "2023-05-28T17:03:24", + 152191 ], [ - "2021-09-03T01:30:31", - 3210 + "2023-05-29T11:13:08", + 152305 ], [ - "2021-09-04T13:35:27", - 3231 + "2023-05-31T23:48:39", + 153372 ], [ - "2021-09-06T01:30:54", - 3239 + "2023-06-01T01:25:18", + 153427 ], [ - "2021-09-07T01:30:29", - 3248 + "2023-06-02T01:10:33", + 153773 ], [ - "2021-09-12T12:45:46", - 3390 + "2023-06-03T09:59:50", + 154155 ], [ - "2021-09-15T03:11:38", - 3532 + "2023-06-04T01:13:43", + 154230 ], [ - "2021-09-18T22:10:09", - 3603 + "2023-06-05T01:08:28", + 154337 ], [ - "2021-09-19T15:32:31", - 3609 + "2023-06-07T01:10:00", + 155093 ], [ - "2021-09-20T01:35:53", - 3613 + "2023-06-08T05:19:18", + 155542 ], [ - "2021-09-21T17:53:24", - 3658 + "2023-06-11T18:48:09", + 156562 ], [ - "2021-09-23T01:37:54", - 3695 + "2023-06-12T01:16:15", + 156602 ], [ - "2021-09-24T03:14:34", - 3727 + "2023-06-13T01:11:33", + 157113 ], [ - "2021-09-25T16:30:33", - 3801 + "2023-06-17T01:09:24", + 158705 ], [ - "2021-09-26T12:23:03", - 3806 + "2023-06-21T05:26:13", + 159755 ], [ - "2021-09-27T15:31:39", - 3836 + "2023-06-23T01:12:21", + 160416 ], [ - "2021-09-29T01:26:48", - 3879 + "2023-06-24T01:13:03", + 160693 ], [ - "2021-09-30T23:05:25", - 3918 + "2023-06-25T01:19:08", + 160764 ], [ - "2021-10-01T16:05:31", - 3928 + "2023-07-02T01:17:57", + 162559 ], [ - "2021-10-03T21:24:16", - 3953 + "2023-07-05T04:19:03", + 163036 ], [ - "2021-10-05T01:32:48", - 3988 + "2023-07-06T01:13:59", + 163294 ], [ - "2021-10-06T08:19:33", - 4014 + "2023-07-07T01:22:59", + 163534 ], [ - "2021-10-07T19:01:06", - 4063 + "2023-07-09T01:17:28", + 163815 ], [ - "2021-10-09T09:11:23", - 4086 + "2023-07-10T12:35:57", + 163986 ], [ - "2021-10-10T16:38:57", - 4122 + "2023-07-11T18:04:48", + 164354 ], [ - "2021-10-12T12:32:12", - 4156 + "2023-07-13T01:16:23", + 164673 ], [ - "2021-10-13T01:33:36", - 4168 + "2023-07-14T18:55:34", + 165267 ], [ - "2021-10-16T01:43:12", - 4226 + "2023-07-15T14:49:24", + 165378 ], [ - "2021-10-17T12:27:08", - 4246 + "2023-07-17T01:18:56", + 165480 ], [ - "2021-10-21T01:43:07", - 4318 + "2023-07-23T01:13:49", + 167209 ], [ - "2021-10-24T15:47:49", - 4391 + "2023-07-24T12:19:15", + 167343 ], [ - "2021-10-25T04:54:54", - 4395 + "2023-07-25T10:15:45", + 167661 ], [ - "2021-10-26T19:08:21", - 4447 + "2023-07-26T21:02:52", + 168183 ], [ - "2021-10-27T10:52:46", - 4477 + "2023-08-03T19:41:39", + 170524 ], [ - "2021-10-28T01:27:35", - 4505 + "2023-08-06T01:17:07", + 171142 ], [ - "2021-10-29T05:01:38", - 4543 + "2023-08-07T14:09:58", + 171488 ], [ - "2021-10-30T20:34:54", - 46 + "2023-08-09T21:27:06", + 172272 ], [ - "2021-10-31T18:17:07", - 4665 + "2023-08-10T00:37:45", + 172284 ], [ - "2021-11-01T01:50:59", - 4686 + "2023-08-11T00:59:39", + 172745 ], [ - "2021-11-02T11:56:56", - 4759 + "2023-08-14T01:07:10", + 173125 ], [ - "2021-11-03T01:34:05", - 4783 + "2023-08-20T10:19:30", + 174725 ], [ - "2021-11-04T22:06:35", - 4838 + "2023-08-21T01:02:38", + 174762 ], [ - "2021-11-07T22:48:14", - 4900 + "2023-08-22T05:14:32", + 175139 ], [ - "2021-11-08T16:38:12", - 4917 + "2023-08-23T01:09:12", + 175428 ], [ - "2021-11-09T14:05:16", - 4948 + "2023-08-24T08:23:46", + 175819 ], [ - "2021-11-11T23:43:38", - 5042 + "2023-08-25T01:09:33", + 176166 ], [ - "2021-11-12T07:23:40", - 5051 + "2023-08-26T15:48:29", + 176451 ], [ - "2021-11-13T03:49:42", - 5094 + "2023-09-01T01:00:53", + 177929 ], [ - "2021-11-14T20:38:46", - 5116 + "2023-09-02T06:53:40", + 178334 ], [ - "2021-11-15T21:50:19", - 5143 + "2023-09-03T17:23:10", + 178497 ], [ - "2021-11-17T13:49:27", - 5192 + "2023-09-04T01:14:42", + 178537 ], [ - "2021-11-18T12:57:03", - 5236 + "2023-09-06T09:29:05", + 179234 ], [ - "2021-11-19T01:41:21", - 5258 + "2023-09-08T01:01:21", + 179770 ], [ - "2021-11-21T18:45:36", - 5305 + "2023-09-17T18:42:04", + 181661 ], [ - "2021-11-22T21:51:21", - 5370 + "2023-09-18T07:24:56", + 181709 ], [ - "2021-11-24T01:32:35", - 5466 + "2023-09-19T01:04:12", + 181944 ], [ - "2021-11-25T01:36:17", - 5487 + "2023-09-20T15:31:08", + 182291 ], [ - "2021-11-26T01:28:24", - 5499 + "2023-09-21T01:10:04", + 182430 ], [ - "2021-11-27T01:29:49", - 5523 + "2023-09-22T16:54:09", + 182735 ], [ - "2021-11-29T19:53:22", - 5558 + "2023-09-24T01:09:47", + 182985 ], [ - "2021-12-01T21:53:10", - 5652 + "2023-09-26T01:03:52", + 183298 ], [ - "2021-12-02T22:38:42", - 5685 + "2023-09-28T01:03:35", + 183855 ], [ - "2021-12-03T07:25:47", - 5688 + "2023-10-02T10:16:34", + 184464 ], [ - "2021-12-04T10:20:40", - 5717 + "2023-10-11T01:02:27", + 186619 ], [ - "2021-12-05T01:37:50", - 5729 + "2023-10-12T07:12:13", + 187025 ], [ - "2021-12-06T01:34:54", - 5737 + "2023-10-15T18:35:06", + 188093 ], [ - "2021-12-07T19:17:16", - 5837 + "2023-10-16T01:12:02", + 188129 ], [ - "2021-12-08T11:50:21", - 5847 + "2023-10-17T01:19:48", + 188570 ], [ - "2021-12-09T08:24:35", - 5899 + "2023-10-18T09:54:25", + 189073 ], [ - "2021-12-11T10:08:27", - 5954 + "2023-10-19T05:13:12", + 189499 ], [ - "2021-12-12T01:37:49", - 5968 + "2023-10-20T21:26:06", + 190092 ], [ - "2021-12-14T01:36:23", - 6035 + "2023-10-21T07:20:54", + 190135 ], [ - "2021-12-15T01:38:21", - 6088 + "2023-10-22T21:40:43", + 190217 ], [ - "2021-12-16T01:40:15", - 6142 + "2023-10-24T01:08:57", + 190552 ], [ - "2021-12-17T01:41:18", - 6201 + "2023-10-25T03:48:19", + 190946 ], [ - "2021-12-18T12:07:04", - 6267 + "2023-10-28T17:16:00", + 191829 ], [ - "2021-12-21T13:52:15", - 6355 + "2023-10-29T10:04:35", + 191875 ], [ - "2021-12-23T13:53:28", - 6425 + "2023-10-30T01:06:23", + 191978 ], [ - "2021-12-26T01:43:59", - 6461 + "2023-10-31T01:15:37", + 192318 ], [ - "2021-12-29T20:36:25", - 6516 + "2023-11-01T12:58:49", + 192685 ], [ - "2021-12-31T01:38:18", - 6519 + "2023-11-03T22:34:05", + 193345 ], [ - "2022-01-01T01:37:58", - 6524 + "2023-11-04T17:14:00", + 193411 ], [ - "2022-01-03T22:58:05", - 6579 + "2023-11-05T18:48:33", + 193518 ], [ - "2022-01-09T14:02:41", - 6737 + "2023-11-06T22:30:41", + 193808 ], [ - "2022-01-11T01:36:44", - 6816 + "2023-11-07T22:42:00", + 194086 ], [ - "2022-01-12T01:35:34", - 6846 + "2023-11-08T22:22:32", + 194440 ], [ - "2022-01-13T09:24:45", - 6882 + "2023-11-09T22:42:59", + 194689 ], [ - "2022-01-14T01:38:08", - 6905 + "2023-11-10T22:40:09", + 195027 ], [ - "2022-01-15T11:07:48", - 6948 - ], + "2023-11-11T22:37:19", + 195090 + ] + ], + "dotnet": [ [ - "2022-01-16T01:40:08", - 6958 + "2021-07-26T20:10:04", + 215546 ], [ - "2022-01-17T12:08:17", - 7025 + "2021-07-28T01:29:28", + 215612 ], [ - "2022-01-18T04:25:59", - 7042 + "2021-07-29T01:25:08", + 215655 ], [ - "2022-01-22T22:01:45", - 7218 + "2021-07-30T02:45:47", + 215693 ], [ - "2022-01-23T19:48:17", - 7246 + "2021-07-31T02:55:52", + 215736 ], [ - "2022-01-24T20:09:52", - 7307 + "2021-08-01T01:34:33", + 215742 ], [ - "2022-01-25T07:19:01", - 7322 + "2021-08-02T01:25:51", + 215755 ], [ - "2022-01-26T01:45:09", - 7372 + "2021-08-03T01:34:04", + 215956 ], [ - "2022-01-28T01:33:25", - 7447 + "2021-08-04T01:25:42", + 216028 ], [ - "2022-01-29T20:09:19", - 7485 + "2021-08-05T13:16:40", + 216193 ], [ - "2022-01-30T17:15:32", - 7495 + "2021-08-06T10:08:44", + 216223 ], [ - "2022-01-31T13:01:19", - 7522 + "2021-08-07T01:23:20", + 216273 ], [ - "2022-02-01T07:00:15", - 7542 + "2021-08-08T17:46:20", + 216280 ], [ - "2022-02-02T23:09:44", - 7616 + "2021-08-09T12:57:30", + 216310 ], [ - "2022-02-03T10:37:04", - 7650 + "2021-08-10T18:15:58", + 216381 ], [ - "2022-02-05T23:23:53", - 7723 + "2021-08-11T19:45:43", + 216760 ], [ - "2022-02-06T17:27:14", - 7731 + "2021-08-12T16:45:06", + 217047 ], [ - "2022-02-07T07:41:03", - 7732 + "2021-08-13T01:26:41", + 217189 ], [ - "2022-02-09T12:02:49", - 7818 + "2021-08-14T08:26:41", + 217638 ], [ - "2022-02-10T01:38:28", - 7844 + "2021-08-15T21:37:16", + 218095 ], [ - "2022-02-13T17:21:12", - 7929 + "2021-08-17T01:22:18", + 218479 ], [ - "2022-02-14T01:37:05", - 7933 + "2021-08-18T01:24:15", + 218782 ], [ - "2022-02-16T01:41:49", - 8043 + "2021-08-19T22:44:18", + 219393 ], [ - "2022-02-18T21:34:22", - 8152 + "2021-08-20T16:03:59", + 219728 ], [ - "2022-02-20T20:39:40", - 8194 + "2021-08-21T12:36:04", + 220011 ], [ - "2022-02-21T21:26:40", - 8226 + "2021-08-22T01:21:13", + 220213 ], [ - "2022-02-25T15:39:13", - 8403 + "2021-08-23T20:34:23", + 220907 ], [ - "2022-02-27T01:44:50", - 8434 + "2021-08-24T21:32:49", + 221455 ], [ - "2022-02-28T01:51:49", - 8443 + "2021-08-28T19:11:50", + 222749 ], [ - "2022-03-02T23:33:51", - 8624 + "2021-08-29T12:02:14", + 222972 ], [ - "2022-03-03T01:50:14", - 8633 + "2021-08-31T03:01:11", + 223499 ], [ - "2022-03-04T05:18:37", - 8653 + "2021-09-01T01:34:30", + 223803 ], [ - "2022-03-06T01:44:30", - 8666 + "2021-09-02T11:26:37", + 224324 ], [ - "2022-03-08T11:13:31", - 8696 + "2021-09-03T01:30:31", + 224502 ], [ - "2022-03-09T07:35:11", - 8703 + "2021-09-04T13:35:27", + 224936 ], [ - "2022-03-10T01:51:49", - 8712 + "2021-09-06T01:30:54", + 225388 ], [ - "2022-03-11T01:51:30", - 8722 + "2021-09-07T01:30:29", + 225689 ], [ - "2022-03-12T01:42:04", - 8740 + "2021-09-12T12:45:46", + 227344 ], [ - "2022-03-13T19:08:51", - 8742 + "2021-09-15T03:11:38", + 228140 ], [ - "2022-03-14T15:10:17", - 8774 + "2021-09-18T22:10:09", + 229296 ], [ - "2022-03-15T01:49:51", - 8819 + "2021-09-19T15:32:31", + 229501 ], [ - "2022-03-16T01:45:07", - 8832 + "2021-09-20T01:35:53", + 229620 ], [ - "2022-03-17T12:36:48", - 8863 + "2021-09-21T17:53:24", + 230158 ], [ - "2022-03-19T16:59:24", - 8907 + "2021-09-23T01:37:54", + 230603 ], [ - "2022-03-20T11:59:05", - 8907 + "2021-09-24T03:14:34", + 230954 ], [ - "2022-03-21T01:44:24", - 8914 + "2021-09-25T16:30:33", + 231453 ], [ - "2022-03-22T01:55:14", - 8964 + "2021-09-26T12:23:03", + 231689 ], [ - "2022-03-23T01:55:28", - 9001 + "2021-09-27T15:31:39", + 232065 ], [ - "2022-03-24T01:48:26", - 9027 + "2021-09-29T01:26:48", + 232536 ], [ - "2022-03-26T22:36:41", - 9118 + "2021-09-30T23:05:25", + 233158 ], [ - "2022-03-27T20:21:20", - 9129 + "2021-10-01T16:05:31", + 233357 ], [ - "2022-03-30T01:54:07", - 9267 + "2021-10-03T21:24:16", + 234042 ], [ - "2022-03-31T19:42:14", - 9334 + "2021-10-05T01:32:48", + 234484 ], [ - "2022-04-01T15:16:50", - 9369 + "2021-10-06T08:19:33", + 234944 ], [ - "2022-04-02T01:51:52", - 9382 + "2021-10-07T19:01:06", + 235378 ], [ - "2022-04-04T03:28:40", - 9391 + "2021-10-09T09:11:23", + 235856 ], [ - "2022-04-06T04:08:13", - 9529 + "2021-10-10T16:38:57", + 236275 ], [ - "2022-04-07T01:53:15", - 9565 + "2021-10-12T12:32:12", + 236847 ], [ - "2022-04-09T01:50:38", - 9662 + "2021-10-13T01:33:36", + 237028 ], [ - "2022-04-10T14:05:52", - 9665 + "2021-10-16T01:43:12", + 237947 ], [ - "2022-04-11T17:59:19", - 9717 + "2021-10-17T12:27:08", + 238374 ], [ - "2022-04-18T19:21:22", - 9950 + "2021-10-21T01:43:07", + 239507 ], [ - "2022-04-22T17:35:15", - 10090 + "2021-10-24T15:47:49", + 240611 ], [ - "2022-04-23T08:58:43", - 10106 + "2021-10-25T04:54:54", + 240788 ], [ - "2022-04-24T16:22:52", - 10107 + "2021-10-26T19:08:21", + 241372 ], [ - "2022-04-26T12:16:27", - 10179 + "2021-10-27T10:52:46", + 241558 ], [ - "2022-04-28T02:47:35", - 10265 + "2021-10-28T01:27:35", + 241786 ], [ - "2022-04-29T02:28:21", - 10310 + "2021-10-29T05:01:38", + 242180 ], [ - "2022-04-30T15:55:37", - 10371 + "2021-10-30T20:34:54", + 46 ], [ - "2022-05-02T02:22:46", - 10378 + "2021-10-31T18:17:07", + 243099 ], [ - "2022-05-03T15:10:47", - 10405 + "2021-11-01T01:50:59", + 243250 ], [ - "2022-05-04T02:21:38", - 10430 + "2021-11-02T11:56:56", + 243709 ], [ - "2022-05-05T02:29:20", - 10455 + "2021-11-03T01:34:05", + 243935 ], [ - "2022-05-06T01:57:12", - 10481 + "2021-11-04T22:06:35", + 244885 ], [ - "2022-05-07T15:43:47", - 10510 + "2021-11-07T22:48:14", + 245984 ], [ - "2022-05-08T09:22:07", - 10511 + "2021-11-08T16:38:12", + 246294 ], [ - "2022-05-11T18:46:39", - 10656 + "2021-11-09T14:05:16", + 246648 ], [ - "2022-05-14T10:19:10", - 10769 + "2021-11-11T23:43:38", + 247479 ], [ - "2022-05-15T18:35:14", - 10786 + "2021-11-12T07:23:40", + 247594 ], [ - "2022-05-17T02:16:25", - 10847 + "2021-11-13T03:49:42", + 247916 ], [ - "2022-05-20T02:14:29", - 11010 + "2021-11-14T20:38:46", + 248418 ], [ - "2022-05-21T01:55:42", - 11049 + "2021-11-15T21:50:19", + 248822 ], [ - "2022-05-22T02:10:42", - 11054 + "2021-11-17T13:49:27", + 249518 ], [ - "2022-05-24T11:16:46", - 11146 + "2021-11-18T12:57:03", + 250052 ], [ - "2022-05-25T02:18:32", - 11204 + "2021-11-19T01:41:21", + 250213 ], [ - "2022-05-27T02:15:18", - 11271 + "2021-11-21T18:45:36", + 251223 ], [ - "2022-05-28T02:22:34", - 11293 + "2021-11-22T21:51:21", + 251715 ], [ - "2022-05-30T02:21:03", - 11298 + "2021-11-24T01:32:35", + 252095 ], [ - "2022-05-31T19:33:59", - 11391 + "2021-11-25T01:36:17", + 252405 ], [ - "2022-06-01T02:31:42", - 11419 + "2021-11-26T01:28:24", + 252862 ], [ - "2022-06-02T02:27:43", - 11479 + "2021-11-27T01:29:49", + 253287 ], [ - "2022-06-03T01:55:13", - 11558 + "2021-11-29T19:53:22", + 254166 ], [ - "2022-06-08T20:16:03", - 11715 + "2021-12-01T21:53:10", + 255122 ], [ - "2022-06-09T13:28:16", - 11737 + "2021-12-02T22:38:42", + 255603 ], [ - "2022-06-10T02:21:45", - 11751 + "2021-12-03T07:25:47", + 255723 ], [ - "2022-06-11T02:20:43", - 11768 + "2021-12-04T10:20:40", + 256159 ], [ - "2022-06-12T13:23:39", - 11773 + "2021-12-05T01:37:50", + 256346 ], [ - "2022-06-14T02:30:00", - 11839 + "2021-12-06T01:34:54", + 256643 ], [ - "2022-06-15T20:20:02", - 11867 + "2021-12-07T19:17:16", + 257300 ], [ - "2022-06-17T02:17:40", - 11887 + "2021-12-08T11:50:21", + 257529 ], [ - "2022-06-19T07:40:43", - 11911 + "2021-12-09T08:24:35", + 257905 ], [ - "2022-06-22T23:37:06", - 11956 + "2021-12-11T10:08:27", + 258701 ], [ - "2022-06-23T09:06:53", - 11958 + "2021-12-12T01:37:49", + 258913 ], [ - "2022-06-24T02:16:36", - 11959 + "2021-12-14T01:36:23", + 259582 ], [ - "2022-06-25T02:27:04", - 11964 + "2021-12-15T01:38:21", + 259907 ], [ - "2022-06-26T16:16:05", - 11969 + "2021-12-16T01:40:15", + 260363 ], [ - "2022-09-10T23:57:56", - 13405 + "2021-12-17T01:41:18", + 260772 ], [ - "2022-09-11T17:27:20", - 13405 + "2021-12-18T12:07:04", + 261008 ], [ - "2022-09-12T17:31:29", - 13449 + "2021-12-21T13:52:15", + 261272 ], [ - "2022-09-15T12:40:02", - 13514 + "2021-12-23T13:53:28", + 261541 ], [ - "2022-09-16T01:11:41", - 13533 + "2021-12-26T01:43:59", + 261725 ], [ - "2022-09-17T01:12:07", - 13569 + "2021-12-29T20:36:25", + 261969 ], [ - "2022-09-19T22:06:52", - 13628 + "2021-12-31T01:38:18", + 262062 ], [ - "2022-09-20T01:15:00", - 13641 + "2022-01-01T01:37:58", + 262130 ], [ - "2022-09-21T18:40:27", - 13683 + "2022-01-03T22:58:05", + 262439 ], [ - "2022-09-22T16:43:34", - 13720 + "2022-01-09T14:02:41", + 264825 ], [ - "2022-09-25T01:14:04", - 13743 + "2022-01-11T01:36:44", + 265418 ], [ - "2022-09-26T01:16:57", - 13760 + "2022-01-12T01:35:34", + 265881 ], [ - "2022-09-27T20:49:14", - 13845 + "2022-01-13T09:24:45", + 266544 ], [ - "2022-09-30T01:39:04", - 13877 + "2022-01-14T01:38:08", + 266932 ], [ - "2022-10-01T17:39:25", - 13889 + "2022-01-15T11:07:48", + 267448 ], [ - "2022-10-02T12:03:53", - 13895 + "2022-01-16T01:40:08", + 267625 ], [ - "2022-10-03T08:03:32", - 13925 + "2022-01-17T12:08:17", + 268087 ], [ - "2022-10-04T01:20:50", - 13968 + "2022-01-18T04:25:59", + 268384 ], [ - "2022-10-05T01:21:27", - 13981 + "2022-01-22T22:01:45", + 270480 ], [ - "2022-10-08T23:24:13", - 14066 + "2022-01-23T19:48:17", + 270760 ], [ - "2022-10-10T01:35:49", - 14080 + "2022-01-24T20:09:52", + 271262 ], [ - "2022-10-11T01:16:06", - 14128 + "2022-01-25T07:19:01", + 271425 ], [ - "2022-10-12T19:05:48", - 14168 + "2022-01-26T01:45:09", + 271750 ], [ - "2022-10-13T01:19:16", - 14177 + "2022-01-28T01:33:25", + 272740 ], [ - "2022-10-14T01:30:33", - 14217 + "2022-01-29T20:09:19", + 273447 ], [ - "2022-10-15T01:22:21", - 14241 + "2022-01-30T17:15:32", + 273835 ], [ - "2022-10-16T21:43:31", - 14247 + "2022-01-31T13:01:19", + 274257 ], [ - "2022-10-18T06:25:58", - 14338 + "2022-02-01T07:00:15", + 274626 ], [ - "2022-10-22T11:41:20", - 14450 + "2022-02-02T23:09:44", + 275454 ], [ - "2022-10-23T01:13:56", - 14455 + "2022-02-03T10:37:04", + 275710 ], [ - "2022-10-24T20:11:55", - 14537 + "2022-02-05T23:23:53", + 276794 ], [ - "2022-10-25T00:08:55", - 14542 + "2022-02-06T17:27:14", + 277064 ], [ - "2022-10-26T01:07:23", - 14572 + "2022-02-07T07:41:03", + 277249 ], [ - "2022-10-27T01:11:40", - 14578 + "2022-02-09T12:02:49", + 278691 ], [ - "2022-10-29T01:02:52", - 14609 + "2022-02-10T01:38:28", + 279139 ], [ - "2022-10-30T20:09:57", - 14618 + "2022-02-13T17:21:12", + 280735 ], [ - "2022-10-31T22:27:03", - 14692 + "2022-02-14T01:37:05", + 280841 ], [ - "2022-11-01T18:25:59", - 14713 + "2022-02-16T01:41:49", + 281922 ], [ - "2022-11-03T01:11:15", - 14760 + "2022-02-18T21:34:22", + 283629 ], [ - "2022-11-04T11:35:34", - 14779 + "2022-02-20T20:39:40", + 284258 ], [ - "2022-11-05T07:41:24", - 14793 + "2022-02-21T21:26:40", + 284818 ], [ - "2022-11-06T11:06:34", - 14795 + "2022-02-25T15:39:13", + 286982 ], [ - "2022-11-07T19:40:53", - 14885 + "2022-02-27T01:44:50", + 287824 ], [ - "2022-11-08T01:06:52", - 14886 + "2022-02-28T01:51:49", + 288123 ], [ - "2022-11-11T17:10:50", - 14957 + "2022-03-02T23:33:51", + 289309 ], [ - "2022-11-13T20:58:24", - 14960 + "2022-03-03T01:50:14", + 289312 ], [ - "2022-11-14T23:48:23", - 0 + "2022-03-04T05:18:37", + 289481 ], [ - "2022-11-15T07:38:22", - 15001 + "2022-03-06T01:44:30", + 289646 ], [ - "2022-11-17T09:11:40", - 15030 + "2022-03-08T11:13:31", + 289901 ], [ - "2022-11-19T22:14:34", - 15090 + "2022-03-09T07:35:11", + 290009 ], [ - "2022-11-21T23:47:48", - 15125 + "2022-03-10T01:51:49", + 290174 ], [ - "2022-11-22T01:14:59", - 15144 + "2022-03-11T01:51:30", + 290325 ], [ - "2022-11-23T23:28:30", - 15254 + "2022-03-12T01:42:04", + 290485 ], [ - "2022-11-26T01:00:47", - 15295 + "2022-03-13T19:08:51", + 290502 ], [ - "2022-11-28T01:02:53", - 15307 + "2022-03-14T15:10:17", + 290587 ], [ - "2022-12-07T07:19:55", - 15465 + "2022-03-15T01:49:51", + 290662 ], [ - "2022-12-18T20:23:59", - 15667 + "2022-03-16T01:45:07", + 290855 ], [ - "2022-12-19T18:26:59", - 15740 + "2022-03-17T12:36:48", + 291030 ], [ - "2022-12-20T16:08:58", - 15755 + "2022-03-19T16:59:24", + 291267 ], [ - "2022-12-21T23:23:24", - 15791 + "2022-03-20T11:59:05", + 291274 ], [ - "2022-12-22T22:59:06", - 15815 + "2022-03-21T01:44:24", + 291280 ], [ - "2022-12-24T20:01:35", - 15827 + "2022-03-22T01:55:14", + 291460 ], [ - "2022-12-25T21:13:52", - 15835 + "2022-03-23T01:55:28", + 291599 ], [ - "2022-12-26T19:30:31", - 15864 + "2022-03-24T01:48:26", + 291690 ], [ - "2022-12-27T23:56:39", - 15875 + "2022-03-26T22:36:41", + 291986 ], [ - "2022-12-29T20:55:31", - 15884 + "2022-03-27T20:21:20", + 292016 ], [ - "2022-12-30T20:56:36", - 15885 + "2022-03-30T01:54:07", + 292318 ], [ - "2022-12-31T08:10:29", - 15885 + "2022-03-31T19:42:14", + 292625 ], [ - "2023-01-01T23:58:03", - 15887 + "2022-04-01T15:16:50", + 292749 ], [ - "2023-01-02T23:32:43", - 15907 + "2022-04-02T01:51:52", + 292786 ], [ - "2023-01-04T01:14:45", - 15923 + "2022-04-04T03:28:40", + 292815 ], [ - "2023-01-05T00:40:47", - 15931 + "2022-04-06T04:08:13", + 293210 ], [ - "2023-01-06T15:27:19", - 15954 + "2022-04-07T01:53:15", + 293383 ], [ - "2023-01-07T23:05:20", - 15956 + "2022-04-09T01:50:38", + 293609 ], [ - "2023-01-09T23:13:18", - 15997 + "2022-04-10T14:05:52", + 293623 ], [ - "2023-01-10T22:19:22", - 16006 + "2022-04-11T17:59:19", + 293759 ], [ - "2023-01-11T20:38:34", - 16019 + "2022-04-18T19:21:22", + 294299 ], [ - "2023-01-12T19:14:41", - 16038 + "2022-04-22T17:35:15", + 294738 ], [ - "2023-01-14T22:19:17", - 16062 + "2022-04-23T08:58:43", + 294755 ], [ - "2023-01-15T05:54:49", - 16062 + "2022-04-24T16:22:52", + 294820 ], [ - "2023-01-16T01:07:20", - 16074 + "2022-04-26T12:16:27", + 295015 ], [ - "2023-01-18T01:10:41", - 16134 + "2022-04-28T02:47:35", + 295137 ], [ - "2023-01-19T01:11:47", - 16148 + "2022-04-29T02:28:21", + 295256 ], [ - "2023-01-20T01:07:56", - 16154 + "2022-04-30T15:55:37", + 295406 ], [ - "2023-01-21T01:11:30", - 16163 + "2022-05-02T02:22:46", + 295446 ], [ - "2023-01-22T23:52:22", - 16175 + "2022-05-03T15:10:47", + 295740 ], [ - "2023-01-24T01:13:09", - 16234 + "2022-05-04T02:21:38", + 295869 ], [ - "2023-01-25T01:09:15", - 16248 + "2022-05-05T02:29:20", + 296012 ], [ - "2023-01-27T01:08:47", - 16290 + "2022-05-06T01:57:12", + 296249 ], [ - "2023-01-28T23:00:24", - 16305 + "2022-05-07T15:43:47", + 296483 ], [ - "2023-01-29T11:12:53", - 16306 + "2022-05-08T09:22:07", + 296513 ], [ - "2023-01-31T09:09:55", - 16385 + "2022-05-11T18:46:39", + 297116 ], [ - "2023-02-04T01:08:11", - 16455 + "2022-05-14T10:19:10", + 297323 ], [ - "2023-02-05T19:16:16", - 16462 + "2022-05-15T18:35:14", + 297342 ], [ - "2023-02-06T01:06:21", - 16466 + "2022-05-17T02:16:25", + 297488 ], [ - "2023-02-07T01:06:44", - 16530 + "2022-05-20T02:14:29", + 297875 ], [ - "2023-02-08T19:33:17", - 16580 + "2022-05-21T01:55:42", + 298000 ], [ - "2023-02-16T01:07:41", - 16793 + "2022-05-22T02:10:42", + 298005 ], [ - "2023-02-17T20:09:45", - 16842 + "2022-05-24T11:16:46", + 298188 ], [ - "2023-02-19T16:48:31", - 16854 + "2022-05-25T02:18:32", + 298266 ], [ - "2023-02-22T01:09:24", - 16946 + "2022-05-27T02:15:18", + 298474 ], [ - "2023-02-25T18:11:10", - 17008 + "2022-05-28T02:22:34", + 298601 ], [ - "2023-02-26T01:20:44", - 17012 + "2022-05-30T02:21:03", + 298674 ], [ - "2023-02-27T01:05:31", - 17026 + "2022-05-31T19:33:59", + 299006 ], [ - "2023-02-28T01:12:07", - 17055 + "2022-06-01T02:31:42", + 299025 ], [ - "2023-03-01T01:11:53", - 17067 + "2022-06-02T02:27:43", + 299160 ], [ - "2023-03-02T01:11:37", - 17086 + "2022-06-03T01:55:13", + 299284 ], [ - "2023-03-04T19:06:27", - 17127 + "2022-06-08T20:16:03", + 299785 ], [ - "2023-03-05T21:22:00", - 17169 + "2022-06-09T13:28:16", + 299871 ], [ - "2023-03-06T18:58:36", - 17265 + "2022-06-10T02:21:45", + 299925 ], [ - "2023-03-07T22:04:26", - 17358 + "2022-06-11T02:20:43", + 300025 ], [ - "2023-03-11T18:55:05", - 17607 + "2022-06-12T13:23:39", + 300033 ], [ - "2023-03-13T01:08:17", - 17625 + "2022-06-14T02:30:00", + 300212 ], [ - "2023-03-16T01:14:43", - 17783 + "2022-06-15T20:20:02", + 300461 ], [ - "2023-03-25T20:41:27", - 18059 + "2022-06-17T02:17:40", + 300644 ], [ - "2023-03-26T18:35:58", - 18083 + "2022-06-19T07:40:43", + 300791 ], [ - "2023-03-27T19:04:51", - 18216 + "2022-06-22T23:37:06", + 301272 ], [ - "2023-03-28T14:20:40", - 18286 + "2022-06-23T09:06:53", + 301295 ], [ - "2023-03-29T01:10:08", - 18339 + "2022-06-24T02:16:36", + 301475 ], [ - "2023-03-30T01:06:23", - 18353 + "2022-06-25T02:27:04", + 301636 ], [ - "2023-04-01T16:38:16", - 18417 + "2022-06-26T16:16:05", + 301651 ], [ - "2023-04-02T18:16:54", - 18431 + "2022-09-10T23:57:56", + 311287 ], [ - "2023-04-03T20:17:29", - 18502 - ] - ], - "java": [ + "2022-09-11T17:27:20", + 311321 + ], [ - "2021-07-26T20:10:04", - 14423 + "2022-09-12T17:31:29", + 311538 ], [ - "2021-07-28T01:29:28", - 14674 + "2022-09-15T12:40:02", + 312024 ], [ - "2021-07-29T01:25:08", - 14827 + "2022-09-16T01:11:41", + 312105 ], [ - "2021-07-30T02:45:47", - 14901 + "2022-09-17T01:12:07", + 312239 ], [ - "2021-07-31T02:55:52", - 15018 + "2022-09-19T22:06:52", + 312455 ], [ - "2021-08-01T01:34:33", - 15026 + "2022-09-20T01:15:00", + 312479 ], [ - "2021-08-02T01:25:51", - 15041 + "2022-09-21T18:40:27", + 312788 ], [ - "2021-08-03T01:34:04", - 15327 + "2022-09-22T16:43:34", + 312969 ], [ - "2021-08-04T01:25:42", - 15616 + "2022-09-25T01:14:04", + 313330 ], [ - "2021-08-05T13:16:40", - 15819 + "2022-09-26T01:16:57", + 313354 ], [ - "2021-08-06T10:08:44", - 15850 + "2022-09-27T20:49:14", + 313859 ], [ - "2021-08-07T01:23:20", - 15968 + "2022-09-30T01:39:04", + 314291 ], [ - "2021-08-08T17:46:20", - 15983 + "2022-10-01T17:39:25", + 314475 ], [ - "2021-08-09T12:57:30", - 16048 + "2022-10-02T12:03:53", + 314511 ], [ - "2021-08-10T18:15:58", - 16278 + "2022-10-03T08:03:32", + 314543 ], [ - "2021-08-11T19:45:43", - 16398 + "2022-10-04T01:20:50", + 314721 ], [ - "2021-08-12T16:45:06", - 16605 + "2022-10-05T01:21:27", + 314946 ], [ - "2021-08-13T01:26:41", - 16637 + "2022-10-08T23:24:13", + 315595 ], [ - "2021-08-14T08:26:41", - 16722 + "2022-10-10T01:35:49", + 315606 ], [ - "2021-08-15T21:37:16", - 16741 + "2022-10-11T01:16:06", + 315727 ], [ - "2021-08-17T01:22:18", - 16934 + "2022-10-12T19:05:48", + 316027 ], [ - "2021-08-18T01:24:15", - 17091 + "2022-10-13T01:19:16", + 316074 ], [ - "2021-08-19T22:44:18", - 17368 + "2022-10-14T01:30:33", + 316298 ], [ - "2021-08-20T16:03:59", - 17478 + "2022-10-15T01:22:21", + 316462 ], [ - "2021-08-21T12:36:04", - 17549 + "2022-10-16T21:43:31", + 316491 ], [ - "2021-08-22T01:21:13", - 17554 + "2022-10-18T06:25:58", + 316688 ], [ - "2021-08-23T20:34:23", - 17705 + "2022-10-22T11:41:20", + 317453 ], [ - "2021-08-24T21:32:49", - 17875 + "2022-10-23T01:13:56", + 317460 ], [ - "2021-08-28T19:11:50", - 18941 + "2022-10-24T20:11:55", + 317649 ], [ - "2021-08-29T12:02:14", - 19061 + "2022-10-25T00:08:55", + 317661 ], [ - "2021-08-31T03:01:11", - 19484 + "2022-10-26T01:07:23", + 317883 ], [ - "2021-09-01T01:34:30", - 19735 + "2022-10-27T01:11:40", + 318131 ], [ - "2021-09-02T11:26:37", - 20090 + "2022-10-29T01:02:52", + 318562 ], [ - "2021-09-03T01:30:31", - 20245 + "2022-10-30T20:09:57", + 318598 ], [ - "2021-09-04T13:35:27", - 20444 + "2022-10-31T22:27:03", + 318785 ], [ - "2021-09-06T01:30:54", - 20471 + "2022-11-01T18:25:59", + 318976 ], [ - "2021-09-07T01:30:29", - 20568 + "2022-11-03T01:11:15", + 319389 ], [ - "2021-09-12T12:45:46", - 21838 + "2022-11-04T11:35:34", + 319650 ], [ - "2021-09-15T03:11:38", - 22524 + "2022-11-05T07:41:24", + 319748 ], [ - "2021-09-18T22:10:09", - 23187 + "2022-11-06T11:06:34", + 319766 ], [ - "2021-09-19T15:32:31", - 23239 + "2022-11-07T19:40:53", + 320073 ], [ - "2021-09-20T01:35:53", - 23268 + "2022-11-08T01:06:52", + 320127 ], [ - "2021-09-21T17:53:24", - 23646 + "2022-11-11T17:10:50", + 321054 ], [ - "2021-09-23T01:37:54", - 23982 + "2022-11-13T20:58:24", + 321118 ], [ - "2021-09-24T03:14:34", - 24264 + "2022-11-14T23:48:23", + 0 ], [ - "2021-09-25T16:30:33", - 24721 + "2022-11-15T07:38:22", + 321357 ], [ - "2021-09-26T12:23:03", - 24793 + "2022-11-17T09:11:40", + 321949 ], [ - "2021-09-27T15:31:39", - 24965 + "2022-11-19T22:14:34", + 322479 ], [ - "2021-09-29T01:26:48", - 25344 + "2022-11-21T23:47:48", + 322826 ], [ - "2021-09-30T23:05:25", - 25922 + "2022-11-22T01:14:59", + 322837 ], [ - "2021-10-01T16:05:31", - 26066 + "2022-11-23T23:28:30", + 323478 ], [ - "2021-10-03T21:24:16", - 26305 + "2022-11-26T01:00:47", + 324294 ], [ - "2021-10-05T01:32:48", - 26748 + "2022-11-28T01:02:53", + 324351 ], [ - "2021-10-06T08:19:33", - 27091 + "2022-12-07T07:19:55", + 328159 ], [ - "2021-10-07T19:01:06", - 27679 + "2022-12-18T20:23:59", + 332613 ], [ - "2021-10-09T09:11:23", - 28004 + "2022-12-19T18:26:59", + 332974 ], [ - "2021-10-10T16:38:57", - 28094 + "2022-12-20T16:08:58", + 333267 ], [ - "2021-10-12T12:32:12", - 28538 + "2022-12-21T23:23:24", + 333886 ], [ - "2021-10-13T01:33:36", - 28791 + "2022-12-22T22:59:06", + 334190 ], [ - "2021-10-16T01:43:12", - 29504 + "2022-12-24T20:01:35", + 334463 ], [ - "2021-10-17T12:27:08", - 29598 + "2022-12-25T21:13:52", + 334507 ], [ - "2021-10-21T01:43:07", - 30602 + "2022-12-26T19:56:00", + 334588 ], [ - "2021-10-24T15:47:49", - 31359 + "2022-12-27T23:56:39", + 334910 ], [ - "2021-10-25T04:54:54", - 31407 + "2022-12-29T20:55:31", + 335266 ], [ - "2021-10-26T19:08:21", - 31971 + "2022-12-30T20:56:36", + 335538 ], [ - "2021-10-27T10:52:46", - 32204 + "2022-12-31T08:10:29", + 335631 ], [ - "2021-10-28T01:27:35", - 32503 + "2023-01-01T23:58:03", + 335719 ], [ - "2021-10-29T05:01:38", - 32842 + "2023-01-02T23:32:43", + 335910 ], [ - "2021-10-30T20:34:54", - 49 + "2023-01-04T01:14:45", + 336346 ], [ - "2021-10-31T18:17:07", - 33326 + "2023-01-05T00:40:47", + 336755 ], [ - "2021-11-01T01:50:59", - 33363 + "2023-01-06T15:27:19", + 337313 ], [ - "2021-11-02T11:56:56", - 34013 + "2023-01-07T23:05:20", + 337598 ], [ - "2021-11-03T01:34:05", - 34327 + "2023-01-09T23:13:18", + 338154 ], [ - "2021-11-04T22:06:35", - 34892 + "2023-01-10T22:19:22", + 338629 ], [ - "2021-11-07T22:48:14", - 35316 + "2023-01-11T20:38:34", + 339167 ], [ - "2021-11-08T16:38:12", - 35435 + "2023-01-12T19:14:41", + 339690 ], [ - "2021-11-09T14:05:16", - 35786 + "2023-01-14T22:19:17", + 340259 ], [ - "2021-11-11T23:43:38", - 36656 + "2023-01-15T05:54:49", + 340274 ], [ - "2021-11-12T07:23:40", - 36686 + "2023-01-16T01:07:20", + 340305 ], [ - "2021-11-13T03:49:42", - 37044 + "2023-01-18T01:10:41", + 341085 ], [ - "2021-11-14T20:38:46", - 37155 + "2023-01-19T01:11:47", + 341515 ], [ - "2021-11-15T21:50:19", - 37303 + "2023-01-20T01:07:56", + 341924 ], [ - "2021-11-17T13:49:27", - 37748 + "2023-01-21T01:11:30", + 342225 ], [ - "2021-11-18T12:57:03", - 38116 + "2023-01-22T23:52:22", + 342315 ], [ - "2021-11-19T01:41:21", - 38261 + "2023-01-24T01:13:09", + 342627 ], [ - "2021-11-21T18:45:36", - 38731 + "2023-01-25T01:09:15", + 342966 ], [ - "2021-11-22T21:51:21", - 39044 + "2023-01-27T01:08:47", + 343553 ], [ - "2021-11-24T01:32:35", - 39568 + "2023-01-28T23:00:24", + 343959 ], [ - "2021-11-25T01:36:17", - 39824 + "2023-01-29T11:12:53", + 344006 ], [ - "2021-11-26T01:28:24", - 40079 + "2023-01-31T09:09:55", + 344437 ], [ - "2021-11-27T01:29:49", - 40410 + "2023-02-04T01:08:11", + 345978 ], [ - "2021-11-29T19:53:22", - 40747 + "2023-02-05T19:16:16", + 346073 ], [ - "2021-12-01T21:53:10", - 41699 + "2023-02-06T01:06:21", + 346105 ], [ - "2021-12-02T22:38:42", - 42044 + "2023-02-07T01:06:44", + 346484 ], [ - "2021-12-03T07:25:47", - 42054 + "2023-02-08T19:33:17", + 347112 ], [ - "2021-12-04T10:20:40", - 42313 + "2023-02-16T01:07:41", + 349110 ], [ - "2021-12-05T01:37:50", - 42323 + "2023-02-17T20:09:45", + 349566 ], [ - "2021-12-06T01:34:54", - 42350 + "2023-02-19T16:48:31", + 349703 ], [ - "2021-12-07T19:17:16", - 43031 + "2023-02-22T01:09:24", + 350487 ], [ - "2021-12-08T11:50:21", - 43131 + "2023-02-25T18:11:10", + 351764 ], [ - "2021-12-09T08:24:35", - 43481 + "2023-02-26T01:20:44", + 351789 ], [ - "2021-12-11T10:08:27", - 44037 + "2023-02-27T01:05:31", + 351858 ], [ - "2021-12-12T01:37:49", - 44061 + "2023-02-28T01:12:07", + 352181 ], [ - "2021-12-14T01:36:23", - 44474 + "2023-03-01T01:11:53", + 352565 ], [ - "2021-12-15T01:38:21", - 44810 + "2023-03-02T01:11:37", + 352976 ], [ - "2021-12-16T01:40:15", - 45183 + "2023-03-04T19:06:27", + 353709 ], [ - "2021-12-17T01:41:18", - 45506 + "2023-03-05T21:22:00", + 353795 ], [ - "2021-12-18T12:07:04", - 45774 + "2023-03-06T18:58:36", + 354287 ], [ - "2021-12-21T13:52:15", - 46202 + "2023-03-07T22:04:26", + 354887 ], [ - "2021-12-23T13:53:28", - 46615 + "2023-03-11T18:55:05", + 356945 ], [ - "2021-12-26T01:43:59", - 47104 + "2023-03-13T01:08:17", + 357087 ], [ - "2021-12-29T20:36:25", - 47655 + "2023-03-16T01:14:43", + 359166 ], [ - "2021-12-31T01:38:18", - 47729 + "2023-03-25T20:41:27", + 364426 ], [ - "2022-01-01T01:37:58", - 47777 + "2023-03-26T18:35:58", + 364559 ], [ - "2022-01-03T22:58:05", - 48108 + "2023-03-27T19:04:51", + 365247 ], [ - "2022-01-09T14:02:41", - 49379 + "2023-03-28T14:20:40", + 365764 ], [ - "2022-01-11T01:36:44", - 49780 + "2023-03-29T01:10:08", + 366426 ], [ - "2022-01-12T01:35:34", - 50101 + "2023-03-30T01:06:23", + 367117 ], [ - "2022-01-13T09:24:45", - 50497 + "2023-04-01T16:38:16", + 369004 ], [ - "2022-01-14T01:38:08", - 50746 + "2023-04-02T18:16:54", + 369088 ], [ - "2022-01-15T11:07:48", - 51165 + "2023-04-03T20:17:29", + 369457 ], [ - "2022-01-16T01:40:08", - 51231 + "2023-04-04T01:00:44", + 369624 ], [ - "2022-01-17T12:08:17", - 51432 + "2023-04-05T01:02:44", + 370222 ], [ - "2022-01-18T04:25:59", - 51527 + "2023-04-06T01:02:10", + 370789 ], [ - "2022-01-22T22:01:45", - 52572 + "2023-04-10T19:39:37", + 371659 ], [ - "2022-01-23T19:48:17", - 52669 + "2023-04-11T18:04:56", + 372034 ], [ - "2022-01-24T20:09:52", - 52939 + "2023-04-12T19:58:02", + 372622 ], [ - "2022-01-25T07:19:01", - 53057 + "2023-04-15T13:28:28", + 373586 ], [ - "2022-01-26T01:45:09", - 53346 + "2023-04-16T20:56:34", + 373649 ], [ - "2022-01-28T01:33:25", - 53768 + "2023-04-20T09:00:09", + 375028 ], [ - "2022-01-29T20:09:19", - 54003 + "2023-04-22T18:08:18", + 375750 ], [ - "2022-01-30T17:15:32", - 54048 + "2023-04-23T08:46:30", + 375776 ], [ - "2022-01-31T13:01:19", - 54130 + "2023-04-24T10:35:05", + 375941 ], [ - "2022-02-01T07:00:15", - 54377 + "2023-04-25T13:22:38", + 376489 ], [ - "2022-02-02T23:09:44", - 54817 + "2023-04-26T01:05:21", + 376739 ], [ - "2022-02-03T10:37:04", - 54923 + "2023-04-29T09:13:18", + 378283 ], [ - "2022-02-05T23:23:53", - 55509 + "2023-04-30T23:37:21", + 378356 ], [ - "2022-02-06T17:27:14", - 55578 + "2023-05-01T12:30:40", + 378458 ], [ - "2022-02-07T07:41:03", - 55617 + "2023-05-02T01:03:19", + 378667 ], [ - "2022-02-09T12:02:49", - 56325 + "2023-05-12T22:08:47", + 383734 ], [ - "2022-02-10T01:38:28", - 56550 + "2023-05-13T20:23:06", + 383804 ], [ - "2022-02-13T17:21:12", - 57581 + "2023-05-14T19:54:23", + 383879 ], [ - "2022-02-14T01:37:05", - 57609 + "2023-05-17T23:06:02", + 385783 ], [ - "2022-02-16T01:41:49", - 58536 + "2023-05-18T18:05:13", + 386087 ], [ - "2022-02-18T21:34:22", - 59458 + "2023-05-19T18:27:46", + 386599 ], [ - "2022-02-20T20:39:40", - 59664 + "2023-05-20T06:58:27", + 386745 ], [ - "2022-02-21T21:26:40", - 59978 + "2023-05-21T17:54:05", + 386877 ], [ - "2022-02-25T15:39:13", - 61699 + "2023-05-22T19:05:24", + 387226 ], [ - "2022-02-27T01:44:50", - 61876 + "2023-05-23T01:07:57", + 387323 ], [ - "2022-02-28T01:51:49", - 61950 + "2023-05-24T01:14:32", + 387794 ], [ - "2022-03-02T23:33:51", - 62488 + "2023-05-26T01:11:00", + 388513 ], [ - "2022-03-03T01:50:14", - 62522 + "2023-05-27T17:04:12", + 388936 ], [ - "2022-03-04T05:18:37", - 62679 + "2023-05-28T17:03:24", + 389016 ], [ - "2022-03-06T01:44:30", - 62853 + "2023-05-29T11:13:08", + 389112 ], [ - "2022-03-08T11:13:31", - 63086 + "2023-05-31T23:48:39", + 390243 ], [ - "2022-03-09T07:35:11", - 63229 + "2023-06-01T01:25:18", + 390312 ], [ - "2022-03-10T01:51:49", - 63477 + "2023-06-02T01:10:33", + 390955 ], [ - "2022-03-11T01:51:30", - 63663 + "2023-06-03T09:59:50", + 391306 ], [ - "2022-03-12T01:42:04", - 63831 + "2023-06-04T01:13:43", + 391379 ], [ - "2022-03-13T19:08:51", - 63964 + "2023-06-05T01:08:28", + 391465 ], [ - "2022-03-14T15:10:17", - 64073 + "2023-06-07T01:10:00", + 392283 ], [ - "2022-03-15T01:49:51", - 64158 + "2023-06-08T05:19:18", + 392693 ], [ - "2022-03-16T01:45:07", - 64395 + "2023-06-11T18:48:09", + 393568 ], [ - "2022-03-17T12:36:48", - 64656 + "2023-06-12T01:16:15", + 393583 ], [ - "2022-03-19T16:59:24", - 65041 + "2023-06-13T01:11:33", + 394135 ], [ - "2022-03-20T11:59:05", - 65090 + "2023-06-17T01:09:24", + 395762 ], [ - "2022-03-21T01:44:24", - 65136 + "2023-06-21T05:26:13", + 396717 ], [ - "2022-03-22T01:55:14", - 65360 + "2023-06-23T01:12:21", + 397473 ], [ - "2022-03-23T01:55:28", - 65689 + "2023-06-24T01:13:03", + 397734 ], [ - "2022-03-24T01:48:26", - 65969 + "2023-06-25T01:19:08", + 397771 ], [ - "2022-03-26T22:36:41", - 66689 + "2023-07-02T01:17:57", + 399355 ], [ - "2022-03-27T20:21:20", - 66839 + "2023-07-05T04:19:03", + 399928 ], [ - "2022-03-30T01:54:07", - 67716 + "2023-07-06T01:13:59", + 400218 ], [ - "2022-03-31T19:42:14", - 68222 + "2023-07-07T01:22:59", + 400748 ], [ - "2022-04-01T15:16:50", - 68500 + "2023-07-09T01:17:28", + 401628 ], [ - "2022-04-02T01:51:52", - 68691 + "2023-07-10T12:35:57", + 402077 ], [ - "2022-04-04T03:28:40", - 68821 + "2023-07-11T18:04:48", + 403260 ], [ - "2022-04-06T04:08:13", - 69623 + "2023-07-13T01:16:23", + 404095 ], [ - "2022-04-07T01:53:15", - 69805 + "2023-07-14T18:55:34", + 405270 ], [ - "2022-04-09T01:50:38", - 70210 + "2023-07-15T14:49:24", + 405543 ], [ - "2022-04-10T14:05:52", - 70383 + "2023-07-17T01:18:56", + 405706 ], [ - "2022-04-11T17:59:19", - 70483 + "2023-07-23T01:13:49", + 408802 ], [ - "2022-04-18T19:21:22", - 71140 + "2023-07-24T12:19:15", + 409102 ], [ - "2022-04-22T17:35:15", - 71570 + "2023-07-25T10:15:45", + 409626 ], [ - "2022-04-23T08:58:43", - 71623 + "2023-07-26T21:02:52", + 410537 ], [ - "2022-04-24T16:22:52", - 71708 + "2023-08-03T19:41:39", + 413810 ], [ - "2022-04-26T12:16:27", - 71855 + "2023-08-06T01:17:07", + 414423 ], [ - "2022-04-28T02:47:35", - 72050 + "2023-08-07T14:09:58", + 414715 ], [ - "2022-04-29T02:28:21", - 72170 + "2023-08-09T21:27:06", + 416432 ], [ - "2022-04-30T15:55:37", - 72372 + "2023-08-10T00:37:45", + 416482 ], [ - "2022-05-02T02:22:46", - 72462 + "2023-08-11T00:59:39", + 417331 ], [ - "2022-05-03T15:10:47", - 72667 + "2023-08-14T01:07:10", + 418282 ], [ - "2022-05-04T02:21:38", - 72787 + "2023-08-20T10:19:30", + 420831 ], [ - "2022-05-05T02:29:20", - 72920 + "2023-08-21T01:02:38", + 420890 ], [ - "2022-05-06T01:57:12", - 73064 + "2023-08-22T05:14:32", + 421435 ], [ - "2022-05-07T15:43:47", - 73223 + "2023-08-23T01:09:12", + 421929 ], [ - "2022-05-08T09:22:07", - 73265 + "2023-08-24T08:23:46", + 422648 ], [ - "2022-05-11T18:46:39", - 73702 + "2023-08-25T01:09:33", + 423059 ], [ - "2022-05-14T10:19:10", - 74039 + "2023-08-26T15:48:29", + 423641 ], [ - "2022-05-15T18:35:14", - 74129 + "2023-09-01T01:00:53", + 425926 ], [ - "2022-05-17T02:16:25", - 74294 + "2023-09-02T06:53:40", + 426632 ], [ - "2022-05-20T02:14:29", - 74816 + "2023-09-03T17:23:10", + 426814 ], [ - "2022-05-21T01:55:42", - 74934 + "2023-09-04T01:14:42", + 426823 ], [ - "2022-05-22T02:10:42", - 74995 + "2023-09-06T09:29:05", + 427820 ], [ - "2022-05-24T11:16:46", - 75198 + "2023-09-08T01:01:21", + 429089 ], [ - "2022-05-25T02:18:32", - 75352 + "2023-09-17T18:42:04", + 433396 ], [ - "2022-05-27T02:15:18", - 75831 + "2023-09-18T07:24:56", + 433529 ], [ - "2022-05-28T02:22:34", - 75968 + "2023-09-19T01:04:12", + 433942 ], [ - "2022-05-30T02:21:03", - 76122 + "2023-09-20T15:31:08", + 434825 ], [ - "2022-05-31T19:33:59", - 76452 + "2023-09-21T01:10:04", + 435090 ], [ - "2022-06-01T02:31:42", - 76526 + "2023-09-22T16:54:09", + 436094 ], [ - "2022-06-02T02:27:43", - 76759 + "2023-09-24T01:09:47", + 436432 ], [ - "2022-06-03T01:55:13", - 76983 + "2023-09-26T01:03:52", + 437111 ], [ - "2022-06-08T20:16:03", - 77578 + "2023-09-28T01:03:35", + 438389 ], [ - "2022-06-09T13:28:16", - 77681 + "2023-10-02T10:16:34", + 439707 ], [ - "2022-06-10T02:21:45", - 77767 + "2023-10-11T01:02:27", + 443875 ], [ - "2022-06-11T02:20:43", - 77884 + "2023-10-12T07:12:13", + 444682 ], [ - "2022-06-12T13:23:39", - 77970 + "2023-10-15T18:35:06", + 445983 ], [ - "2022-06-14T02:30:00", - 78112 + "2023-10-16T01:12:02", + 445997 ], [ - "2022-06-15T20:20:02", - 78454 + "2023-10-17T01:19:48", + 446488 ], [ - "2022-06-17T02:17:40", - 78649 + "2023-10-18T09:54:25", + 447214 ], [ - "2022-06-19T07:40:43", - 78843 + "2023-10-19T05:13:12", + 447678 ], [ - "2022-06-22T23:37:06", - 79499 + "2023-10-20T21:26:06", + 448614 ], [ - "2022-06-23T09:06:53", - 79574 + "2023-10-21T07:20:54", + 448740 ], [ - "2022-06-24T02:16:36", - 79688 + "2023-10-22T21:40:43", + 448937 ], [ - "2022-06-25T02:27:04", - 79813 + "2023-10-24T01:08:57", + 449482 ], [ - "2022-06-26T16:16:05", - 79953 + "2023-10-25T03:48:19", + 450140 ], [ - "2022-09-10T23:57:56", - 91096 + "2023-10-28T17:16:00", + 451881 ], [ - "2022-09-11T17:27:20", - 91163 + "2023-10-29T10:04:35", + 451989 ], [ - "2022-09-12T17:31:29", - 91310 + "2023-10-30T01:06:23", + 452060 ], [ - "2022-09-15T12:40:02", - 91736 + "2023-10-31T01:15:37", + 452516 ], [ - "2022-09-16T01:11:41", - 91842 + "2023-11-01T12:58:49", + 453314 ], [ - "2022-09-17T01:12:07", - 92004 + "2023-11-03T22:34:05", + 454726 ], [ - "2022-09-19T22:06:52", - 92313 + "2023-11-04T17:14:00", + 454897 ], [ - "2022-09-20T01:15:00", - 92344 + "2023-11-05T18:48:33", + 455054 ], [ - "2022-09-21T18:40:27", - 92650 + "2023-11-06T22:30:41", + 455603 ], [ - "2022-09-22T16:43:34", - 92776 + "2023-11-07T22:42:00", + 456298 ], [ - "2022-09-25T01:14:04", - 92991 + "2023-11-08T22:22:32", + 457132 ], [ - "2022-09-26T01:16:57", - 93082 + "2023-11-09T22:42:59", + 457823 ], [ - "2022-09-27T20:49:14", - 93430 + "2023-11-10T22:40:09", + 458429 ], [ - "2022-09-30T01:39:04", - 93834 + "2023-11-11T22:37:19", + 458679 + ] + ], + "dotnetweb": [ + [ + "2023-07-10T12:35:57", + 4 ], [ - "2022-10-01T17:39:25", - 93997 + "2023-07-11T18:04:48", + 16 ], [ - "2022-10-02T12:03:53", - 94057 + "2023-07-13T01:16:23", + 22 ], [ - "2022-10-03T08:03:32", - 94157 + "2023-07-14T18:55:34", + 30 ], [ - "2022-10-04T01:20:50", - 94302 + "2023-07-15T14:49:24", + 36 ], [ - "2022-10-05T01:21:27", - 94448 + "2023-07-17T01:18:56", + 38 ], [ - "2022-10-08T23:24:13", - 94905 + "2023-07-23T01:13:49", + 38 ], [ - "2022-10-10T01:35:49", - 94984 + "2023-07-24T12:19:15", + 38 ], [ - "2022-10-11T01:16:06", - 95107 + "2023-07-25T10:15:45", + 41 ], [ - "2022-10-12T19:05:48", - 95413 + "2023-07-26T21:02:52", + 68 ], [ - "2022-10-13T01:19:16", - 95449 + "2023-08-03T19:41:39", + 329 ], [ - "2022-10-14T01:30:33", - 95651 + "2023-08-06T01:17:07", + 383 ], [ - "2022-10-15T01:22:21", - 95780 + "2023-08-07T14:09:58", + 418 ], [ - "2022-10-16T21:43:31", - 95888 + "2023-08-09T21:27:06", + 536 ], [ - "2022-10-18T06:25:58", - 96074 + "2023-08-10T00:37:45", + 536 ], [ - "2022-10-22T11:41:20", - 96615 + "2023-08-11T00:59:39", + 568 ], [ - "2022-10-23T01:13:56", - 96659 + "2023-08-14T01:07:10", + 608 ], [ - "2022-10-24T20:11:55", - 96893 + "2023-08-20T10:19:30", + 843 ], [ - "2022-10-25T00:08:55", - 96905 + "2023-08-21T01:02:38", + 843 ], [ - "2022-10-26T01:07:23", - 97069 + "2023-08-22T05:14:32", + 880 ], [ - "2022-10-27T01:11:40", - 97192 + "2023-08-23T01:09:12", + 895 ], [ - "2022-10-29T01:02:52", - 97482 + "2023-08-24T08:23:46", + 946 ], [ - "2022-10-30T20:09:57", - 97617 + "2023-08-25T01:09:33", + 1009 ], [ - "2022-10-31T22:27:03", - 97760 + "2023-08-26T15:48:29", + 1050 ], [ - "2022-11-01T18:25:59", - 97865 + "2023-09-01T01:00:53", + 1186 ], [ - "2022-11-03T01:11:15", - 98038 + "2023-09-02T06:53:40", + 1204 ], [ - "2022-11-04T11:35:34", - 98225 + "2023-09-03T17:23:10", + 1204 ], [ - "2022-11-05T07:41:24", - 98315 + "2023-09-04T01:14:42", + 1204 ], [ - "2022-11-06T11:06:34", - 98404 + "2023-09-06T09:29:05", + 1279 ], [ - "2022-11-07T19:40:53", - 98606 + "2023-09-08T01:01:21", + 1333 ], [ - "2022-11-08T01:06:52", - 98638 + "2023-09-17T18:42:04", + 1470 ], [ - "2022-11-11T17:10:50", - 99194 + "2023-09-18T07:24:56", + 1471 ], [ - "2022-11-13T20:58:24", - 99324 + "2023-09-19T01:04:12", + 1537 ], [ - "2022-11-14T23:48:23", - 0 + "2023-09-20T15:31:08", + 1598 ], [ - "2022-11-15T07:38:22", - 99459 + "2023-09-21T01:10:04", + 1609 ], [ - "2022-11-17T09:11:40", - 99800 + "2023-09-22T16:54:09", + 1710 ], [ - "2022-11-19T22:14:34", - 100086 + "2023-09-24T01:09:47", + 1713 ], [ - "2022-11-21T23:47:48", - 100316 + "2023-09-26T01:03:52", + 1741 ], [ - "2022-11-22T01:14:59", - 100336 + "2023-09-28T01:03:35", + 1813 ], [ - "2022-11-23T23:28:30", - 100602 + "2023-10-02T10:16:34", + 1912 ], [ - "2022-11-26T01:00:47", - 100835 + "2023-10-11T01:02:27", + 2145 ], [ - "2022-11-28T01:02:53", - 100940 + "2023-10-12T07:12:13", + 2190 ], [ - "2022-12-07T07:19:55", - 102236 + "2023-10-15T18:35:06", + 2267 ], [ - "2022-12-18T20:23:59", - 103317 + "2023-10-16T01:12:02", + 2269 ], [ - "2022-12-19T18:26:59", - 103409 + "2023-10-17T01:19:48", + 2293 ], [ - "2022-12-20T16:08:58", - 103521 + "2023-10-18T09:54:25", + 2308 ], [ - "2022-12-21T23:23:24", - 103702 + "2023-10-19T05:13:12", + 2310 ], [ - "2022-12-22T22:59:06", - 103812 + "2023-10-20T21:26:06", + 2345 ], [ - "2022-12-24T20:01:35", - 103911 + "2023-10-21T07:20:54", + 2345 ], [ - "2022-12-25T21:13:52", - 103944 + "2023-10-22T21:40:43", + 2346 ], [ - "2022-12-26T19:56:00", - 103996 + "2023-10-24T01:08:57", + 2357 ], [ - "2022-12-27T23:56:39", - 104061 + "2023-10-25T03:48:19", + 2386 ], [ - "2022-12-29T20:55:31", - 104201 + "2023-10-28T17:16:00", + 2429 ], [ - "2022-12-30T20:56:36", - 104253 + "2023-10-29T10:04:35", + 2432 ], [ - "2022-12-31T08:10:29", - 104269 + "2023-10-30T01:06:23", + 2433 ], [ - "2023-01-01T23:58:03", - 104318 + "2023-10-31T01:15:37", + 2460 ], [ - "2023-01-02T23:32:43", - 104357 + "2023-11-01T12:58:49", + 2490 ], [ - "2023-01-04T01:14:45", - 104464 + "2023-11-03T22:34:05", + 2544 ], [ - "2023-01-05T00:40:47", - 104610 + "2023-11-04T17:14:00", + 2544 ], [ - "2023-01-06T15:27:19", - 104770 + "2023-11-05T18:48:33", + 2544 ], [ - "2023-01-07T23:05:20", - 104842 + "2023-11-06T22:30:41", + 2558 ], [ - "2023-01-09T23:13:18", - 105028 + "2023-11-07T04:05:02", + 2558 ], [ - "2023-01-10T22:19:22", - 105147 - ], - [ - "2023-01-11T20:38:34", - 105286 - ], - [ - "2023-01-12T19:14:41", - 105405 - ], - [ - "2023-01-14T22:19:17", - 105563 - ], - [ - "2023-01-15T05:54:49", - 105574 - ], - [ - "2023-01-16T01:07:20", - 105598 - ], - [ - "2023-01-18T01:10:41", - 105847 - ], - [ - "2023-01-19T01:11:47", - 105946 - ], - [ - "2023-01-20T01:07:56", - 106065 - ], - [ - "2023-01-21T01:11:30", - 106175 - ], - [ - "2023-01-22T23:52:22", - 106229 - ], - [ - "2023-01-24T01:13:09", - 106357 - ], - [ - "2023-01-25T01:09:15", - 106509 - ], - [ - "2023-01-27T01:08:47", - 106722 - ], - [ - "2023-01-28T23:00:24", - 106843 - ], - [ - "2023-01-29T11:12:53", - 106865 - ], - [ - "2023-01-31T09:09:55", - 107040 - ], - [ - "2023-02-04T01:08:11", - 107491 - ], - [ - "2023-02-05T19:16:16", - 107581 - ], - [ - "2023-02-06T01:06:21", - 107618 - ], - [ - "2023-02-07T01:06:44", - 107771 - ], - [ - "2023-02-08T19:33:17", - 108040 - ], - [ - "2023-02-16T01:07:41", - 108751 - ], - [ - "2023-02-17T20:09:45", - 108963 - ], - [ - "2023-02-19T16:48:31", - 109068 - ], - [ - "2023-02-22T01:09:24", - 109313 - ], - [ - "2023-02-25T18:11:10", - 109711 - ], - [ - "2023-02-26T01:20:44", - 109737 - ], - [ - "2023-02-27T01:05:31", - 109807 - ], - [ - "2023-02-28T01:12:07", - 109950 - ], - [ - "2023-03-01T01:11:53", - 110099 - ], - [ - "2023-03-02T01:11:37", - 110224 - ], - [ - "2023-03-04T19:06:27", - 110508 - ], - [ - "2023-03-05T21:22:00", - 110601 - ], - [ - "2023-03-06T18:58:36", - 110737 - ], - [ - "2023-03-07T22:04:26", - 110922 - ], - [ - "2023-03-11T18:55:05", - 111484 + "2023-11-08T22:22:32", + 2601 ], [ - "2023-03-13T01:08:17", - 111584 + "2023-11-09T22:42:59", + 2626 ], [ - "2023-03-16T01:14:43", - 112074 + "2023-11-10T22:40:09", + 2663 ], [ - "2023-03-25T20:41:27", - 113754 - ], + "2023-11-11T22:37:19", + 2663 + ] + ], + "formatters": [ [ - "2023-03-26T18:35:58", - 113830 + "2023-11-04T17:14:00", + 0 ], [ - "2023-03-27T19:04:51", - 114009 + "2023-11-05T18:48:33", + 0 ], [ - "2023-03-28T14:20:40", - 114144 + "2023-11-06T22:30:41", + 4 ], [ - "2023-03-29T01:10:08", - 114204 + "2023-11-07T22:42:00", + 4 ], [ - "2023-03-30T01:06:23", - 114382 + "2023-11-08T22:22:32", + 4 ], [ - "2023-04-01T16:38:16", - 114733 + "2023-11-09T22:42:59", + 4 ], [ - "2023-04-02T18:16:54", - 114806 + "2023-11-10T22:40:09", + 4 ], [ - "2023-04-03T20:17:29", - 114977 + "2023-11-11T22:37:19", + 4 ] ], - "javascript": [ + "go": [ [ "2021-07-26T20:10:04", - 22186 + 2256 ], [ "2021-07-28T01:29:28", - 22489 + 2306 ], [ "2021-07-29T01:25:08", - 22726 + 2326 ], [ "2021-07-30T02:45:47", - 22966 + 2334 ], [ "2021-07-31T02:55:52", - 23073 + 2347 ], [ "2021-08-01T01:34:33", - 23126 + 2349 ], [ "2021-08-02T01:25:51", - 23171 + 2351 ], [ "2021-08-03T01:34:04", - 23423 + 2381 ], [ "2021-08-04T01:25:42", - 23682 + 2418 ], [ "2021-08-05T13:16:40", - 24035 + 2433 ], [ "2021-08-06T10:08:44", - 24293 + 2438 ], [ "2021-08-07T01:23:20", - 24500 + 2455 ], [ "2021-08-08T17:46:20", - 24648 + 2463 ], [ "2021-08-09T12:57:30", - 24954 + 2471 ], [ "2021-08-10T18:15:58", - 25371 + 2504 ], [ "2021-08-11T19:45:43", - 25862 + 2541 ], [ "2021-08-12T16:45:06", - 26124 + 2650 ], [ "2021-08-13T01:26:41", - 26247 + 2695 ], [ "2021-08-14T08:26:41", - 26556 + 2761 ], [ "2021-08-15T21:37:16", - 26672 + 2825 ], [ "2021-08-17T01:22:18", - 27060 + 2861 ], [ "2021-08-18T01:24:15", - 27345 + 2886 ], [ "2021-08-19T22:44:18", - 27852 + 2907 ], [ "2021-08-20T16:03:59", - 28063 + 2922 ], [ "2021-08-21T12:36:04", - 28236 + 2934 ], [ "2021-08-22T01:21:13", - 28305 + 2935 ], [ "2021-08-23T20:34:23", - 28813 + 2957 ], [ "2021-08-24T21:32:49", - 29200 + 2972 ], [ "2021-08-28T19:11:50", - 30375 + 3059 ], [ "2021-08-29T12:02:14", - 30603 + 3074 ], [ "2021-08-31T03:01:11", - 31187 + 3125 ], [ "2021-09-01T01:34:30", - 31611 + 3150 ], [ "2021-09-02T11:26:37", - 32340 + 3190 ], [ "2021-09-03T01:30:31", - 32577 + 3210 ], [ "2021-09-04T13:35:27", - 32944 + 3231 ], [ "2021-09-06T01:30:54", - 33151 + 3239 ], [ "2021-09-07T01:30:29", - 33597 + 3248 ], [ "2021-09-12T12:45:46", - 35177 + 3390 ], [ "2021-09-15T03:11:38", - 36119 + 3532 ], [ "2021-09-18T22:10:09", - 37239 + 3603 ], [ "2021-09-19T15:32:31", - 37335 + 3609 ], [ "2021-09-20T01:35:53", - 37401 + 3613 ], [ "2021-09-21T17:53:24", - 38026 + 3658 ], [ "2021-09-23T01:37:54", - 38757 + 3695 ], [ "2021-09-24T03:14:34", - 39148 + 3727 ], [ "2021-09-25T16:30:33", - 39601 + 3801 ], [ "2021-09-26T12:23:03", - 39688 + 3806 ], [ "2021-09-27T15:31:39", - 39949 + 3836 ], [ "2021-09-29T01:26:48", - 40467 + 3879 ], [ "2021-09-30T23:05:25", - 41320 + 3918 ], [ "2021-10-01T16:05:31", - 41536 + 3928 ], [ "2021-10-03T21:24:16", - 41795 + 3953 ], [ "2021-10-05T01:32:48", - 42103 + 3988 ], [ "2021-10-06T08:19:33", - 42486 + 4014 ], [ "2021-10-07T19:01:06", - 42998 + 4063 ], [ "2021-10-09T09:11:23", - 43407 + 4086 ], [ "2021-10-10T16:38:57", - 43546 + 4122 ], [ "2021-10-12T12:32:12", - 44289 + 4156 ], [ "2021-10-13T01:33:36", - 44713 + 4168 ], [ "2021-10-16T01:43:12", - 45709 + 4226 ], [ "2021-10-17T12:27:08", - 45874 + 4246 ], [ "2021-10-21T01:43:07", - 46643 + 4318 ], [ "2021-10-24T15:47:49", - 47362 + 4391 ], [ "2021-10-25T04:54:54", - 47417 + 4395 ], [ "2021-10-26T19:08:21", - 47826 + 4447 ], [ "2021-10-27T10:52:46", - 48035 + 4477 ], [ "2021-10-28T01:27:35", - 48174 + 4505 ], [ "2021-10-29T05:01:38", - 48461 + 4543 ], [ "2021-10-30T20:34:54", - 188 + 46 ], [ "2021-10-31T18:17:07", - 49366 + 4665 ], [ "2021-11-01T01:50:59", - 49513 + 4686 ], [ "2021-11-02T11:56:56", - 49890 + 4759 ], [ "2021-11-03T01:34:05", - 50191 + 4783 ], [ "2021-11-04T22:06:35", - 50893 + 4838 ], [ "2021-11-07T22:48:14", - 51518 + 4900 ], [ "2021-11-08T16:38:12", - 51784 + 4917 ], [ "2021-11-09T14:05:16", - 52151 + 4948 ], [ "2021-11-11T23:43:38", - 52890 + 5042 ], [ "2021-11-12T07:23:40", - 52960 + 5051 ], [ "2021-11-13T03:49:42", - 53366 + 5094 ], [ "2021-11-14T20:38:46", - 53532 + 5116 ], [ "2021-11-15T21:50:19", - 53808 + 5143 ], [ "2021-11-17T13:49:27", - 54155 + 5192 ], [ "2021-11-18T12:57:03", - 54631 + 5236 ], [ "2021-11-19T01:41:21", - 54714 + 5258 ], [ "2021-11-21T18:45:36", - 55099 + 5305 ], [ "2021-11-22T21:51:21", - 55344 + 5370 ], [ "2021-11-24T01:32:35", - 55720 + 5466 ], [ "2021-11-25T01:36:17", - 56041 + 5487 ], [ "2021-11-26T01:28:24", - 56247 + 5499 ], [ "2021-11-27T01:29:49", - 56567 + 5523 ], [ "2021-11-29T19:53:22", - 56985 + 5558 ], [ "2021-12-01T21:53:10", - 57974 + 5652 ], [ "2021-12-02T22:38:42", - 58602 + 5685 ], [ "2021-12-03T07:25:47", - 59008 + 5688 ], [ "2021-12-04T10:20:40", - 59476 + 5717 ], [ "2021-12-05T01:37:50", - 59584 + 5729 ], [ "2021-12-06T01:34:54", - 59685 + 5737 ], [ "2021-12-07T19:17:16", - 60615 + 5837 ], [ "2021-12-08T11:50:21", - 60857 + 5847 ], [ "2021-12-09T08:24:35", - 61204 + 5899 ], [ "2021-12-11T10:08:27", - 61890 + 5954 ], [ "2021-12-12T01:37:49", - 61950 + 5968 ], [ "2021-12-14T01:36:23", - 62314 + 6035 ], [ "2021-12-15T01:38:21", - 62727 + 6088 ], [ "2021-12-16T01:40:15", - 63261 + 6142 ], [ "2021-12-17T01:41:18", - 63684 + 6201 ], [ "2021-12-18T12:07:04", - 64100 + 6267 ], [ "2021-12-21T13:52:15", - 64674 + 6355 ], [ "2021-12-23T13:53:28", - 65356 + 6425 ], [ "2021-12-26T01:43:59", - 65567 + 6461 ], [ "2021-12-29T20:36:25", - 66179 + 6516 ], [ "2021-12-31T01:38:18", - 66955 + 6519 ], [ "2022-01-01T01:37:58", - 67606 + 6524 ], [ "2022-01-03T22:58:05", - 68081 + 6579 ], [ "2022-01-09T14:02:41", - 69590 + 6737 ], [ "2022-01-11T01:36:44", - 70159 + 6816 ], [ "2022-01-12T01:35:34", - 70545 + 6846 ], [ "2022-01-13T09:24:45", - 71221 + 6882 ], [ "2022-01-14T01:38:08", - 71720 + 6905 ], [ "2022-01-15T11:07:48", - 72358 + 6948 ], [ "2022-01-16T01:40:08", - 72485 + 6958 ], [ "2022-01-17T12:08:17", - 72853 + 7025 ], [ "2022-01-18T04:25:59", - 73513 + 7042 ], [ "2022-01-22T22:01:45", - 76902 + 7218 ], [ "2022-01-23T19:48:17", - 77114 + 7246 ], [ "2022-01-24T20:09:52", - 77689 + 7307 ], [ "2022-01-25T07:19:01", - 77843 + 7322 ], [ "2022-01-26T01:45:09", - 78542 + 7372 ], [ "2022-01-28T01:33:25", - 79658 + 7447 ], [ "2022-01-29T20:09:19", - 80306 + 7485 ], [ "2022-01-30T17:15:32", - 80594 + 7495 ], [ "2022-01-31T13:01:19", - 80965 + 7522 ], [ "2022-02-01T07:00:15", - 81283 + 7542 ], [ "2022-02-02T23:09:44", - 82004 + 7616 ], [ "2022-02-03T10:37:04", - 82333 + 7650 ], [ "2022-02-05T23:23:53", - 83707 + 7723 ], [ "2022-02-06T17:27:14", - 83948 + 7731 ], [ "2022-02-07T07:41:03", - 84175 + 7732 ], [ "2022-02-09T12:02:49", - 85728 + 7818 ], [ "2022-02-10T01:38:28", - 86129 + 7844 ], [ "2022-02-13T17:21:12", - 87400 + 7929 ], [ "2022-02-14T01:37:05", - 87506 + 7933 ], [ "2022-02-16T01:41:49", - 88736 + 8043 ], [ "2022-02-18T21:34:22", - 90582 + 8152 ], [ "2022-02-20T20:39:40", - 90936 + 8194 ], [ "2022-02-21T21:26:40", - 91521 + 8226 ], [ "2022-02-25T15:39:13", - 93715 + 8403 ], [ "2022-02-27T01:44:50", - 94064 + 8434 ], [ "2022-02-28T01:51:49", - 94199 + 8443 ], [ "2022-03-02T23:33:51", - 95281 + 8624 ], [ "2022-03-03T01:50:14", - 95324 + 8633 ], [ "2022-03-04T05:18:37", - 95552 + 8653 ], [ "2022-03-06T01:44:30", - 95738 + 8666 ], [ "2022-03-08T11:13:31", - 95999 + 8696 ], [ "2022-03-09T07:35:11", - 96223 + 8703 ], [ "2022-03-10T01:51:49", - 96414 + 8712 ], [ "2022-03-11T01:51:30", - 96613 + 8722 ], [ "2022-03-12T01:42:04", - 96845 + 8740 ], [ "2022-03-13T19:08:51", - 96902 + 8742 ], [ "2022-03-14T15:10:17", - 97057 + 8774 ], [ "2022-03-15T01:49:51", - 97150 + 8819 ], [ "2022-03-16T01:45:07", - 97376 + 8832 ], [ "2022-03-17T12:36:48", - 97780 + 8863 ], [ "2022-03-19T16:59:24", - 98167 + 8907 ], [ "2022-03-20T11:59:05", - 98236 + 8907 ], [ "2022-03-21T01:44:24", - 98280 + 8914 ], [ "2022-03-22T01:55:14", - 98487 + 8964 ], [ "2022-03-23T01:55:28", - 98777 + 9001 ], [ "2022-03-24T01:48:26", - 99034 + 9027 ], [ "2022-03-26T22:36:41", - 99756 + 9118 ], [ "2022-03-27T20:21:20", - 99869 + 9129 ], [ "2022-03-30T01:54:07", - 100591 + 9267 ], [ "2022-03-31T19:42:14", - 101176 + 9334 ], [ "2022-04-01T15:16:50", - 101535 + 9369 ], [ "2022-04-02T01:51:52", - 101691 + 9382 ], [ "2022-04-04T03:28:40", - 102187 + 9391 ], [ "2022-04-06T04:08:13", - 103119 + 9529 ], [ "2022-04-07T01:53:15", - 103537 + 9565 ], [ "2022-04-09T01:50:38", - 104418 + 9662 ], [ "2022-04-10T14:05:52", - 104811 + 9665 ], [ "2022-04-11T17:59:19", - 105423 + 9717 ], [ "2022-04-18T19:21:22", - 107737 + 9950 ], [ "2022-04-22T17:35:15", - 109303 + 10090 ], [ "2022-04-23T08:58:43", - 109456 + 10106 ], [ "2022-04-24T16:22:52", - 109805 + 10107 ], [ "2022-04-26T12:16:27", - 110613 + 10179 ], [ "2022-04-28T02:47:35", - 111320 + 10265 ], [ "2022-04-29T02:28:21", - 111625 + 10310 ], [ "2022-04-30T15:55:37", - 111925 + 10371 ], [ "2022-05-02T02:22:46", - 112137 + 10378 ], [ "2022-05-03T15:10:47", - 112568 + 10405 ], [ "2022-05-04T02:21:38", - 112713 + 10430 ], [ "2022-05-05T02:29:20", - 113002 + 10455 ], [ "2022-05-06T01:57:12", - 113250 + 10481 ], [ "2022-05-07T15:43:47", - 113476 + 10510 ], [ "2022-05-08T09:22:07", - 113508 + 10511 ], [ "2022-05-11T18:46:39", - 114323 + 10656 ], [ "2022-05-14T10:19:10", - 115201 + 10769 ], [ "2022-05-15T18:35:14", - 115296 + 10786 ], [ "2022-05-17T02:16:25", - 115737 + 10847 ], [ "2022-05-20T02:14:29", - 116804 + 11010 ], [ "2022-05-21T01:55:42", - 117191 + 11049 ], [ "2022-05-22T02:10:42", - 117271 + 11054 ], [ "2022-05-24T11:16:46", - 117819 + 11146 ], [ "2022-05-25T02:18:32", - 117970 + 11204 ], [ "2022-05-27T02:15:18", - 118487 + 11271 ], [ "2022-05-28T02:22:34", - 118701 + 11293 ], [ "2022-05-30T02:21:03", - 118917 + 11298 ], [ "2022-05-31T19:33:59", - 119501 + 11391 ], [ "2022-06-01T02:31:42", - 119622 + 11419 ], [ "2022-06-02T02:27:43", - 120036 + 11479 ], [ "2022-06-03T01:55:13", - 120271 + 11558 ], [ "2022-06-08T20:16:03", - 121675 + 11715 ], [ "2022-06-09T13:28:16", - 121970 + 11737 ], [ "2022-06-10T02:21:45", - 122136 + 11751 ], [ "2022-06-11T02:20:43", - 122430 + 11768 ], [ "2022-06-12T13:23:39", - 122534 + 11773 ], [ "2022-06-14T02:30:00", - 122934 + 11839 ], [ "2022-06-15T20:20:02", - 123598 + 11867 ], [ "2022-06-17T02:17:40", - 123887 + 11887 ], [ "2022-06-19T07:40:43", - 124295 + 11911 ], [ "2022-06-22T23:37:06", - 125181 + 11956 ], [ "2022-06-23T09:06:53", - 125320 + 11958 ], [ "2022-06-24T02:16:36", - 125588 + 11959 ], [ "2022-06-25T02:27:04", - 125880 + 11964 ], [ "2022-06-26T16:16:05", - 126003 + 11969 ], [ "2022-09-10T23:57:56", - 145044 + 13405 ], [ "2022-09-11T17:27:20", - 145242 + 13405 ], [ "2022-09-12T17:31:29", - 145738 + 13449 ], [ "2022-09-15T12:40:02", - 146652 + 13514 ], [ "2022-09-16T01:11:41", - 146765 + 13533 ], [ "2022-09-17T01:12:07", - 146962 + 13569 ], [ "2022-09-19T22:06:52", - 147496 + 13628 ], [ "2022-09-20T01:15:00", - 147558 + 13641 ], [ "2022-09-21T18:40:27", - 148082 + 13683 ], [ "2022-09-22T16:43:34", - 148507 + 13720 ], [ "2022-09-25T01:14:04", - 149108 + 13743 ], [ "2022-09-26T01:16:57", - 149461 + 13760 ], [ "2022-09-27T20:49:14", - 150184 + 13845 ], [ "2022-09-30T01:39:04", - 151396 + 13877 ], [ "2022-10-01T17:39:25", - 151761 + 13889 ], [ "2022-10-02T12:03:53", - 151901 + 13895 ], [ "2022-10-03T08:03:32", - 152092 + 13925 ], [ "2022-10-04T01:20:50", - 152586 + 13968 ], [ "2022-10-05T01:21:27", - 153180 + 13981 ], [ "2022-10-08T23:24:13", - 154384 + 14066 ], [ "2022-10-10T01:35:49", - 154794 + 14080 ], [ "2022-10-11T01:16:06", - 155207 + 14128 ], [ "2022-10-12T19:05:48", - 155775 + 14168 ], [ "2022-10-13T01:19:16", - 155931 + 14177 ], [ "2022-10-14T01:30:33", - 156350 + 14217 ], [ "2022-10-15T01:22:21", - 156752 + 14241 ], [ "2022-10-16T21:43:31", - 156999 + 14247 ], [ "2022-10-18T06:25:58", - 157500 + 14338 ], [ "2022-10-22T11:41:20", - 158708 + 14450 ], [ "2022-10-23T01:13:56", - 158803 + 14455 ], [ "2022-10-24T20:11:55", - 159727 + 14537 ], [ "2022-10-25T00:08:55", - 159757 + 14542 ], [ "2022-10-26T01:07:23", - 160223 + 14572 ], [ "2022-10-27T01:11:40", - 160557 + 14578 ], [ "2022-10-29T01:02:52", - 161057 + 14609 ], [ "2022-10-30T20:09:57", - 161293 + 14618 ], [ "2022-10-31T22:27:03", - 161769 + 14692 ], [ "2022-11-01T18:25:59", - 162061 + 14713 ], [ "2022-11-03T01:11:15", - 162470 + 14760 ], [ "2022-11-04T11:35:34", - 162930 + 14779 ], [ "2022-11-05T07:41:24", - 163161 + 14793 ], [ "2022-11-06T11:06:34", - 163331 + 14795 ], [ "2022-11-07T19:40:53", - 163750 + 14885 ], [ "2022-11-08T01:06:52", - 163838 + 14886 ], [ "2022-11-11T17:10:50", - 165444 + 14957 ], [ "2022-11-13T20:58:24", - 165794 + 14960 ], [ "2022-11-14T23:48:23", @@ -10802,4779 +10732,4825 @@ ], [ "2022-11-15T07:38:22", - 166422 + 15001 ], [ "2022-11-17T09:11:40", - 167365 + 15030 ], [ "2022-11-19T22:14:34", - 168082 + 15090 ], [ "2022-11-21T23:47:48", - 168669 + 15125 ], [ "2022-11-22T01:14:59", - 168691 + 15144 ], [ "2022-11-23T23:28:30", - 169401 + 15254 ], [ "2022-11-26T01:00:47", - 170096 + 15295 ], [ "2022-11-28T01:02:53", - 170463 + 15307 ], [ "2022-12-07T07:19:55", - 173593 + 15465 ], [ "2022-12-18T20:23:59", - 177426 + 15667 ], [ "2022-12-19T18:26:59", - 178143 + 15740 ], [ "2022-12-20T16:08:58", - 178474 + 15755 ], [ "2022-12-21T23:23:24", - 178906 + 15791 ], [ "2022-12-22T22:59:06", - 179209 + 15815 ], [ "2022-12-24T20:01:35", - 179656 + 15827 ], [ "2022-12-25T21:13:52", - 179790 + 15835 ], [ - "2022-12-26T19:56:00", - 179998 + "2022-12-26T19:30:31", + 15864 ], [ "2022-12-27T23:56:39", - 180350 + 15875 ], [ "2022-12-29T20:55:31", - 180757 + 15884 ], [ "2022-12-30T20:56:36", - 180908 + 15885 ], [ "2022-12-31T08:10:29", - 180974 + 15885 ], [ "2023-01-01T23:58:03", - 181416 + 15887 ], [ "2023-01-02T23:32:43", - 181806 + 15907 ], [ "2023-01-04T01:14:45", - 182349 + 15923 ], [ "2023-01-05T00:40:47", - 182719 + 15931 ], [ "2023-01-06T15:27:19", - 183368 + 15954 ], [ "2023-01-07T23:05:20", - 183754 + 15956 ], [ "2023-01-09T23:13:18", - 184760 + 15997 ], [ "2023-01-10T22:19:22", - 185198 + 16006 ], [ "2023-01-11T20:38:34", - 185609 + 16019 ], [ "2023-01-12T19:14:41", - 186040 + 16038 ], [ "2023-01-14T22:19:17", - 186715 + 16062 ], [ "2023-01-15T05:54:49", - 186825 + 16062 ], [ "2023-01-16T01:07:20", - 187064 + 16074 ], [ "2023-01-18T01:10:41", - 188235 + 16134 ], [ "2023-01-19T01:11:47", - 189097 + 16148 ], [ "2023-01-20T01:07:56", - 189452 + 16154 ], [ "2023-01-21T01:11:30", - 189828 + 16163 ], [ "2023-01-22T23:52:22", - 190152 + 16175 ], [ "2023-01-24T01:13:09", - 190552 + 16234 ], [ "2023-01-25T01:09:15", - 191023 + 16248 ], [ "2023-01-27T01:08:47", - 191791 + 16290 ], [ "2023-01-28T23:00:24", - 192297 + 16305 ], [ "2023-01-29T11:12:53", - 192474 + 16306 ], [ "2023-01-31T09:09:55", - 193248 + 16385 ], [ "2023-02-04T01:08:11", - 194625 + 16455 ], [ "2023-02-05T19:16:16", - 195181 + 16462 ], [ "2023-02-06T01:06:21", - 195393 + 16466 ], [ "2023-02-07T01:06:44", - 195961 + 16530 ], [ "2023-02-08T19:33:17", - 197104 + 16580 ], [ "2023-02-16T01:07:41", - 201057 + 16793 ], [ "2023-02-17T20:09:45", - 202023 + 16842 ], [ "2023-02-19T16:48:31", - 202650 + 16854 ], [ "2023-02-22T01:09:24", - 203944 + 16946 ], [ "2023-02-25T18:11:10", - 205882 + 17008 ], [ "2023-02-26T01:20:44", - 205935 + 17012 ], [ "2023-02-27T01:05:31", - 206322 + 17026 ], [ "2023-02-28T01:12:07", - 206966 + 17055 ], [ "2023-03-01T01:11:53", - 207628 + 17067 ], [ "2023-03-02T01:11:37", - 208119 + 17086 ], [ "2023-03-04T19:06:27", - 209306 + 17127 ], [ "2023-03-05T21:22:00", - 209802 + 17169 ], [ "2023-03-06T18:58:36", - 210747 + 17265 ], [ "2023-03-07T22:04:26", - 212049 + 17358 ], [ "2023-03-11T18:55:05", - 215117 + 17607 ], [ "2023-03-13T01:08:17", - 215856 + 17625 ], [ "2023-03-16T01:14:43", - 219219 + 17783 ], [ "2023-03-25T20:41:27", - 229178 + 18059 ], [ "2023-03-26T18:35:58", - 229676 + 18083 ], [ "2023-03-27T19:04:51", - 231168 + 18216 ], [ "2023-03-28T14:20:40", - 232386 + 18286 ], [ "2023-03-29T01:10:08", - 232857 + 18339 ], [ "2023-03-30T01:06:23", - 234149 + 18353 ], [ "2023-04-01T16:38:16", - 236566 + 18417 ], [ "2023-04-02T18:16:54", - 236975 + 18431 ], [ "2023-04-03T20:17:29", - 238152 - ] - ], - "php": [ + 18502 + ], [ - "2021-07-26T20:10:04", - 1300 + "2023-04-04T01:00:44", + 18507 ], [ - "2021-07-28T01:29:28", - 1301 + "2023-04-05T01:02:44", + 18554 ], [ - "2021-07-29T01:25:08", - 1306 + "2023-04-06T01:02:10", + 18584 ], [ - "2021-07-30T02:45:47", - 1311 + "2023-04-10T19:39:37", + 18744 ], [ - "2021-07-31T02:55:52", - 1311 + "2023-04-11T18:04:56", + 18808 ], [ - "2021-08-01T01:34:33", - 1313 + "2023-04-12T19:58:02", + 18849 ], [ - "2021-08-02T01:25:51", - 1323 + "2023-04-15T13:28:28", + 18972 ], [ - "2021-08-03T01:34:04", - 1323 + "2023-04-16T20:56:34", + 19012 ], [ - "2021-08-04T01:25:42", - 1327 + "2023-04-20T09:00:09", + 19275 ], [ - "2021-08-05T13:16:40", - 1329 + "2023-04-22T18:08:18", + 19361 ], [ - "2021-08-06T10:08:44", - 1329 + "2023-04-23T08:46:30", + 19370 ], [ - "2021-08-07T01:23:20", - 1329 + "2023-04-24T10:35:05", + 19417 ], [ - "2021-08-08T17:46:20", - 1334 + "2023-04-25T13:22:38", + 19462 ], [ - "2021-08-09T12:57:30", - 1337 + "2023-04-26T01:05:21", + 19486 ], [ - "2021-08-10T18:15:58", - 1340 + "2023-04-29T09:13:18", + 19628 ], [ - "2021-08-11T19:45:43", - 1345 + "2023-04-30T23:37:21", + 19656 ], [ - "2021-08-12T16:45:06", - 1357 + "2023-05-01T12:30:40", + 19685 ], [ - "2021-08-13T01:26:41", - 1363 + "2023-05-02T01:03:19", + 19706 ], [ - "2021-08-14T08:26:41", - 1364 + "2023-05-12T22:08:47", + 20403 ], [ - "2021-08-15T21:37:16", - 1377 + "2023-05-13T20:23:06", + 20443 ], [ - "2021-08-17T01:22:18", - 1378 + "2023-05-14T19:54:23", + 20467 ], [ - "2021-08-18T01:24:15", - 1379 + "2023-05-17T23:06:02", + 20680 ], [ - "2021-08-19T22:44:18", - 1387 + "2023-05-18T18:05:13", + 20760 ], [ - "2021-08-20T16:03:59", - 1399 + "2023-05-19T18:27:46", + 20837 ], [ - "2021-08-21T12:36:04", - 1407 + "2023-05-20T06:58:27", + 20865 ], [ - "2021-08-22T01:21:13", - 1408 + "2023-05-21T17:54:05", + 20874 ], [ - "2021-08-23T20:34:23", - 1431 + "2023-05-22T19:05:24", + 20974 ], [ - "2021-08-24T21:32:49", - 1437 + "2023-05-23T01:07:57", + 20992 ], [ - "2021-08-28T19:11:50", - 1450 + "2023-05-24T01:14:32", + 21082 ], [ - "2021-08-29T12:02:14", - 1471 + "2023-05-26T01:11:00", + 21221 ], [ - "2021-08-31T03:01:11", - 1487 + "2023-05-27T17:04:12", + 21294 ], [ - "2021-09-01T01:34:30", - 1491 + "2023-05-28T17:03:24", + 21334 ], [ - "2021-09-02T11:26:37", - 1508 + "2023-05-29T11:13:08", + 21381 ], [ - "2021-09-03T01:30:31", - 1512 + "2023-05-31T23:48:39", + 21592 ], [ - "2021-09-04T13:35:27", - 1522 + "2023-06-01T01:25:18", + 21604 ], [ - "2021-09-06T01:30:54", - 1547 + "2023-06-02T01:10:33", + 21672 ], [ - "2021-09-07T01:30:29", - 1564 + "2023-06-03T09:59:50", + 21713 ], [ - "2021-09-12T12:45:46", - 1581 + "2023-06-04T01:13:43", + 21717 ], [ - "2021-09-15T03:11:38", - 1588 + "2023-06-05T01:08:28", + 21731 ], [ - "2021-09-18T22:10:09", - 1602 + "2023-06-07T01:10:00", + 21899 ], [ - "2021-09-19T15:32:31", - 1607 + "2023-06-08T05:19:18", + 21991 ], [ - "2021-09-20T01:35:53", - 1611 + "2023-06-11T18:48:09", + 22116 ], [ - "2021-09-21T17:53:24", - 1619 + "2023-06-12T01:16:15", + 22124 ], [ - "2021-09-23T01:37:54", - 1629 + "2023-06-13T01:11:33", + 22228 ], [ - "2021-09-24T03:14:34", - 1633 + "2023-06-17T01:09:24", + 22516 ], [ - "2021-09-25T16:30:33", - 1663 + "2023-06-21T05:26:13", + 22719 ], [ - "2021-09-26T12:23:03", - 1667 + "2023-06-23T01:12:21", + 22866 ], [ - "2021-09-27T15:31:39", - 1683 + "2023-06-24T01:13:03", + 22940 ], [ - "2021-09-29T01:26:48", - 1693 + "2023-06-25T01:19:08", + 22946 ], [ - "2021-09-30T23:05:25", - 1708 + "2023-07-02T01:17:57", + 23373 ], [ - "2021-10-01T16:05:31", - 1711 + "2023-07-05T04:19:03", + 23570 ], [ - "2021-10-03T21:24:16", - 1726 + "2023-07-06T01:13:59", + 23644 ], [ - "2021-10-05T01:32:48", - 1739 + "2023-07-07T01:22:59", + 23756 ], [ - "2021-10-06T08:19:33", - 1760 + "2023-07-09T01:17:28", + 23898 ], [ - "2021-10-07T19:01:06", - 1774 + "2023-07-10T12:35:57", + 23975 ], [ - "2021-10-09T09:11:23", - 1781 + "2023-07-11T18:04:48", + 24107 ], [ - "2021-10-10T16:38:57", - 1784 + "2023-07-13T01:16:23", + 24222 ], [ - "2021-10-12T12:32:12", - 1816 + "2023-07-14T18:55:34", + 24382 ], [ - "2021-10-13T01:33:36", - 1819 + "2023-07-15T14:49:24", + 24395 ], [ - "2021-10-16T01:43:12", - 1856 + "2023-07-17T01:18:56", + 24424 ], [ - "2021-10-17T12:27:08", - 1879 + "2023-07-23T01:13:49", + 24801 ], [ - "2021-10-21T01:43:07", - 1934 + "2023-07-24T12:19:15", + 24887 ], [ - "2021-10-24T15:47:49", - 1942 + "2023-07-25T10:15:45", + 24962 ], [ - "2021-10-25T04:54:54", - 1944 + "2023-07-26T21:02:52", + 25230 ], [ - "2021-10-26T19:08:21", - 1971 + "2023-08-03T19:41:39", + 26053 ], [ - "2021-10-27T10:52:46", - 1973 + "2023-08-06T01:17:07", + 26289 ], [ - "2021-10-28T01:27:35", - 1979 + "2023-08-07T14:09:58", + 26364 ], [ - "2021-10-29T05:01:38", - 1981 + "2023-08-09T21:27:06", + 26545 ], [ - "2021-10-30T20:34:54", - 46 + "2023-08-10T00:37:45", + 26546 ], [ - "2021-10-31T18:17:07", - 2056 + "2023-08-11T00:59:39", + 26722 ], [ - "2021-11-01T01:50:59", - 2071 + "2023-08-14T01:07:10", + 26883 ], [ - "2021-11-02T11:56:56", - 2112 + "2023-08-20T10:19:30", + 27295 ], [ - "2021-11-03T01:34:05", - 2126 + "2023-08-21T01:02:38", + 27318 ], [ - "2021-11-04T22:06:35", - 2153 + "2023-08-22T05:14:32", + 27474 ], [ - "2021-11-07T22:48:14", - 2183 + "2023-08-23T01:09:12", + 27559 ], [ - "2021-11-08T16:38:12", - 2198 + "2023-08-24T08:23:46", + 27680 ], [ - "2021-11-09T14:05:16", - 2221 + "2023-08-25T01:09:33", + 27729 ], [ - "2021-11-11T23:43:38", - 2243 + "2023-08-26T15:48:29", + 27800 ], [ - "2021-11-12T07:23:40", - 2244 + "2023-09-01T01:00:53", + 28350 ], [ - "2021-11-13T03:49:42", - 2250 + "2023-09-02T06:53:40", + 28532 ], [ - "2021-11-14T20:38:46", - 2282 + "2023-09-03T17:23:10", + 28584 ], [ - "2021-11-15T21:50:19", - 2301 + "2023-09-04T01:14:42", + 28602 ], [ - "2021-11-17T13:49:27", - 2316 + "2023-09-06T09:29:05", + 28969 ], [ - "2021-11-18T12:57:03", - 2321 + "2023-09-08T01:01:21", + 29136 ], [ - "2021-11-19T01:41:21", - 2335 + "2023-09-17T18:42:04", + 29815 ], [ - "2021-11-21T18:45:36", - 2353 + "2023-09-18T07:24:56", + 29843 ], [ - "2021-11-22T21:51:21", - 2383 + "2023-09-19T01:04:12", + 29903 ], [ - "2021-11-24T01:32:35", - 2396 + "2023-09-20T15:31:08", + 30119 ], [ - "2021-11-25T01:36:17", - 2429 + "2023-09-21T01:10:04", + 30128 ], [ - "2021-11-26T01:28:24", - 2441 + "2023-09-22T16:54:09", + 30256 ], [ - "2021-11-27T01:29:49", - 2465 + "2023-09-24T01:09:47", + 30342 ], [ - "2021-11-29T19:53:22", - 2486 + "2023-09-26T01:03:52", + 30471 ], [ - "2021-12-01T21:53:10", - 2565 + "2023-09-28T01:03:35", + 30593 ], [ - "2021-12-02T22:38:42", - 2591 + "2023-10-02T10:16:34", + 30921 ], [ - "2021-12-03T07:25:47", - 2606 + "2023-10-11T01:02:27", + 31624 ], [ - "2021-12-04T10:20:40", - 2675 + "2023-10-12T07:12:13", + 31830 ], [ - "2021-12-05T01:37:50", - 2699 + "2023-10-15T18:35:06", + 32107 ], [ - "2021-12-06T01:34:54", - 2726 + "2023-10-16T01:12:02", + 32110 ], [ - "2021-12-07T19:17:16", - 2766 + "2023-10-17T01:19:48", + 32176 ], [ - "2021-12-08T11:50:21", - 2779 + "2023-10-18T09:54:25", + 32253 ], [ - "2021-12-09T08:24:35", - 2800 + "2023-10-19T05:13:12", + 32336 ], [ - "2021-12-11T10:08:27", - 2851 + "2023-10-20T21:26:06", + 32642 ], [ - "2021-12-12T01:37:49", - 2863 + "2023-10-21T07:20:54", + 32673 ], [ - "2021-12-14T01:36:23", - 2903 + "2023-10-22T21:40:43", + 32688 ], [ - "2021-12-15T01:38:21", - 2904 + "2023-10-24T01:08:57", + 32805 ], [ - "2021-12-16T01:40:15", - 2908 + "2023-10-25T03:48:19", + 32847 ], [ - "2021-12-17T01:41:18", - 2918 + "2023-10-28T17:16:00", + 33139 ], [ - "2021-12-18T12:07:04", - 2930 + "2023-10-29T10:04:35", + 33148 ], [ - "2021-12-21T13:52:15", - 2982 + "2023-10-30T01:06:23", + 33165 ], [ - "2021-12-23T13:53:28", - 3056 + "2023-10-31T01:15:37", + 33311 ], [ - "2021-12-26T01:43:59", - 3141 + "2023-11-01T12:58:49", + 33484 ], [ - "2021-12-29T20:36:25", - 3251 + "2023-11-03T22:34:05", + 33646 ], [ - "2021-12-31T01:38:18", - 3259 + "2023-11-04T17:14:00", + 33655 ], [ - "2022-01-01T01:37:58", - 3262 + "2023-11-05T18:48:33", + 33666 ], [ - "2022-01-03T22:58:05", - 3296 + "2023-11-06T22:30:41", + 33751 ], [ - "2022-01-09T14:02:41", - 3451 + "2023-11-07T22:42:00", + 33847 ], [ - "2022-01-11T01:36:44", - 3492 + "2023-11-08T22:22:32", + 33938 ], [ - "2022-01-12T01:35:34", - 3503 + "2023-11-09T22:42:59", + 34012 ], [ - "2022-01-13T09:24:45", - 3529 + "2023-11-10T22:40:09", + 34102 ], [ - "2022-01-14T01:38:08", - 3549 + "2023-11-11T22:37:19", + 34127 + ] + ], + "java": [ + [ + "2021-07-26T20:10:04", + 14423 ], [ - "2022-01-15T11:07:48", - 3567 + "2021-07-28T01:29:28", + 14674 ], [ - "2022-01-16T01:40:08", - 3571 + "2021-07-29T01:25:08", + 14827 ], [ - "2022-01-17T12:08:17", - 3582 + "2021-07-30T02:45:47", + 14901 ], [ - "2022-01-18T04:25:59", - 3583 + "2021-07-31T02:55:52", + 15018 ], [ - "2022-01-22T22:01:45", - 3733 + "2021-08-01T01:34:33", + 15026 ], [ - "2022-01-23T19:48:17", - 3753 + "2021-08-02T01:25:51", + 15041 ], [ - "2022-01-24T20:09:52", - 3769 + "2021-08-03T01:34:04", + 15327 ], [ - "2022-01-25T07:19:01", - 3769 + "2021-08-04T01:25:42", + 15616 ], [ - "2022-01-26T01:45:09", - 3785 + "2021-08-05T13:16:40", + 15819 ], [ - "2022-01-28T01:33:25", - 3802 + "2021-08-06T10:08:44", + 15850 ], [ - "2022-01-29T20:09:19", - 3841 + "2021-08-07T01:23:20", + 15968 ], [ - "2022-01-30T17:15:32", - 3848 + "2021-08-08T17:46:20", + 15983 ], [ - "2022-01-31T13:01:19", - 3877 + "2021-08-09T12:57:30", + 16048 ], [ - "2022-02-01T07:00:15", - 3880 + "2021-08-10T18:15:58", + 16278 ], [ - "2022-02-02T23:09:44", - 3899 + "2021-08-11T19:45:43", + 16398 ], [ - "2022-02-03T10:37:04", - 3921 + "2021-08-12T16:45:06", + 16605 ], [ - "2022-02-05T23:23:53", - 3934 + "2021-08-13T01:26:41", + 16637 ], [ - "2022-02-06T17:27:14", - 3943 + "2021-08-14T08:26:41", + 16722 ], [ - "2022-02-07T07:41:03", - 3944 + "2021-08-15T21:37:16", + 16741 ], [ - "2022-02-09T12:02:49", - 3959 + "2021-08-17T01:22:18", + 16934 ], [ - "2022-02-10T01:38:28", - 3963 + "2021-08-18T01:24:15", + 17091 ], [ - "2022-02-13T17:21:12", - 3976 + "2021-08-19T22:44:18", + 17368 ], [ - "2022-02-14T01:37:05", - 3980 + "2021-08-20T16:03:59", + 17478 ], [ - "2022-02-16T01:41:49", - 4046 + "2021-08-21T12:36:04", + 17549 ], [ - "2022-02-18T21:34:22", - 4106 + "2021-08-22T01:21:13", + 17554 ], [ - "2022-02-20T20:39:40", - 4141 + "2021-08-23T20:34:23", + 17705 ], [ - "2022-02-21T21:26:40", - 4183 + "2021-08-24T21:32:49", + 17875 ], [ - "2022-02-25T15:39:13", - 4346 + "2021-08-28T19:11:50", + 18941 ], [ - "2022-02-27T01:44:50", - 4378 + "2021-08-29T12:02:14", + 19061 ], [ - "2022-02-28T01:51:49", - 4378 + "2021-08-31T03:01:11", + 19484 ], [ - "2022-03-02T23:33:51", - 4466 + "2021-09-01T01:34:30", + 19735 ], [ - "2022-03-03T01:50:14", - 4466 + "2021-09-02T11:26:37", + 20090 ], [ - "2022-03-04T05:18:37", - 4476 + "2021-09-03T01:30:31", + 20245 ], [ - "2022-03-06T01:44:30", - 4482 + "2021-09-04T13:35:27", + 20444 ], [ - "2022-03-08T11:13:31", - 4497 + "2021-09-06T01:30:54", + 20471 ], [ - "2022-03-09T07:35:11", - 4502 + "2021-09-07T01:30:29", + 20568 ], [ - "2022-03-10T01:51:49", - 4515 + "2021-09-12T12:45:46", + 21838 ], [ - "2022-03-11T01:51:30", - 4526 + "2021-09-15T03:11:38", + 22524 ], [ - "2022-03-12T01:42:04", - 4534 + "2021-09-18T22:10:09", + 23187 ], [ - "2022-03-13T19:08:51", - 4547 + "2021-09-19T15:32:31", + 23239 ], [ - "2022-03-14T15:10:17", - 4554 + "2021-09-20T01:35:53", + 23268 ], [ - "2022-03-15T01:49:51", - 4558 + "2021-09-21T17:53:24", + 23646 ], [ - "2022-03-16T01:45:07", - 4566 + "2021-09-23T01:37:54", + 23982 ], [ - "2022-03-17T12:36:48", - 4574 + "2021-09-24T03:14:34", + 24264 ], [ - "2022-03-19T16:59:24", - 4634 + "2021-09-25T16:30:33", + 24721 ], [ - "2022-03-20T11:59:05", - 4636 + "2021-09-26T12:23:03", + 24793 ], [ - "2022-03-21T01:44:24", - 4636 + "2021-09-27T15:31:39", + 24965 ], [ - "2022-03-22T01:55:14", - 4647 + "2021-09-29T01:26:48", + 25344 ], [ - "2022-03-23T01:55:28", - 4668 + "2021-09-30T23:05:25", + 25922 ], [ - "2022-03-24T01:48:26", - 4693 + "2021-10-01T16:05:31", + 26066 ], [ - "2022-03-26T22:36:41", - 4747 + "2021-10-03T21:24:16", + 26305 ], [ - "2022-03-27T20:21:20", - 4749 + "2021-10-05T01:32:48", + 26748 ], [ - "2022-03-30T01:54:07", - 4933 + "2021-10-06T08:19:33", + 27091 ], [ - "2022-03-31T19:42:14", - 5108 + "2021-10-07T19:01:06", + 27679 ], [ - "2022-04-01T15:16:50", - 5184 + "2021-10-09T09:11:23", + 28004 ], [ - "2022-04-02T01:51:52", - 5314 + "2021-10-10T16:38:57", + 28094 ], [ - "2022-04-04T03:28:40", - 5320 + "2021-10-12T12:32:12", + 28538 ], [ - "2022-04-06T04:08:13", - 5668 + "2021-10-13T01:33:36", + 28791 ], [ - "2022-04-07T01:53:15", - 5857 + "2021-10-16T01:43:12", + 29504 ], [ - "2022-04-09T01:50:38", - 6225 + "2021-10-17T12:27:08", + 29598 ], [ - "2022-04-10T14:05:52", - 6227 + "2021-10-21T01:43:07", + 30602 ], [ - "2022-04-11T17:59:19", - 6276 + "2021-10-24T15:47:49", + 31359 ], [ - "2022-04-18T19:21:22", - 7002 + "2021-10-25T04:54:54", + 31407 ], [ - "2022-04-22T17:35:15", - 7346 + "2021-10-26T19:08:21", + 31971 ], [ - "2022-04-23T08:58:43", - 7395 + "2021-10-27T10:52:46", + 32204 ], [ - "2022-04-24T16:22:52", - 7396 + "2021-10-28T01:27:35", + 32503 ], [ - "2022-04-26T12:16:27", - 7460 + "2021-10-29T05:01:38", + 32842 ], [ - "2022-04-28T02:47:35", - 7571 + "2021-10-30T20:34:54", + 49 ], [ - "2022-04-29T02:28:21", - 7637 + "2021-10-31T18:17:07", + 33326 ], [ - "2022-04-30T15:55:37", - 7687 + "2021-11-01T01:50:59", + 33363 ], [ - "2022-05-02T02:22:46", - 7692 + "2021-11-02T11:56:56", + 34013 ], [ - "2022-05-03T15:10:47", - 7739 + "2021-11-03T01:34:05", + 34327 ], [ - "2022-05-04T02:21:38", - 7779 + "2021-11-04T22:06:35", + 34892 ], [ - "2022-05-05T02:29:20", - 7831 + "2021-11-07T22:48:14", + 35316 ], [ - "2022-05-06T01:57:12", - 7873 + "2021-11-08T16:38:12", + 35435 ], [ - "2022-05-07T15:43:47", - 7928 + "2021-11-09T14:05:16", + 35786 ], [ - "2022-05-08T09:22:07", - 7929 + "2021-11-11T23:43:38", + 36656 ], [ - "2022-05-11T18:46:39", - 8032 + "2021-11-12T07:23:40", + 36686 ], [ - "2022-05-14T10:19:10", - 8142 + "2021-11-13T03:49:42", + 37044 ], [ - "2022-05-15T18:35:14", - 8143 + "2021-11-14T20:38:46", + 37155 ], [ - "2022-05-17T02:16:25", - 8177 + "2021-11-15T21:50:19", + 37303 ], [ - "2022-05-20T02:14:29", - 8258 + "2021-11-17T13:49:27", + 37748 ], [ - "2022-05-21T01:55:42", - 8282 + "2021-11-18T12:57:03", + 38116 ], [ - "2022-05-22T02:10:42", - 8290 + "2021-11-19T01:41:21", + 38261 ], [ - "2022-05-24T11:16:46", - 8324 + "2021-11-21T18:45:36", + 38731 ], [ - "2022-05-25T02:18:32", - 8358 + "2021-11-22T21:51:21", + 39044 ], [ - "2022-05-27T02:15:18", - 8450 + "2021-11-24T01:32:35", + 39568 ], [ - "2022-05-28T02:22:34", - 8468 + "2021-11-25T01:36:17", + 39824 ], [ - "2022-05-30T02:21:03", - 8470 + "2021-11-26T01:28:24", + 40079 ], [ - "2022-05-31T19:33:59", - 8498 + "2021-11-27T01:29:49", + 40410 ], [ - "2022-06-01T02:31:42", - 8512 + "2021-11-29T19:53:22", + 40747 ], [ - "2022-06-02T02:27:43", - 8538 + "2021-12-01T21:53:10", + 41699 ], [ - "2022-06-03T01:55:13", - 8594 + "2021-12-02T22:38:42", + 42044 ], [ - "2022-06-08T20:16:03", - 8720 + "2021-12-03T07:25:47", + 42054 ], [ - "2022-06-09T13:28:16", - 8754 + "2021-12-04T10:20:40", + 42313 ], [ - "2022-06-10T02:21:45", - 8778 + "2021-12-05T01:37:50", + 42323 ], [ - "2022-06-11T02:20:43", - 8813 + "2021-12-06T01:34:54", + 42350 ], [ - "2022-06-12T13:23:39", - 8814 + "2021-12-07T19:17:16", + 43031 ], [ - "2022-06-14T02:30:00", - 8847 + "2021-12-08T11:50:21", + 43131 ], [ - "2022-06-15T20:20:02", - 8904 + "2021-12-09T08:24:35", + 43481 ], [ - "2022-06-17T02:17:40", - 8949 + "2021-12-11T10:08:27", + 44037 ], [ - "2022-06-19T07:40:43", - 8999 + "2021-12-12T01:37:49", + 44061 ], [ - "2022-06-22T23:37:06", - 9115 + "2021-12-14T01:36:23", + 44474 ], [ - "2022-06-23T09:06:53", - 9115 + "2021-12-15T01:38:21", + 44810 ], [ - "2022-06-24T02:16:36", - 9150 + "2021-12-16T01:40:15", + 45183 ], [ - "2022-06-25T02:27:04", - 9180 + "2021-12-17T01:41:18", + 45506 ], [ - "2022-06-26T16:16:05", - 9181 + "2021-12-18T12:07:04", + 45774 ], [ - "2022-09-10T23:57:56", - 17672 + "2021-12-21T13:52:15", + 46202 ], [ - "2022-09-11T17:27:20", - 17715 + "2021-12-23T13:53:28", + 46615 ], [ - "2022-09-12T17:31:29", - 17865 + "2021-12-26T01:43:59", + 47104 ], [ - "2022-09-15T12:40:02", - 18309 + "2021-12-29T20:36:25", + 47655 ], [ - "2022-09-16T01:11:41", - 18521 + "2021-12-31T01:38:18", + 47729 ], [ - "2022-09-17T01:12:07", - 18615 + "2022-01-01T01:37:58", + 47777 ], [ - "2022-09-19T22:06:52", - 18825 + "2022-01-03T22:58:05", + 48108 ], [ - "2022-09-20T01:15:00", - 18926 + "2022-01-09T14:02:41", + 49379 ], [ - "2022-09-21T18:40:27", - 19294 + "2022-01-11T01:36:44", + 49780 ], [ - "2022-09-22T16:43:34", - 19430 + "2022-01-12T01:35:34", + 50101 ], [ - "2022-09-25T01:14:04", - 19912 + "2022-01-13T09:24:45", + 50497 ], [ - "2022-09-26T01:16:57", - 19914 + "2022-01-14T01:38:08", + 50746 ], [ - "2022-09-27T20:49:14", - 20267 + "2022-01-15T11:07:48", + 51165 ], [ - "2022-09-30T01:39:04", - 20440 + "2022-01-16T01:40:08", + 51231 ], [ - "2022-10-01T17:39:25", - 20592 + "2022-01-17T12:08:17", + 51432 ], [ - "2022-10-02T12:03:53", - 20642 + "2022-01-18T04:25:59", + 51527 ], [ - "2022-10-03T08:03:32", - 20679 + "2022-01-22T22:01:45", + 52572 ], [ - "2022-10-04T01:20:50", - 21206 + "2022-01-23T19:48:17", + 52669 ], [ - "2022-10-05T01:21:27", - 21582 + "2022-01-24T20:09:52", + 52939 ], [ - "2022-10-08T23:24:13", - 22127 + "2022-01-25T07:19:01", + 53057 ], [ - "2022-10-10T01:35:49", - 22160 + "2022-01-26T01:45:09", + 53346 ], [ - "2022-10-11T01:16:06", - 22273 + "2022-01-28T01:33:25", + 53768 ], [ - "2022-10-12T19:05:48", - 22531 + "2022-01-29T20:09:19", + 54003 ], [ - "2022-10-13T01:19:16", - 22571 + "2022-01-30T17:15:32", + 54048 ], [ - "2022-10-14T01:30:33", - 22766 + "2022-01-31T13:01:19", + 54130 ], [ - "2022-10-15T01:22:21", - 22918 + "2022-02-01T07:00:15", + 54377 ], [ - "2022-10-16T21:43:31", - 23255 + "2022-02-02T23:09:44", + 54817 ], [ - "2022-10-18T06:25:58", - 23473 + "2022-02-03T10:37:04", + 54923 ], [ - "2022-10-22T11:41:20", - 24408 + "2022-02-05T23:23:53", + 55509 ], [ - "2022-10-23T01:13:56", - 24408 + "2022-02-06T17:27:14", + 55578 ], [ - "2022-10-24T20:11:55", - 24766 + "2022-02-07T07:41:03", + 55617 ], [ - "2022-10-25T00:08:55", - 24793 + "2022-02-09T12:02:49", + 56325 ], [ - "2022-10-26T01:07:23", - 25198 + "2022-02-10T01:38:28", + 56550 ], [ - "2022-10-27T01:11:40", - 25360 + "2022-02-13T17:21:12", + 57581 ], [ - "2022-10-29T01:02:52", - 25918 + "2022-02-14T01:37:05", + 57609 ], [ - "2022-10-30T20:09:57", - 26142 + "2022-02-16T01:41:49", + 58536 ], [ - "2022-10-31T22:27:03", - 26243 + "2022-02-18T21:34:22", + 59458 ], [ - "2022-11-01T18:25:59", - 26361 + "2022-02-20T20:39:40", + 59664 ], [ - "2022-11-03T01:11:15", - 26535 + "2022-02-21T21:26:40", + 59978 ], [ - "2022-11-04T11:35:34", - 26732 + "2022-02-25T15:39:13", + 61699 ], [ - "2022-11-05T07:41:24", - 26775 + "2022-02-27T01:44:50", + 61876 ], [ - "2022-11-06T11:06:34", - 26817 + "2022-02-28T01:51:49", + 61950 ], [ - "2022-11-07T19:40:53", - 26913 + "2022-03-02T23:33:51", + 62488 ], [ - "2022-11-08T01:06:52", - 26964 + "2022-03-03T01:50:14", + 62522 ], [ - "2022-11-11T17:10:50", - 27435 + "2022-03-04T05:18:37", + 62679 ], [ - "2022-11-13T20:58:24", - 27613 + "2022-03-06T01:44:30", + 62853 ], [ - "2022-11-14T23:48:23", - 0 + "2022-03-08T11:13:31", + 63086 ], [ - "2022-11-15T07:38:22", - 27870 + "2022-03-09T07:35:11", + 63229 ], [ - "2022-11-17T09:11:40", - 28473 + "2022-03-10T01:51:49", + 63477 ], [ - "2022-11-19T22:14:34", - 28858 + "2022-03-11T01:51:30", + 63663 ], [ - "2022-11-21T23:47:48", - 29106 + "2022-03-12T01:42:04", + 63831 ], [ - "2022-11-22T01:14:59", - 29117 + "2022-03-13T19:08:51", + 63964 ], [ - "2022-11-23T23:28:30", - 29307 + "2022-03-14T15:10:17", + 64073 ], [ - "2022-11-26T01:00:47", - 29407 + "2022-03-15T01:49:51", + 64158 ], [ - "2022-11-28T01:02:53", - 29424 + "2022-03-16T01:45:07", + 64395 ], [ - "2022-12-07T07:19:55", - 30367 + "2022-03-17T12:36:48", + 64656 ], [ - "2022-12-18T20:23:59", - 32057 + "2022-03-19T16:59:24", + 65041 ], [ - "2022-12-19T18:26:59", - 32350 + "2022-03-20T11:59:05", + 65090 ], [ - "2022-12-20T16:08:58", - 32526 + "2022-03-21T01:44:24", + 65136 ], [ - "2022-12-21T23:23:24", - 32765 + "2022-03-22T01:55:14", + 65360 ], [ - "2022-12-22T22:59:06", - 32907 + "2022-03-23T01:55:28", + 65689 ], [ - "2022-12-24T20:01:35", - 32943 + "2022-03-24T01:48:26", + 65969 ], [ - "2022-12-25T21:13:52", - 33040 + "2022-03-26T22:36:41", + 66689 ], [ - "2022-12-26T19:30:31", - 33337 + "2022-03-27T20:21:20", + 66839 ], [ - "2022-12-27T23:56:39", - 33479 + "2022-03-30T01:54:07", + 67716 ], [ - "2022-12-29T20:55:31", - 33705 + "2022-03-31T19:42:14", + 68222 ], [ - "2022-12-30T20:56:36", - 33756 + "2022-04-01T15:16:50", + 68500 ], [ - "2022-12-31T08:10:29", - 33760 + "2022-04-02T01:51:52", + 68691 ], [ - "2023-01-01T23:58:03", - 33900 + "2022-04-04T03:28:40", + 68821 ], [ - "2023-01-02T23:32:43", - 33969 + "2022-04-06T04:08:13", + 69623 ], [ - "2023-01-04T01:14:45", - 34253 + "2022-04-07T01:53:15", + 69805 ], [ - "2023-01-05T00:40:47", - 34525 + "2022-04-09T01:50:38", + 70210 ], [ - "2023-01-06T15:27:19", - 34898 + "2022-04-10T14:05:52", + 70383 ], [ - "2023-01-07T23:05:20", - 35001 + "2022-04-11T17:59:19", + 70483 ], [ - "2023-01-09T23:13:18", - 37122 + "2022-04-18T19:21:22", + 71140 ], [ - "2023-01-10T22:19:22", - 37363 + "2022-04-22T17:35:15", + 71570 ], [ - "2023-01-11T20:38:34", - 37589 + "2022-04-23T08:58:43", + 71623 ], [ - "2023-01-12T19:14:41", - 37752 + "2022-04-24T16:22:52", + 71708 ], [ - "2023-01-14T22:19:17", - 38021 + "2022-04-26T12:16:27", + 71855 ], [ - "2023-01-15T05:54:49", - 38085 + "2022-04-28T02:47:35", + 72050 ], [ - "2023-01-16T01:07:20", - 38341 + "2022-04-29T02:28:21", + 72170 ], [ - "2023-01-18T01:10:41", - 39502 + "2022-04-30T15:55:37", + 72372 ], [ - "2023-01-19T01:11:47", - 39748 + "2022-05-02T02:22:46", + 72462 ], [ - "2023-01-20T01:07:56", - 39955 + "2022-05-03T15:10:47", + 72667 ], [ - "2023-01-21T01:11:30", - 40172 + "2022-05-04T02:21:38", + 72787 ], [ - "2023-01-22T23:52:22", - 40330 + "2022-05-05T02:29:20", + 72920 ], [ - "2023-01-24T01:13:09", - 40628 + "2022-05-06T01:57:12", + 73064 ], [ - "2023-01-25T01:09:15", - 40791 + "2022-05-07T15:43:47", + 73223 ], [ - "2023-01-27T01:08:47", - 41965 + "2022-05-08T09:22:07", + 73265 ], [ - "2023-01-28T23:00:24", - 42833 + "2022-05-11T18:46:39", + 73702 ], [ - "2023-01-29T11:12:53", - 43282 + "2022-05-14T10:19:10", + 74039 ], [ - "2023-01-31T09:09:55", - 43814 + "2022-05-15T18:35:14", + 74129 ], [ - "2023-02-04T01:08:11", - 44147 + "2022-05-17T02:16:25", + 74294 ], [ - "2023-02-05T19:16:16", - 44373 + "2022-05-20T02:14:29", + 74816 ], [ - "2023-02-06T01:06:21", - 44378 + "2022-05-21T01:55:42", + 74934 ], [ - "2023-02-07T01:06:44", - 44448 + "2022-05-22T02:10:42", + 74995 ], [ - "2023-02-08T19:33:17", - 44537 + "2022-05-24T11:16:46", + 75198 ], [ - "2023-02-16T01:07:41", - 45239 + "2022-05-25T02:18:32", + 75352 ], [ - "2023-02-17T20:09:45", - 45376 + "2022-05-27T02:15:18", + 75831 ], [ - "2023-02-19T16:48:31", - 45571 + "2022-05-28T02:22:34", + 75968 ], [ - "2023-02-22T01:09:24", - 45753 + "2022-05-30T02:21:03", + 76122 ], [ - "2023-02-25T18:11:10", - 46412 + "2022-05-31T19:33:59", + 76452 ], [ - "2023-02-26T01:20:44", - 46460 + "2022-06-01T02:31:42", + 76526 ], [ - "2023-02-27T01:05:31", - 46524 + "2022-06-02T02:27:43", + 76759 ], [ - "2023-02-28T01:12:07", - 46611 + "2022-06-03T01:55:13", + 76983 ], [ - "2023-03-01T01:11:53", - 46672 + "2022-06-08T20:16:03", + 77578 ], [ - "2023-03-02T01:11:37", - 46726 + "2022-06-09T13:28:16", + 77681 ], [ - "2023-03-04T19:06:27", - 46836 + "2022-06-10T02:21:45", + 77767 ], [ - "2023-03-05T21:22:00", - 46863 + "2022-06-11T02:20:43", + 77884 ], [ - "2023-03-06T18:58:36", - 46936 + "2022-06-12T13:23:39", + 77970 ], [ - "2023-03-07T22:04:26", - 46970 + "2022-06-14T02:30:00", + 78112 ], [ - "2023-03-11T18:55:05", - 47133 + "2022-06-15T20:20:02", + 78454 ], [ - "2023-03-13T01:08:17", - 47173 + "2022-06-17T02:17:40", + 78649 ], [ - "2023-03-16T01:14:43", - 47333 + "2022-06-19T07:40:43", + 78843 ], [ - "2023-03-25T20:41:27", - 47693 + "2022-06-22T23:37:06", + 79499 ], [ - "2023-03-26T18:35:58", - 47711 + "2022-06-23T09:06:53", + 79574 ], [ - "2023-03-27T19:04:51", - 47757 + "2022-06-24T02:16:36", + 79688 ], [ - "2023-03-28T14:20:40", - 47825 + "2022-06-25T02:27:04", + 79813 ], [ - "2023-03-29T01:10:08", - 47867 + "2022-06-26T16:16:05", + 79953 ], [ - "2023-03-30T01:06:23", - 47908 + "2022-09-10T23:57:56", + 91096 ], [ - "2023-04-01T16:38:16", - 48010 + "2022-09-11T17:27:20", + 91163 ], [ - "2023-04-02T18:16:54", - 48030 + "2022-09-12T17:31:29", + 91310 ], [ - "2023-04-03T20:17:29", - 48063 - ] - ], - "python": [ + "2022-09-15T12:40:02", + 91736 + ], [ - "2021-07-26T20:10:04", - 12114 + "2022-09-16T01:11:41", + 91842 ], [ - "2021-07-28T01:29:28", - 12392 + "2022-09-17T01:12:07", + 92004 ], [ - "2021-07-29T01:25:08", - 12554 + "2022-09-19T22:06:52", + 92313 ], [ - "2021-07-30T02:45:47", - 12647 + "2022-09-20T01:15:00", + 92344 ], [ - "2021-07-31T02:55:52", - 12754 + "2022-09-21T18:40:27", + 92650 ], [ - "2021-08-01T01:34:33", - 12781 + "2022-09-22T16:43:34", + 92776 ], [ - "2021-08-02T01:25:51", - 12831 + "2022-09-25T01:14:04", + 92991 ], [ - "2021-08-03T01:34:04", - 13033 + "2022-09-26T01:16:57", + 93082 ], [ - "2021-08-04T01:25:42", - 13261 + "2022-09-27T20:49:14", + 93430 ], [ - "2021-08-05T13:16:40", - 13489 + "2022-09-30T01:39:04", + 93834 ], [ - "2021-08-06T10:08:44", - 13664 + "2022-10-01T17:39:25", + 93997 ], [ - "2021-08-07T01:23:20", - 13846 + "2022-10-02T12:03:53", + 94057 ], [ - "2021-08-08T17:46:20", - 13935 + "2022-10-03T08:03:32", + 94157 ], [ - "2021-08-09T12:57:30", - 13981 + "2022-10-04T01:20:50", + 94302 ], [ - "2021-08-10T18:15:58", - 14214 + "2022-10-05T01:21:27", + 94448 ], [ - "2021-08-11T19:45:43", - 14545 + "2022-10-08T23:24:13", + 94905 ], [ - "2021-08-12T16:45:06", - 14755 + "2022-10-10T01:35:49", + 94984 ], [ - "2021-08-13T01:26:41", - 14874 + "2022-10-11T01:16:06", + 95107 ], [ - "2021-08-14T08:26:41", - 15073 + "2022-10-12T19:05:48", + 95413 ], [ - "2021-08-15T21:37:16", - 15148 + "2022-10-13T01:19:16", + 95449 ], [ - "2021-08-17T01:22:18", - 15350 + "2022-10-14T01:30:33", + 95651 ], [ - "2021-08-18T01:24:15", - 15695 + "2022-10-15T01:22:21", + 95780 ], [ - "2021-08-19T22:44:18", - 16060 + "2022-10-16T21:43:31", + 95888 ], [ - "2021-08-20T16:03:59", - 16230 + "2022-10-18T06:25:58", + 96074 ], [ - "2021-08-21T12:36:04", - 16461 + "2022-10-22T11:41:20", + 96615 ], [ - "2021-08-22T01:21:13", - 16489 + "2022-10-23T01:13:56", + 96659 ], [ - "2021-08-23T20:34:23", - 16769 + "2022-10-24T20:11:55", + 96893 ], [ - "2021-08-24T21:32:49", - 17102 + "2022-10-25T00:08:55", + 96905 ], [ - "2021-08-28T19:11:50", - 17673 + "2022-10-26T01:07:23", + 97069 ], [ - "2021-08-29T12:02:14", - 17813 + "2022-10-27T01:11:40", + 97192 ], [ - "2021-08-31T03:01:11", - 17950 + "2022-10-29T01:02:52", + 97482 ], [ - "2021-09-01T01:34:30", - 18097 + "2022-10-30T20:09:57", + 97617 ], [ - "2021-09-02T11:26:37", - 18385 + "2022-10-31T22:27:03", + 97760 ], [ - "2021-09-03T01:30:31", - 18498 + "2022-11-01T18:25:59", + 97865 ], [ - "2021-09-04T13:35:27", - 18586 + "2022-11-03T01:11:15", + 98038 ], [ - "2021-09-06T01:30:54", - 18619 + "2022-11-04T11:35:34", + 98225 ], [ - "2021-09-07T01:30:29", - 18663 + "2022-11-05T07:41:24", + 98315 ], [ - "2021-09-12T12:45:46", - 19323 + "2022-11-06T11:06:34", + 98404 ], [ - "2021-09-15T03:11:38", - 19752 + "2022-11-07T19:40:53", + 98606 ], [ - "2021-09-18T22:10:09", - 20215 + "2022-11-08T01:06:52", + 98638 ], [ - "2021-09-19T15:32:31", - 20290 + "2022-11-11T17:10:50", + 99194 ], [ - "2021-09-20T01:35:53", - 20322 + "2022-11-13T20:58:24", + 99324 ], [ - "2021-09-21T17:53:24", - 20479 + "2022-11-14T23:48:23", + 0 ], [ - "2021-09-23T01:37:54", - 20838 + "2022-11-15T07:38:22", + 99459 ], [ - "2021-09-24T03:14:34", - 20957 + "2022-11-17T09:11:40", + 99800 ], [ - "2021-09-25T16:30:33", - 21082 + "2022-11-19T22:14:34", + 100086 ], [ - "2021-09-26T12:23:03", - 21118 + "2022-11-21T23:47:48", + 100316 ], [ - "2021-09-27T15:31:39", - 21278 + "2022-11-22T01:14:59", + 100336 ], [ - "2021-09-29T01:26:48", - 21465 + "2022-11-23T23:28:30", + 100602 ], [ - "2021-09-30T23:05:25", - 21750 + "2022-11-26T01:00:47", + 100835 ], [ - "2021-10-01T16:05:31", - 21808 + "2022-11-28T01:02:53", + 100940 ], [ - "2021-10-03T21:24:16", - 21957 + "2022-12-07T07:19:55", + 102236 ], [ - "2021-10-05T01:32:48", - 22052 + "2022-12-18T20:23:59", + 103317 ], [ - "2021-10-06T08:19:33", - 22135 + "2022-12-19T18:26:59", + 103409 ], [ - "2021-10-07T19:01:06", - 22351 + "2022-12-20T16:08:58", + 103521 ], [ - "2021-10-09T09:11:23", - 22455 + "2022-12-21T23:23:24", + 103702 ], [ - "2021-10-10T16:38:57", - 22538 + "2022-12-22T22:59:06", + 103812 ], [ - "2021-10-12T12:32:12", - 22694 + "2022-12-24T20:01:35", + 103911 ], [ - "2021-10-13T01:33:36", - 22764 + "2022-12-25T21:13:52", + 103944 ], [ - "2021-10-16T01:43:12", - 22948 + "2022-12-26T19:56:00", + 103996 ], [ - "2021-10-17T12:27:08", - 22990 + "2022-12-27T23:56:39", + 104061 ], [ - "2021-10-21T01:43:07", - 23368 + "2022-12-29T20:55:31", + 104201 ], [ - "2021-10-24T15:47:49", - 23763 + "2022-12-30T20:56:36", + 104253 ], [ - "2021-10-25T04:54:54", - 23787 + "2022-12-31T08:10:29", + 104269 ], [ - "2021-10-26T19:08:21", - 24038 + "2023-01-01T23:58:03", + 104318 ], [ - "2021-10-27T10:52:46", - 24169 + "2023-01-02T23:32:43", + 104357 ], [ - "2021-10-28T01:27:35", - 24297 + "2023-01-04T01:14:45", + 104464 ], [ - "2021-10-29T05:01:38", - 24528 + "2023-01-05T00:40:47", + 104610 ], [ - "2021-10-30T20:34:54", - 192 + "2023-01-06T15:27:19", + 104770 ], [ - "2021-10-31T18:17:07", - 25160 + "2023-01-07T23:05:20", + 104842 ], [ - "2021-11-01T01:50:59", - 25257 + "2023-01-09T23:13:18", + 105028 ], [ - "2021-11-02T11:56:56", - 25463 + "2023-01-10T22:19:22", + 105147 ], [ - "2021-11-03T01:34:05", - 25673 + "2023-01-11T20:38:34", + 105286 ], [ - "2021-11-04T22:06:35", - 26146 + "2023-01-12T19:14:41", + 105405 ], [ - "2021-11-07T22:48:14", - 26596 + "2023-01-14T22:19:17", + 105563 ], [ - "2021-11-08T16:38:12", - 26831 + "2023-01-15T05:54:49", + 105574 ], [ - "2021-11-09T14:05:16", - 27110 + "2023-01-16T01:07:20", + 105598 ], [ - "2021-11-11T23:43:38", - 27794 + "2023-01-18T01:10:41", + 105847 ], [ - "2021-11-12T07:23:40", - 27867 + "2023-01-19T01:11:47", + 105946 ], [ - "2021-11-13T03:49:42", - 28008 + "2023-01-20T01:07:56", + 106065 ], [ - "2021-11-14T20:38:46", - 28165 + "2023-01-21T01:11:30", + 106175 ], [ - "2021-11-15T21:50:19", - 28379 + "2023-01-22T23:52:22", + 106229 ], [ - "2021-11-17T13:49:27", - 28791 + "2023-01-24T01:13:09", + 106357 ], [ - "2021-11-18T12:57:03", - 29203 + "2023-01-25T01:09:15", + 106509 ], [ - "2021-11-19T01:41:21", - 29337 + "2023-01-27T01:08:47", + 106722 ], [ - "2021-11-21T18:45:36", - 29714 + "2023-01-28T23:00:24", + 106843 ], [ - "2021-11-22T21:51:21", - 30003 + "2023-01-29T11:12:53", + 106865 ], [ - "2021-11-24T01:32:35", - 30265 + "2023-01-31T09:09:55", + 107040 ], [ - "2021-11-25T01:36:17", - 30523 + "2023-02-04T01:08:11", + 107491 ], [ - "2021-11-26T01:28:24", - 30727 + "2023-02-05T19:16:16", + 107581 ], [ - "2021-11-27T01:29:49", - 30957 + "2023-02-06T01:06:21", + 107618 ], [ - "2021-11-29T19:53:22", - 31359 + "2023-02-07T01:06:44", + 107771 ], [ - "2021-12-01T21:53:10", - 32018 + "2023-02-08T19:33:17", + 108040 ], [ - "2021-12-02T22:38:42", - 32322 + "2023-02-16T01:07:41", + 108751 ], [ - "2021-12-03T07:25:47", - 32420 + "2023-02-17T20:09:45", + 108963 ], [ - "2021-12-04T10:20:40", - 32672 + "2023-02-19T16:48:31", + 109068 ], [ - "2021-12-05T01:37:50", - 32768 + "2023-02-22T01:09:24", + 109313 ], [ - "2021-12-06T01:34:54", - 32904 + "2023-02-25T18:11:10", + 109711 ], [ - "2021-12-07T19:17:16", - 33401 + "2023-02-26T01:20:44", + 109737 ], [ - "2021-12-08T11:50:21", - 33547 + "2023-02-27T01:05:31", + 109807 ], [ - "2021-12-09T08:24:35", - 33874 + "2023-02-28T01:12:07", + 109950 ], [ - "2021-12-11T10:08:27", - 34553 + "2023-03-01T01:11:53", + 110099 ], [ - "2021-12-12T01:37:49", - 34662 + "2023-03-02T01:11:37", + 110224 ], [ - "2021-12-14T01:36:23", - 35219 + "2023-03-04T19:06:27", + 110508 ], [ - "2021-12-15T01:38:21", - 35552 + "2023-03-05T21:22:00", + 110601 ], [ - "2021-12-16T01:40:15", - 35947 + "2023-03-06T18:58:36", + 110737 ], [ - "2021-12-17T01:41:18", - 36319 + "2023-03-07T22:04:26", + 110922 ], [ - "2021-12-18T12:07:04", - 36713 + "2023-03-11T18:55:05", + 111484 ], [ - "2021-12-21T13:52:15", - 37511 + "2023-03-13T01:08:17", + 111584 ], [ - "2021-12-23T13:53:28", - 38213 + "2023-03-16T01:14:43", + 112074 ], [ - "2021-12-26T01:43:59", - 38727 + "2023-03-25T20:41:27", + 113754 ], [ - "2021-12-29T20:36:25", - 39878 + "2023-03-26T18:35:58", + 113830 ], [ - "2021-12-31T01:38:18", - 40296 + "2023-03-27T19:04:51", + 114009 ], [ - "2022-01-01T01:37:58", - 40473 + "2023-03-28T14:20:40", + 114144 ], [ - "2022-01-03T22:58:05", - 41051 + "2023-03-29T01:10:08", + 114204 ], [ - "2022-01-09T14:02:41", - 42764 + "2023-03-30T01:06:23", + 114382 ], [ - "2022-01-11T01:36:44", - 43267 + "2023-04-01T16:38:16", + 114733 ], [ - "2022-01-12T01:35:34", - 43757 + "2023-04-02T18:16:54", + 114806 ], [ - "2022-01-13T09:24:45", - 44388 + "2023-04-03T20:17:29", + 114977 ], [ - "2022-01-14T01:38:08", - 44713 + "2023-04-04T01:00:44", + 114999 ], [ - "2022-01-15T11:07:48", - 45182 + "2023-04-05T01:02:44", + 115116 ], [ - "2022-01-16T01:40:08", - 45286 + "2023-04-06T01:02:10", + 115198 ], [ - "2022-01-17T12:08:17", - 45652 + "2023-04-10T19:39:37", + 115597 ], [ - "2022-01-18T04:25:59", - 45901 + "2023-04-11T18:04:56", + 115680 ], [ - "2022-01-22T22:01:45", - 48238 + "2023-04-12T19:58:02", + 115837 ], [ - "2022-01-23T19:48:17", - 48456 + "2023-04-15T13:28:28", + 116179 ], [ - "2022-01-24T20:09:52", - 49015 + "2023-04-16T20:56:34", + 116246 ], [ - "2022-01-25T07:19:01", - 49123 + "2023-04-20T09:00:09", + 116628 ], [ - "2022-01-26T01:45:09", - 49529 + "2023-04-22T18:08:18", + 116879 ], [ - "2022-01-28T01:33:25", - 50460 + "2023-04-23T08:46:30", + 116906 ], [ - "2022-01-29T20:09:19", - 51015 + "2023-04-24T10:35:05", + 116984 ], [ - "2022-01-30T17:15:32", - 51375 + "2023-04-25T13:22:38", + 117126 ], [ - "2022-01-31T13:01:19", - 51789 + "2023-04-26T01:05:21", + 117202 ], [ - "2022-02-01T07:00:15", - 52049 + "2023-04-29T09:13:18", + 117528 ], [ - "2022-02-02T23:09:44", - 52890 + "2023-04-30T23:37:21", + 117596 ], [ - "2022-02-03T10:37:04", - 53123 + "2023-05-01T12:30:40", + 117623 ], [ - "2022-02-05T23:23:53", - 53939 + "2023-05-02T01:03:19", + 117682 ], [ - "2022-02-06T17:27:14", - 54165 + "2023-05-12T22:08:47", + 118821 ], [ - "2022-02-07T07:41:03", - 54266 + "2023-05-13T20:23:06", + 118907 ], [ - "2022-02-09T12:02:49", - 55460 + "2023-05-14T19:54:23", + 118965 ], [ - "2022-02-10T01:38:28", - 55763 + "2023-05-17T23:06:02", + 119365 ], [ - "2022-02-13T17:21:12", - 56972 + "2023-05-18T18:05:13", + 119481 ], [ - "2022-02-14T01:37:05", - 57018 + "2023-05-19T18:27:46", + 119605 ], [ - "2022-02-16T01:41:49", - 58016 + "2023-05-20T06:58:27", + 119649 ], [ - "2022-02-18T21:34:22", - 59453 + "2023-05-21T17:54:05", + 119746 ], [ - "2022-02-20T20:39:40", - 59921 + "2023-05-22T19:05:24", + 119861 ], [ - "2022-02-21T21:26:40", - 60302 + "2023-05-23T01:07:57", + 119886 ], [ - "2022-02-25T15:39:13", - 61802 + "2023-05-24T01:14:32", + 120045 ], [ - "2022-02-27T01:44:50", - 62111 + "2023-05-26T01:11:00", + 120330 ], [ - "2022-02-28T01:51:49", - 62256 + "2023-05-27T17:04:12", + 120494 ], [ - "2022-03-02T23:33:51", - 63202 + "2023-05-28T17:03:24", + 120553 ], [ - "2022-03-03T01:50:14", - 63222 + "2023-05-29T11:13:08", + 120588 ], [ - "2022-03-04T05:18:37", - 63446 + "2023-05-31T23:48:39", + 120936 ], [ - "2022-03-06T01:44:30", - 63741 + "2023-06-01T01:25:18", + 120955 ], [ - "2022-03-08T11:13:31", - 64105 + "2023-06-02T01:10:33", + 121071 ], [ - "2022-03-09T07:35:11", - 64274 + "2023-06-03T09:59:50", + 121214 ], [ - "2022-03-10T01:51:49", - 64388 + "2023-06-04T01:13:43", + 121249 ], [ - "2022-03-11T01:51:30", - 64515 + "2023-06-05T01:08:28", + 121309 ], [ - "2022-03-12T01:42:04", - 64668 + "2023-06-07T01:10:00", + 121707 ], [ - "2022-03-13T19:08:51", - 64753 + "2023-06-08T05:19:18", + 121904 ], [ - "2022-03-14T15:10:17", - 64841 + "2023-06-11T18:48:09", + 122298 ], [ - "2022-03-15T01:49:51", - 64907 + "2023-06-12T01:16:15", + 122329 ], [ - "2022-03-16T01:45:07", - 65108 + "2023-06-13T01:11:33", + 122526 ], [ - "2022-03-17T12:36:48", - 65286 + "2023-06-17T01:09:24", + 123348 ], [ - "2022-03-19T16:59:24", - 65509 + "2023-06-21T05:26:13", + 123866 ], [ - "2022-03-20T11:59:05", - 65551 + "2023-06-23T01:12:21", + 124267 ], [ - "2022-03-21T01:44:24", - 65571 + "2023-06-24T01:13:03", + 124501 ], [ - "2022-03-22T01:55:14", - 65686 + "2023-06-25T01:19:08", + 124559 ], [ - "2022-03-23T01:55:28", - 65834 + "2023-07-02T01:17:57", + 125975 ], [ - "2022-03-24T01:48:26", - 65983 + "2023-07-05T04:19:03", + 126405 ], [ - "2022-03-26T22:36:41", - 66332 + "2023-07-06T01:13:59", + 126628 ], [ - "2022-03-27T20:21:20", - 66473 + "2023-07-07T01:22:59", + 126827 ], [ - "2022-03-30T01:54:07", - 66896 + "2023-07-09T01:17:28", + 127130 ], [ - "2022-03-31T19:42:14", - 67239 + "2023-07-10T12:35:57", + 127358 ], [ - "2022-04-01T15:16:50", - 67412 + "2023-07-11T18:04:48", + 127681 ], [ - "2022-04-02T01:51:52", - 67461 + "2023-07-13T01:16:23", + 127977 ], [ - "2022-04-04T03:28:40", - 67546 + "2023-07-14T18:55:34", + 128391 ], [ - "2022-04-06T04:08:13", - 67808 + "2023-07-15T14:49:24", + 128461 ], [ - "2022-04-07T01:53:15", - 67968 + "2023-07-17T01:18:56", + 128530 ], [ - "2022-04-09T01:50:38", - 68244 + "2023-07-23T01:13:49", + 129754 ], [ - "2022-04-10T14:05:52", - 68326 + "2023-07-24T12:19:15", + 129938 ], [ - "2022-04-11T17:59:19", - 68472 + "2023-07-25T10:15:45", + 130154 ], [ - "2022-04-18T19:21:22", - 69692 + "2023-07-26T21:02:52", + 130593 ], [ - "2022-04-22T17:35:15", - 70553 + "2023-08-03T19:41:39", + 132297 ], [ - "2022-04-23T08:58:43", - 70640 + "2023-08-06T01:17:07", + 132549 ], [ - "2022-04-24T16:22:52", - 70726 + "2023-08-07T14:09:58", + 132712 ], [ - "2022-04-26T12:16:27", - 71175 + "2023-08-09T21:27:06", + 133184 ], [ - "2022-04-28T02:47:35", - 71693 + "2023-08-10T00:37:45", + 133189 ], [ - "2022-04-29T02:28:21", - 71943 + "2023-08-11T00:59:39", + 133435 ], [ - "2022-04-30T15:55:37", - 72194 + "2023-08-14T01:07:10", + 133831 ], [ - "2022-05-02T02:22:46", - 72313 + "2023-08-20T10:19:30", + 134997 ], [ - "2022-05-03T15:10:47", - 72693 + "2023-08-21T01:02:38", + 135033 ], [ - "2022-05-04T02:21:38", - 72892 + "2023-08-22T05:14:32", + 135320 ], [ - "2022-05-05T02:29:20", - 73174 + "2023-08-23T01:09:12", + 135474 ], [ - "2022-05-06T01:57:12", - 73350 + "2023-08-24T08:23:46", + 135736 ], [ - "2022-05-07T15:43:47", - 73524 + "2023-08-25T01:09:33", + 135941 ], [ - "2022-05-08T09:22:07", - 73563 + "2023-08-26T15:48:29", + 136162 ], [ - "2022-05-11T18:46:39", - 74431 + "2023-09-01T01:00:53", + 137229 ], [ - "2022-05-14T10:19:10", - 74966 + "2023-09-02T06:53:40", + 137446 ], [ - "2022-05-15T18:35:14", - 75025 + "2023-09-03T17:23:10", + 137545 ], [ - "2022-05-17T02:16:25", - 75288 + "2023-09-04T01:14:42", + 137557 ], [ - "2022-05-20T02:14:29", - 76045 + "2023-09-06T09:29:05", + 138091 ], [ - "2022-05-21T01:55:42", - 76141 + "2023-09-08T01:01:21", + 138553 ], [ - "2022-05-22T02:10:42", - 76169 + "2023-09-17T18:42:04", + 140227 ], [ - "2022-05-24T11:16:46", - 76570 + "2023-09-18T07:24:56", + 140283 ], [ - "2022-05-25T02:18:32", - 76775 + "2023-09-19T01:04:12", + 140483 ], [ - "2022-05-27T02:15:18", - 77367 + "2023-09-20T15:31:08", + 141017 ], [ - "2022-05-28T02:22:34", - 77616 + "2023-09-21T01:10:04", + 141056 ], [ - "2022-05-30T02:21:03", - 77735 + "2023-09-22T16:54:09", + 141520 ], [ - "2022-05-31T19:33:59", - 78055 + "2023-09-24T01:09:47", + 141636 ], [ - "2022-06-01T02:31:42", - 78128 + "2023-09-26T01:03:52", + 142022 ], [ - "2022-06-02T02:27:43", - 78363 + "2023-09-28T01:03:35", + 142441 ], [ - "2022-06-03T01:55:13", - 78667 + "2023-10-02T10:16:34", + 142964 ], [ - "2022-06-08T20:16:03", - 79795 + "2023-10-11T01:02:27", + 144841 ], [ - "2022-06-09T13:28:16", - 79968 + "2023-10-12T07:12:13", + 145097 ], [ - "2022-06-10T02:21:45", - 80151 + "2023-10-15T18:35:06", + 145594 ], [ - "2022-06-11T02:20:43", - 80314 + "2023-10-16T01:12:02", + 145602 ], [ - "2022-06-12T13:23:39", - 80361 + "2023-10-17T01:19:48", + 145844 ], [ - "2022-06-14T02:30:00", - 80699 + "2023-10-18T09:54:25", + 146136 ], [ - "2022-06-15T20:20:02", - 81237 + "2023-10-19T05:13:12", + 146360 ], [ - "2022-06-17T02:17:40", - 81585 + "2023-10-20T21:26:06", + 146985 ], [ - "2022-06-19T07:40:43", - 81804 + "2023-10-21T07:20:54", + 147009 ], [ - "2022-06-22T23:37:06", - 82519 + "2023-10-22T21:40:43", + 147141 ], [ - "2022-06-23T09:06:53", - 82603 + "2023-10-24T01:08:57", + 147358 ], [ - "2022-06-24T02:16:36", - 82833 + "2023-10-25T03:48:19", + 147766 ], [ - "2022-06-25T02:27:04", - 82998 + "2023-10-28T17:16:00", + 148561 ], [ - "2022-06-26T16:16:05", - 83123 + "2023-10-29T10:04:35", + 148604 ], [ - "2022-09-10T23:57:56", - 100871 + "2023-10-30T01:06:23", + 148643 ], [ - "2022-09-11T17:27:20", - 100978 + "2023-10-31T01:15:37", + 149016 ], [ - "2022-09-12T17:31:29", - 101217 + "2023-11-01T12:58:49", + 149538 ], [ - "2022-09-15T12:40:02", - 102297 + "2023-11-03T22:34:05", + 150270 ], [ - "2022-09-16T01:11:41", - 102537 + "2023-11-04T17:14:00", + 150328 ], [ - "2022-09-17T01:12:07", - 102754 + "2023-11-05T18:48:33", + 150416 ], [ - "2022-09-19T22:06:52", - 103169 + "2023-11-06T22:30:41", + 150826 ], [ - "2022-09-20T01:15:00", - 103274 + "2023-11-07T22:42:00", + 151158 ], [ - "2022-09-21T18:40:27", - 103841 + "2023-11-08T22:22:32", + 151428 ], [ - "2022-09-22T16:43:34", - 104225 + "2023-11-09T22:42:59", + 151727 ], [ - "2022-09-25T01:14:04", - 104862 + "2023-11-10T22:40:09", + 151914 ], [ - "2022-09-26T01:16:57", - 104938 - ], + "2023-11-11T22:37:19", + 151977 + ] + ], + "javascript": [ [ - "2022-09-27T20:49:14", - 106119 + "2021-07-26T20:10:04", + 22186 ], [ - "2022-09-30T01:39:04", - 107276 + "2021-07-28T01:29:28", + 22489 ], [ - "2022-10-01T17:39:25", - 107616 + "2021-07-29T01:25:08", + 22726 ], [ - "2022-10-02T12:03:53", - 107693 + "2021-07-30T02:45:47", + 22966 ], [ - "2022-10-03T08:03:32", - 107854 + "2021-07-31T02:55:52", + 23073 ], [ - "2022-10-04T01:20:50", - 108270 + "2021-08-01T01:34:33", + 23126 ], [ - "2022-10-05T01:21:27", - 108637 + "2021-08-02T01:25:51", + 23171 ], [ - "2022-10-08T23:24:13", - 109921 + "2021-08-03T01:34:04", + 23423 ], [ - "2022-10-10T01:35:49", - 109971 + "2021-08-04T01:25:42", + 23682 ], [ - "2022-10-11T01:16:06", - 110310 + "2021-08-05T13:16:40", + 24035 ], [ - "2022-10-12T19:05:48", - 111094 + "2021-08-06T10:08:44", + 24293 ], [ - "2022-10-13T01:19:16", - 111351 + "2021-08-07T01:23:20", + 24500 ], [ - "2022-10-14T01:30:33", - 111957 + "2021-08-08T17:46:20", + 24648 ], [ - "2022-10-15T01:22:21", - 112331 + "2021-08-09T12:57:30", + 24954 ], [ - "2022-10-16T21:43:31", - 112450 + "2021-08-10T18:15:58", + 25371 ], [ - "2022-10-18T06:25:58", - 112995 + "2021-08-11T19:45:43", + 25862 ], [ - "2022-10-22T11:41:20", - 114727 + "2021-08-12T16:45:06", + 26124 ], [ - "2022-10-23T01:13:56", - 114775 + "2021-08-13T01:26:41", + 26247 ], [ - "2022-10-24T20:11:55", - 115322 + "2021-08-14T08:26:41", + 26556 ], [ - "2022-10-25T00:08:55", - 115408 + "2021-08-15T21:37:16", + 26672 ], [ - "2022-10-26T01:07:23", - 116029 + "2021-08-17T01:22:18", + 27060 ], [ - "2022-10-27T01:11:40", - 116590 + "2021-08-18T01:24:15", + 27345 ], [ - "2022-10-29T01:02:52", - 117610 + "2021-08-19T22:44:18", + 27852 ], [ - "2022-10-30T20:09:57", - 117840 + "2021-08-20T16:03:59", + 28063 ], [ - "2022-10-31T22:27:03", - 118339 + "2021-08-21T12:36:04", + 28236 ], [ - "2022-11-01T18:25:59", - 118704 + "2021-08-22T01:21:13", + 28305 ], [ - "2022-11-03T01:11:15", - 119324 + "2021-08-23T20:34:23", + 28813 ], [ - "2022-11-04T11:35:34", - 119914 + "2021-08-24T21:32:49", + 29200 ], [ - "2022-11-05T07:41:24", - 120143 + "2021-08-28T19:11:50", + 30375 ], [ - "2022-11-06T11:06:34", - 120251 + "2021-08-29T12:02:14", + 30603 ], [ - "2022-11-07T19:40:53", - 120812 + "2021-08-31T03:01:11", + 31187 ], [ - "2022-11-08T01:06:52", - 120981 + "2021-09-01T01:34:30", + 31611 ], [ - "2022-11-11T17:10:50", - 123012 + "2021-09-02T11:26:37", + 32340 ], [ - "2022-11-13T20:58:24", - 123572 + "2021-09-03T01:30:31", + 32577 ], [ - "2022-11-14T23:48:23", - 0 + "2021-09-04T13:35:27", + 32944 ], [ - "2022-11-15T07:38:22", - 124242 + "2021-09-06T01:30:54", + 33151 ], [ - "2022-11-17T09:11:40", - 125561 + "2021-09-07T01:30:29", + 33597 ], [ - "2022-11-19T22:14:34", - 126647 + "2021-09-12T12:45:46", + 35177 ], [ - "2022-11-21T23:47:48", - 127228 + "2021-09-15T03:11:38", + 36119 ], [ - "2022-11-22T01:14:59", - 127278 + "2021-09-18T22:10:09", + 37239 ], [ - "2022-11-23T23:28:30", - 128217 + "2021-09-19T15:32:31", + 37335 ], [ - "2022-11-26T01:00:47", - 128828 + "2021-09-20T01:35:53", + 37401 ], [ - "2022-11-28T01:02:53", - 129131 + "2021-09-21T17:53:24", + 38026 ], [ - "2022-12-07T07:19:55", - 133802 + "2021-09-23T01:37:54", + 38757 ], [ - "2022-12-18T20:23:59", - 138864 + "2021-09-24T03:14:34", + 39148 ], [ - "2022-12-19T18:26:59", - 139150 + "2021-09-25T16:30:33", + 39601 ], [ - "2022-12-20T16:08:58", - 139498 + "2021-09-26T12:23:03", + 39688 ], [ - "2022-12-21T23:23:24", - 140102 + "2021-09-27T15:31:39", + 39949 ], [ - "2022-12-22T22:59:06", - 140496 + "2021-09-29T01:26:48", + 40467 ], [ - "2022-12-24T20:01:35", - 140786 + "2021-09-30T23:05:25", + 41320 ], [ - "2022-12-25T21:13:52", - 140818 + "2021-10-01T16:05:31", + 41536 ], [ - "2022-12-26T19:56:00", - 140920 + "2021-10-03T21:24:16", + 41795 ], [ - "2022-12-27T23:56:39", - 141171 + "2021-10-05T01:32:48", + 42103 ], [ - "2022-12-29T20:55:31", - 141503 + "2021-10-06T08:19:33", + 42486 ], [ - "2022-12-30T20:56:36", - 141638 + "2021-10-07T19:01:06", + 42998 ], [ - "2022-12-31T08:10:29", - 141690 + "2021-10-09T09:11:23", + 43407 ], [ - "2023-01-01T23:58:03", - 141832 + "2021-10-10T16:38:57", + 43546 ], [ - "2023-01-02T23:32:43", - 141974 + "2021-10-12T12:32:12", + 44289 ], [ - "2023-01-04T01:14:45", - 142406 + "2021-10-13T01:33:36", + 44713 ], [ - "2023-01-05T00:40:47", - 142966 + "2021-10-16T01:43:12", + 45709 ], [ - "2023-01-06T15:27:19", - 143598 + "2021-10-17T12:27:08", + 45874 ], [ - "2023-01-07T23:05:20", - 143981 + "2021-10-21T01:43:07", + 46643 ], [ - "2023-01-09T23:13:18", - 144627 + "2021-10-24T15:47:49", + 47362 ], [ - "2023-01-10T22:19:22", - 145146 + "2021-10-25T04:54:54", + 47417 ], [ - "2023-01-11T20:38:34", - 145622 + "2021-10-26T19:08:21", + 47826 ], [ - "2023-01-12T19:14:41", - 145991 + "2021-10-27T10:52:46", + 48035 ], [ - "2023-01-14T22:19:17", - 146541 + "2021-10-28T01:27:35", + 48174 ], [ - "2023-01-15T05:54:49", - 146579 + "2021-10-29T05:01:38", + 48461 ], [ - "2023-01-16T01:07:20", - 146752 + "2021-10-30T20:34:54", + 188 ], [ - "2023-01-18T01:10:41", - 147365 + "2021-10-31T18:17:07", + 49366 ], [ - "2023-01-19T01:11:47", - 147868 + "2021-11-01T01:50:59", + 49513 ], [ - "2023-01-20T01:07:56", - 148411 + "2021-11-02T11:56:56", + 49890 ], [ - "2023-01-21T01:11:30", - 148977 + "2021-11-03T01:34:05", + 50191 ], [ - "2023-01-22T23:52:22", - 149183 + "2021-11-04T22:06:35", + 50893 ], [ - "2023-01-24T01:13:09", - 149765 + "2021-11-07T22:48:14", + 51518 ], [ - "2023-01-25T01:09:15", - 150196 + "2021-11-08T16:38:12", + 51784 ], [ - "2023-01-27T01:08:47", - 151020 + "2021-11-09T14:05:16", + 52151 ], [ - "2023-01-28T23:00:24", - 151557 + "2021-11-11T23:43:38", + 52890 ], [ - "2023-01-29T11:12:53", - 151596 + "2021-11-12T07:23:40", + 52960 ], [ - "2023-01-31T09:09:55", - 152256 + "2021-11-13T03:49:42", + 53366 ], [ - "2023-02-04T01:08:11", - 154070 + "2021-11-14T20:38:46", + 53532 ], [ - "2023-02-05T19:16:16", - 154277 + "2021-11-15T21:50:19", + 53808 ], [ - "2023-02-06T01:06:21", - 154354 + "2021-11-17T13:49:27", + 54155 ], [ - "2023-02-07T01:06:44", - 154867 + "2021-11-18T12:57:03", + 54631 ], [ - "2023-02-08T19:33:17", - 155660 + "2021-11-19T01:41:21", + 54714 ], [ - "2023-02-16T01:07:41", - 158821 + "2021-11-21T18:45:36", + 55099 ], [ - "2023-02-17T20:09:45", - 159652 + "2021-11-22T21:51:21", + 55344 ], [ - "2023-02-19T16:48:31", - 160036 + "2021-11-24T01:32:35", + 55720 ], [ - "2023-02-22T01:09:24", - 161175 + "2021-11-25T01:36:17", + 56041 ], [ - "2023-02-25T18:11:10", - 162943 + "2021-11-26T01:28:24", + 56247 ], [ - "2023-02-26T01:20:44", - 162979 + "2021-11-27T01:29:49", + 56567 ], [ - "2023-02-27T01:05:31", - 163146 + "2021-11-29T19:53:22", + 56985 ], [ - "2023-02-28T01:12:07", - 163711 + "2021-12-01T21:53:10", + 57974 ], [ - "2023-03-01T01:11:53", - 164193 + "2021-12-02T22:38:42", + 58602 ], [ - "2023-03-02T01:11:37", - 164690 + "2021-12-03T07:25:47", + 59008 ], [ - "2023-03-04T19:06:27", - 165996 + "2021-12-04T10:20:40", + 59476 ], [ - "2023-03-05T21:22:00", - 166291 + "2021-12-05T01:37:50", + 59584 ], [ - "2023-03-06T18:58:36", - 166786 + "2021-12-06T01:34:54", + 59685 ], [ - "2023-03-07T22:04:26", - 168105 + "2021-12-07T19:17:16", + 60615 ], [ - "2023-03-11T18:55:05", - 171255 + "2021-12-08T11:50:21", + 60857 ], [ - "2023-03-13T01:08:17", - 171481 + "2021-12-09T08:24:35", + 61204 ], [ - "2023-03-16T01:14:43", - 173745 + "2021-12-11T10:08:27", + 61890 ], [ - "2023-03-25T20:41:27", - 179705 + "2021-12-12T01:37:49", + 61950 ], [ - "2023-03-26T18:35:58", - 179894 + "2021-12-14T01:36:23", + 62314 ], [ - "2023-03-27T19:04:51", - 180520 + "2021-12-15T01:38:21", + 62727 ], [ - "2023-03-28T14:20:40", - 181249 + "2021-12-16T01:40:15", + 63261 ], [ - "2023-03-29T01:10:08", - 181616 + "2021-12-17T01:41:18", + 63684 ], [ - "2023-03-30T01:06:23", - 182463 + "2021-12-18T12:07:04", + 64100 ], [ - "2023-04-01T16:38:16", - 184103 + "2021-12-21T13:52:15", + 64674 ], [ - "2023-04-02T18:16:54", - 184448 + "2021-12-23T13:53:28", + 65356 ], [ - "2023-04-03T20:17:29", - 185068 - ] - ], - "ruby": [ + "2021-12-26T01:43:59", + 65567 + ], [ - "2021-07-26T20:10:04", - 978 + "2021-12-29T20:36:25", + 66179 ], [ - "2021-07-28T01:29:28", - 985 + "2021-12-31T01:38:18", + 66955 ], [ - "2021-07-29T01:25:08", - 985 + "2022-01-01T01:37:58", + 67606 ], [ - "2021-07-30T02:45:47", - 990 + "2022-01-03T22:58:05", + 68081 ], [ - "2021-07-31T02:55:52", - 992 + "2022-01-09T14:02:41", + 69590 ], [ - "2021-08-01T01:34:33", - 994 + "2022-01-11T01:36:44", + 70159 ], [ - "2021-08-02T01:25:51", - 995 + "2022-01-12T01:35:34", + 70545 ], [ - "2021-08-03T01:34:04", - 995 + "2022-01-13T09:24:45", + 71221 ], [ - "2021-08-04T01:25:42", - 1002 + "2022-01-14T01:38:08", + 71720 ], [ - "2021-08-05T13:16:40", - 1003 + "2022-01-15T11:07:48", + 72358 ], [ - "2021-08-06T10:08:44", - 1003 + "2022-01-16T01:40:08", + 72485 ], [ - "2021-08-07T01:23:20", - 1003 + "2022-01-17T12:08:17", + 72853 ], [ - "2021-08-08T17:46:20", - 1006 + "2022-01-18T04:25:59", + 73513 ], [ - "2021-08-09T12:57:30", - 1009 + "2022-01-22T22:01:45", + 76902 ], [ - "2021-08-10T18:15:58", - 1012 + "2022-01-23T19:48:17", + 77114 ], [ - "2021-08-11T19:45:43", - 1016 + "2022-01-24T20:09:52", + 77689 ], [ - "2021-08-12T16:45:06", - 1028 + "2022-01-25T07:19:01", + 77843 ], [ - "2021-08-13T01:26:41", - 1034 + "2022-01-26T01:45:09", + 78542 ], [ - "2021-08-14T08:26:41", - 1035 + "2022-01-28T01:33:25", + 79658 ], [ - "2021-08-15T21:37:16", - 1048 + "2022-01-29T20:09:19", + 80306 ], [ - "2021-08-17T01:22:18", - 1049 + "2022-01-30T17:15:32", + 80594 ], [ - "2021-08-18T01:24:15", - 1050 + "2022-01-31T13:01:19", + 80965 ], [ - "2021-08-19T22:44:18", - 1060 + "2022-02-01T07:00:15", + 81283 ], [ - "2021-08-20T16:03:59", - 1072 + "2022-02-02T23:09:44", + 82004 ], [ - "2021-08-21T12:36:04", - 1076 + "2022-02-03T10:37:04", + 82333 ], [ - "2021-08-22T01:21:13", - 1077 + "2022-02-05T23:23:53", + 83707 ], [ - "2021-08-23T20:34:23", - 1090 + "2022-02-06T17:27:14", + 83948 ], [ - "2021-08-24T21:32:49", - 1092 + "2022-02-07T07:41:03", + 84175 ], [ - "2021-08-28T19:11:50", - 1093 + "2022-02-09T12:02:49", + 85728 ], [ - "2021-08-29T12:02:14", - 1099 + "2022-02-10T01:38:28", + 86129 ], [ - "2021-08-31T03:01:11", - 1101 + "2022-02-13T17:21:12", + 87400 ], [ - "2021-09-01T01:34:30", - 1103 + "2022-02-14T01:37:05", + 87506 ], [ - "2021-09-02T11:26:37", - 1105 + "2022-02-16T01:41:49", + 88736 ], [ - "2021-09-03T01:30:31", - 1109 + "2022-02-18T21:34:22", + 90582 ], [ - "2021-09-04T13:35:27", - 1111 + "2022-02-20T20:39:40", + 90936 ], [ - "2021-09-06T01:30:54", - 1118 + "2022-02-21T21:26:40", + 91521 ], [ - "2021-09-07T01:30:29", - 1119 + "2022-02-25T15:39:13", + 93715 ], [ - "2021-09-12T12:45:46", - 1121 + "2022-02-27T01:44:50", + 94064 ], [ - "2021-09-15T03:11:38", - 1124 + "2022-02-28T01:51:49", + 94199 ], [ - "2021-09-18T22:10:09", - 1136 + "2022-03-02T23:33:51", + 95281 ], [ - "2021-09-19T15:32:31", - 1141 + "2022-03-03T01:50:14", + 95324 ], [ - "2021-09-20T01:35:53", - 1143 + "2022-03-04T05:18:37", + 95552 ], [ - "2021-09-21T17:53:24", - 1145 + "2022-03-06T01:44:30", + 95738 ], [ - "2021-09-23T01:37:54", - 1151 + "2022-03-08T11:13:31", + 95999 ], [ - "2021-09-24T03:14:34", - 1153 + "2022-03-09T07:35:11", + 96223 ], [ - "2021-09-25T16:30:33", - 1169 + "2022-03-10T01:51:49", + 96414 ], [ - "2021-09-26T12:23:03", - 1171 + "2022-03-11T01:51:30", + 96613 ], [ - "2021-09-27T15:31:39", - 1178 + "2022-03-12T01:42:04", + 96845 ], [ - "2021-09-29T01:26:48", - 1180 + "2022-03-13T19:08:51", + 96902 ], [ - "2021-09-30T23:05:25", - 1183 + "2022-03-14T15:10:17", + 97057 ], [ - "2021-10-01T16:05:31", - 1184 + "2022-03-15T01:49:51", + 97150 ], [ - "2021-10-03T21:24:16", - 1185 + "2022-03-16T01:45:07", + 97376 ], [ - "2021-10-05T01:32:48", - 1187 + "2022-03-17T12:36:48", + 97780 ], [ - "2021-10-06T08:19:33", - 1190 + "2022-03-19T16:59:24", + 98167 ], [ - "2021-10-07T19:01:06", - 1194 + "2022-03-20T11:59:05", + 98236 ], [ - "2021-10-09T09:11:23", - 1197 + "2022-03-21T01:44:24", + 98280 ], [ - "2021-10-10T16:38:57", - 1201 + "2022-03-22T01:55:14", + 98487 ], [ - "2021-10-12T12:32:12", - 1207 + "2022-03-23T01:55:28", + 98777 ], [ - "2021-10-13T01:33:36", - 1214 + "2022-03-24T01:48:26", + 99034 ], [ - "2021-10-16T01:43:12", - 1218 + "2022-03-26T22:36:41", + 99756 ], [ - "2021-10-17T12:27:08", - 1222 + "2022-03-27T20:21:20", + 99869 ], [ - "2021-10-21T01:43:07", - 1227 + "2022-03-30T01:54:07", + 100591 ], [ - "2021-10-24T15:47:49", - 1233 + "2022-03-31T19:42:14", + 101176 ], [ - "2021-10-25T04:54:54", - 1235 + "2022-04-01T15:16:50", + 101535 ], [ - "2021-10-26T19:08:21", - 1244 + "2022-04-02T01:51:52", + 101691 ], [ - "2021-10-27T10:52:46", - 1246 + "2022-04-04T03:28:40", + 102187 ], [ - "2021-10-29T05:01:38", - 1255 + "2022-04-06T04:08:13", + 103119 ], [ - "2021-10-30T20:34:54", - 46 + "2022-04-07T01:53:15", + 103537 ], [ - "2021-10-31T18:17:07", - 1324 + "2022-04-09T01:50:38", + 104418 ], [ - "2021-11-01T01:50:59", - 1337 + "2022-04-10T14:05:52", + 104811 ], [ - "2021-11-02T11:56:56", - 1355 + "2022-04-11T17:59:19", + 105423 ], [ - "2021-11-03T01:34:05", - 1378 + "2022-04-18T19:21:22", + 107737 ], [ - "2021-11-04T22:06:35", - 1411 + "2022-04-22T17:35:15", + 109303 ], [ - "2021-11-07T22:48:14", - 1433 + "2022-04-23T08:58:43", + 109456 ], [ - "2021-11-08T16:38:12", - 1444 + "2022-04-24T16:22:52", + 109805 ], [ - "2021-11-09T14:05:16", - 1460 + "2022-04-26T12:16:27", + 110613 ], [ - "2021-11-11T23:43:38", - 1475 + "2022-04-28T02:47:35", + 111320 ], [ - "2021-11-12T07:23:40", - 1476 + "2022-04-29T02:28:21", + 111625 ], [ - "2021-11-13T03:49:42", - 1478 + "2022-04-30T15:55:37", + 111925 ], [ - "2021-11-14T20:38:46", - 1482 + "2022-05-02T02:22:46", + 112137 ], [ - "2021-11-15T21:50:19", - 1507 + "2022-05-03T15:10:47", + 112568 ], [ - "2021-11-17T13:49:27", - 1510 + "2022-05-04T02:21:38", + 112713 ], [ - "2021-11-18T12:57:03", - 1511 + "2022-05-05T02:29:20", + 113002 ], [ - "2021-11-19T01:41:21", - 1517 + "2022-05-06T01:57:12", + 113250 ], [ - "2021-11-21T18:45:36", - 1519 + "2022-05-07T15:43:47", + 113476 ], [ - "2021-11-22T21:51:21", - 1535 + "2022-05-08T09:22:07", + 113508 ], [ - "2021-11-24T01:32:35", - 1536 + "2022-05-11T18:46:39", + 114323 ], [ - "2021-11-25T01:36:17", - 1537 + "2022-05-14T10:19:10", + 115201 ], [ - "2021-11-26T01:28:24", - 1538 + "2022-05-15T18:35:14", + 115296 ], [ - "2021-11-27T01:29:49", - 1539 + "2022-05-17T02:16:25", + 115737 ], [ - "2021-11-29T19:53:22", - 1543 + "2022-05-20T02:14:29", + 116804 ], [ - "2021-12-01T21:53:10", - 1550 + "2022-05-21T01:55:42", + 117191 ], [ - "2021-12-02T22:38:42", - 1557 + "2022-05-22T02:10:42", + 117271 ], [ - "2021-12-03T07:25:47", - 1560 + "2022-05-24T11:16:46", + 117819 ], [ - "2021-12-04T10:20:40", - 1562 + "2022-05-25T02:18:32", + 117970 ], [ - "2021-12-05T01:37:50", - 1566 + "2022-05-27T02:15:18", + 118487 ], [ - "2021-12-06T01:34:54", - 1569 + "2022-05-28T02:22:34", + 118701 ], [ - "2021-12-07T19:17:16", - 1598 + "2022-05-30T02:21:03", + 118917 ], [ - "2021-12-08T11:50:21", - 1600 + "2022-05-31T19:33:59", + 119501 ], [ - "2021-12-09T08:24:35", - 1619 + "2022-06-01T02:31:42", + 119622 ], [ - "2021-12-11T10:08:27", - 1620 + "2022-06-02T02:27:43", + 120036 ], [ - "2021-12-12T01:37:49", - 1635 + "2022-06-03T01:55:13", + 120271 ], [ - "2021-12-14T01:36:23", - 1640 + "2022-06-08T20:16:03", + 121675 ], [ - "2021-12-15T01:38:21", - 1641 + "2022-06-09T13:28:16", + 121970 ], [ - "2021-12-16T01:40:15", - 1642 + "2022-06-10T02:21:45", + 122136 ], [ - "2021-12-17T01:41:18", - 1642 + "2022-06-11T02:20:43", + 122430 ], [ - "2021-12-18T12:07:04", - 1643 + "2022-06-12T13:23:39", + 122534 ], [ - "2021-12-21T13:52:15", - 1652 + "2022-06-14T02:30:00", + 122934 ], [ - "2021-12-23T13:53:28", - 1654 + "2022-06-15T20:20:02", + 123598 ], [ - "2021-12-26T01:43:59", - 1655 + "2022-06-17T02:17:40", + 123887 ], [ - "2021-12-29T20:36:25", - 1673 + "2022-06-19T07:40:43", + 124295 ], [ - "2021-12-31T01:38:18", - 1675 + "2022-06-22T23:37:06", + 125181 ], [ - "2022-01-01T01:37:58", - 1676 + "2022-06-23T09:06:53", + 125320 ], [ - "2022-01-03T22:58:05", - 1678 + "2022-06-24T02:16:36", + 125588 ], [ - "2022-01-09T14:02:41", - 1705 + "2022-06-25T02:27:04", + 125880 ], [ - "2022-01-11T01:36:44", - 1719 + "2022-06-26T16:16:05", + 126003 ], [ - "2022-01-12T01:35:34", - 1720 + "2022-09-10T23:57:56", + 145044 ], [ - "2022-01-13T09:24:45", - 1733 + "2022-09-11T17:27:20", + 145242 ], [ - "2022-01-14T01:38:08", - 1739 + "2022-09-12T17:31:29", + 145738 ], [ - "2022-01-15T11:07:48", - 1742 + "2022-09-15T12:40:02", + 146652 ], [ - "2022-01-16T01:40:08", - 1744 + "2022-09-16T01:11:41", + 146765 ], [ - "2022-01-17T12:08:17", - 1745 + "2022-09-17T01:12:07", + 146962 ], [ - "2022-01-18T04:25:59", - 1747 + "2022-09-19T22:06:52", + 147496 ], [ - "2022-01-22T22:01:45", - 1751 + "2022-09-20T01:15:00", + 147558 ], [ - "2022-01-23T19:48:17", - 1769 + "2022-09-21T18:40:27", + 148082 ], [ - "2022-01-24T20:09:52", - 1775 + "2022-09-22T16:43:34", + 148507 ], [ - "2022-01-25T07:19:01", - 1775 + "2022-09-25T01:14:04", + 149108 ], [ - "2022-01-26T01:45:09", - 1778 + "2022-09-26T01:16:57", + 149461 ], [ - "2022-01-28T01:33:25", - 1782 + "2022-09-27T20:49:14", + 150184 ], [ - "2022-01-29T20:09:19", - 1786 + "2022-09-30T01:39:04", + 151396 ], [ - "2022-01-30T17:15:32", - 1800 + "2022-10-01T17:39:25", + 151761 ], [ - "2022-01-31T13:01:19", - 1814 + "2022-10-02T12:03:53", + 151901 ], [ - "2022-02-01T07:00:15", - 1816 + "2022-10-03T08:03:32", + 152092 ], [ - "2022-02-02T23:09:44", - 1819 + "2022-10-04T01:20:50", + 152586 ], [ - "2022-02-03T10:37:04", - 1840 + "2022-10-05T01:21:27", + 153180 ], [ - "2022-02-05T23:23:53", - 1843 + "2022-10-08T23:24:13", + 154384 ], [ - "2022-02-06T17:27:14", - 1846 + "2022-10-10T01:35:49", + 154794 ], [ - "2022-02-07T07:41:03", - 1847 + "2022-10-11T01:16:06", + 155207 ], [ - "2022-02-09T12:02:49", - 1854 + "2022-10-12T19:05:48", + 155775 ], [ - "2022-02-10T01:38:28", - 1856 + "2022-10-13T01:19:16", + 155931 ], [ - "2022-02-13T17:21:12", - 1857 + "2022-10-14T01:30:33", + 156350 ], [ - "2022-02-14T01:37:05", - 1861 + "2022-10-15T01:22:21", + 156752 ], [ - "2022-02-16T01:41:49", - 1863 + "2022-10-16T21:43:31", + 156999 ], [ - "2022-02-18T21:34:22", - 1864 + "2022-10-18T06:25:58", + 157500 ], [ - "2022-02-20T20:39:40", - 1891 + "2022-10-22T11:41:20", + 158708 ], [ - "2022-02-21T21:26:40", - 1903 + "2022-10-23T01:13:56", + 158803 ], [ - "2022-02-25T15:39:13", - 1904 + "2022-10-24T20:11:55", + 159727 ], [ - "2022-02-27T01:44:50", - 1904 + "2022-10-25T00:08:55", + 159757 ], [ - "2022-02-28T01:51:49", - 1910 + "2022-10-26T01:07:23", + 160223 ], [ - "2022-03-02T23:33:51", - 1910 + "2022-10-27T01:11:40", + 160557 ], [ - "2022-03-03T01:50:14", - 1910 + "2022-10-29T01:02:52", + 161057 ], [ - "2022-03-04T05:18:37", - 1910 + "2022-10-30T20:09:57", + 161293 ], [ - "2022-03-06T01:44:30", - 1910 + "2022-10-31T22:27:03", + 161769 ], [ - "2022-03-08T11:13:31", - 1914 + "2022-11-01T18:25:59", + 162061 ], [ - "2022-03-09T07:35:11", - 1918 + "2022-11-03T01:11:15", + 162470 ], [ - "2022-03-10T01:51:49", - 1929 + "2022-11-04T11:35:34", + 162930 ], [ - "2022-03-11T01:51:30", - 1929 + "2022-11-05T07:41:24", + 163161 ], [ - "2022-03-12T01:42:04", - 1929 + "2022-11-06T11:06:34", + 163331 ], [ - "2022-03-13T19:08:51", - 1929 + "2022-11-07T19:40:53", + 163750 ], [ - "2022-03-14T15:10:17", - 1929 + "2022-11-08T01:06:52", + 163838 ], [ - "2022-03-15T01:49:51", - 1929 + "2022-11-11T17:10:50", + 165444 ], [ - "2022-03-16T01:45:07", - 1929 + "2022-11-13T20:58:24", + 165794 ], [ - "2022-03-17T12:36:48", - 1930 + "2022-11-14T23:48:23", + 0 ], [ - "2022-03-19T16:59:24", - 1935 + "2022-11-15T07:38:22", + 166422 ], [ - "2022-03-20T11:59:05", - 1935 + "2022-11-17T09:11:40", + 167365 ], [ - "2022-03-21T01:44:24", - 1961 + "2022-11-19T22:14:34", + 168082 ], [ - "2022-03-22T01:55:14", - 1983 + "2022-11-21T23:47:48", + 168669 ], [ - "2022-03-23T01:55:28", - 2003 + "2022-11-22T01:14:59", + 168691 ], [ - "2022-03-24T01:48:26", - 2007 + "2022-11-23T23:28:30", + 169401 ], [ - "2022-03-26T22:36:41", - 2010 + "2022-11-26T01:00:47", + 170096 ], [ - "2022-03-27T20:21:20", - 2010 + "2022-11-28T01:02:53", + 170463 ], [ - "2022-03-30T01:54:07", - 2018 + "2022-12-07T07:19:55", + 173593 ], [ - "2022-03-31T19:42:14", - 2031 + "2022-12-18T20:23:59", + 177426 ], [ - "2022-04-01T15:16:50", - 2036 + "2022-12-19T18:26:59", + 178143 ], [ - "2022-04-02T01:51:52", - 2036 + "2022-12-20T16:08:58", + 178474 ], [ - "2022-04-04T03:28:40", - 2037 + "2022-12-21T23:23:24", + 178906 ], [ - "2022-04-06T04:08:13", - 2037 + "2022-12-22T22:59:06", + 179209 ], [ - "2022-04-07T01:53:15", - 2037 + "2022-12-24T20:01:35", + 179656 ], [ - "2022-04-09T01:50:38", - 2053 + "2022-12-25T21:13:52", + 179790 ], [ - "2022-04-10T14:05:52", - 2053 + "2022-12-26T19:56:00", + 179998 ], [ - "2022-04-11T17:59:19", - 2058 + "2022-12-27T23:56:39", + 180350 ], [ - "2022-04-18T19:21:22", - 2081 + "2022-12-29T20:55:31", + 180757 ], [ - "2022-04-22T17:35:15", - 2096 + "2022-12-30T20:56:36", + 180908 ], [ - "2022-04-23T08:58:43", - 2096 + "2022-12-31T08:10:29", + 180974 ], [ - "2022-04-24T16:22:52", - 2096 + "2023-01-01T23:58:03", + 181416 ], [ - "2022-04-26T12:16:27", - 2100 + "2023-01-02T23:32:43", + 181806 ], [ - "2022-04-28T02:47:35", - 2110 + "2023-01-04T01:14:45", + 182349 ], [ - "2022-04-29T02:28:21", - 2119 + "2023-01-05T00:40:47", + 182719 ], [ - "2022-04-30T15:55:37", - 2124 + "2023-01-06T15:27:19", + 183368 ], [ - "2022-05-02T02:22:46", - 2124 + "2023-01-07T23:05:20", + 183754 ], [ - "2022-05-03T15:10:47", - 2136 + "2023-01-09T23:13:18", + 184760 ], [ - "2022-05-04T02:21:38", - 2136 + "2023-01-10T22:19:22", + 185198 ], [ - "2022-05-05T02:29:20", - 2146 + "2023-01-11T20:38:34", + 185609 ], [ - "2022-05-06T01:57:12", - 2167 + "2023-01-12T19:14:41", + 186040 ], [ - "2022-05-07T15:43:47", - 2175 + "2023-01-14T22:19:17", + 186715 ], [ - "2022-05-08T09:22:07", - 2181 + "2023-01-15T05:54:49", + 186825 ], [ - "2022-05-11T18:46:39", - 2203 + "2023-01-16T01:07:20", + 187064 ], [ - "2022-05-14T10:19:10", - 2224 + "2023-01-18T01:10:41", + 188235 ], [ - "2022-05-15T18:35:14", - 2226 + "2023-01-19T01:11:47", + 189097 ], [ - "2022-05-17T02:16:25", - 2235 + "2023-01-20T01:07:56", + 189452 ], [ - "2022-05-20T02:14:29", - 2257 + "2023-01-21T01:11:30", + 189828 ], [ - "2022-05-21T01:55:42", - 2259 + "2023-01-22T23:52:22", + 190152 ], [ - "2022-05-22T02:10:42", - 2264 + "2023-01-24T01:13:09", + 190552 ], [ - "2022-05-24T11:16:46", - 2280 + "2023-01-25T01:09:15", + 191023 ], [ - "2022-05-25T02:18:32", - 2286 + "2023-01-27T01:08:47", + 191791 ], [ - "2022-05-27T02:15:18", - 2309 + "2023-01-28T23:00:24", + 192297 ], [ - "2022-05-28T02:22:34", - 2311 + "2023-01-29T11:12:53", + 192474 ], [ - "2022-05-30T02:21:03", - 2312 + "2023-01-31T09:09:55", + 193248 ], [ - "2022-05-31T19:33:59", - 2314 + "2023-02-04T01:08:11", + 194625 ], [ - "2022-06-01T02:31:42", - 2314 + "2023-02-05T19:16:16", + 195181 ], [ - "2022-06-02T02:27:43", - 2314 + "2023-02-06T01:06:21", + 195393 ], [ - "2022-06-03T01:55:13", - 2314 + "2023-02-07T01:06:44", + 195961 ], [ - "2022-06-08T20:16:03", - 2315 + "2023-02-08T19:33:17", + 197104 ], [ - "2022-06-09T13:28:16", - 2315 + "2023-02-16T01:07:41", + 201057 ], [ - "2022-06-10T02:21:45", - 2316 + "2023-02-17T20:09:45", + 202023 ], [ - "2022-06-11T02:20:43", - 2316 + "2023-02-19T16:48:31", + 202650 ], [ - "2022-06-12T13:23:39", - 2317 + "2023-02-22T01:09:24", + 203944 ], [ - "2022-06-14T02:30:00", - 2318 + "2023-02-25T18:11:10", + 205882 ], [ - "2022-06-15T20:20:02", - 2318 + "2023-02-26T01:20:44", + 205935 ], [ - "2022-06-17T02:17:40", - 2318 + "2023-02-27T01:05:31", + 206322 ], [ - "2022-06-19T07:40:43", - 2319 + "2023-02-28T01:12:07", + 206966 ], [ - "2022-06-22T23:37:06", - 2321 + "2023-03-01T01:11:53", + 207628 ], [ - "2022-06-23T09:06:53", - 2321 + "2023-03-02T01:11:37", + 208119 ], [ - "2022-06-24T02:16:36", - 2321 + "2023-03-04T19:06:27", + 209306 ], [ - "2022-06-25T02:27:04", - 2323 + "2023-03-05T21:22:00", + 209802 ], [ - "2022-06-26T16:16:05", - 2323 + "2023-03-06T18:58:36", + 210747 ], [ - "2022-09-10T23:57:56", - 2537 + "2023-03-07T22:04:26", + 212049 ], [ - "2022-09-11T17:27:20", - 2539 + "2023-03-11T18:55:05", + 215117 ], [ - "2022-09-12T17:31:29", - 2545 + "2023-03-13T01:08:17", + 215856 ], [ - "2022-09-15T12:40:02", - 2547 + "2023-03-16T01:14:43", + 219219 ], [ - "2022-09-16T01:11:41", - 2547 + "2023-03-25T20:41:27", + 229178 ], [ - "2022-09-17T01:12:07", - 2560 + "2023-03-26T18:35:58", + 229676 ], [ - "2022-09-19T22:06:52", - 2567 + "2023-03-27T19:04:51", + 231168 ], [ - "2022-09-20T01:15:00", - 2567 + "2023-03-28T14:20:40", + 232386 ], [ - "2022-09-21T18:40:27", - 2580 + "2023-03-29T01:10:08", + 232857 ], [ - "2022-09-22T16:43:34", - 2580 + "2023-03-30T01:06:23", + 234149 ], [ - "2022-09-25T01:14:04", - 2582 + "2023-04-01T16:38:16", + 236566 ], [ - "2022-09-26T01:16:57", - 2582 + "2023-04-02T18:16:54", + 236975 ], [ - "2022-09-27T20:49:14", - 2587 + "2023-04-03T20:17:29", + 238152 ], [ - "2022-09-30T01:39:04", - 2587 + "2023-04-04T01:00:44", + 238255 ], [ - "2022-10-01T17:39:25", - 2588 + "2023-04-05T01:02:44", + 239206 ], [ - "2022-10-02T12:03:53", - 2588 + "2023-04-06T01:02:10", + 239930 ], [ - "2022-10-03T08:03:32", - 2588 + "2023-04-10T19:39:37", + 242101 ], [ - "2022-10-04T01:20:50", - 2610 + "2023-04-11T18:04:56", + 242808 ], [ - "2022-10-05T01:21:27", - 2623 + "2023-04-12T19:58:02", + 243447 ], [ - "2022-10-08T23:24:13", - 2635 + "2023-04-15T13:28:28", + 244904 ], [ - "2022-10-10T01:35:49", - 2635 + "2023-04-16T20:56:34", + 245421 ], [ - "2022-10-11T01:16:06", - 2649 + "2023-04-20T09:00:09", + 247688 ], [ - "2022-10-12T19:05:48", - 2653 + "2023-04-22T18:08:18", + 249257 ], [ - "2022-10-13T01:19:16", - 2653 + "2023-04-23T08:46:30", + 249483 ], [ - "2022-10-14T01:30:33", - 2653 + "2023-04-24T10:35:05", + 250168 ], [ - "2022-10-15T01:22:21", - 2660 + "2023-04-25T13:22:38", + 250939 ], [ - "2022-10-16T21:43:31", - 2660 + "2023-04-26T01:05:21", + 251175 ], [ - "2022-10-18T06:25:58", - 2661 + "2023-04-29T09:13:18", + 252954 ], [ - "2022-10-22T11:41:20", - 2667 + "2023-04-30T23:37:21", + 253486 ], [ - "2022-10-23T01:13:56", - 2667 + "2023-05-01T12:30:40", + 253820 ], [ - "2022-10-24T20:11:55", - 2674 + "2023-05-02T01:03:19", + 254176 ], [ - "2022-10-25T00:08:55", - 2674 + "2023-05-12T22:08:47", + 259910 ], [ - "2022-10-26T01:07:23", - 2684 + "2023-05-13T20:23:06", + 260231 ], [ - "2022-10-27T01:11:40", - 2688 + "2023-05-14T19:54:23", + 260734 ], [ - "2022-10-29T01:02:52", - 2712 + "2023-05-17T23:06:02", + 262757 ], [ - "2022-10-30T20:09:57", - 2714 + "2023-05-18T18:05:13", + 263290 ], [ - "2022-10-31T22:27:03", - 2716 + "2023-05-19T18:27:46", + 263955 ], [ - "2022-11-01T18:25:59", - 2718 + "2023-05-20T06:58:27", + 264160 ], [ - "2022-11-03T01:11:15", - 2719 + "2023-05-21T17:54:05", + 264649 ], [ - "2022-11-04T11:35:34", - 2719 + "2023-05-22T19:05:24", + 265504 ], [ - "2022-11-05T07:41:24", - 2719 + "2023-05-23T01:07:57", + 265671 ], [ - "2022-11-06T11:06:34", - 2719 + "2023-05-24T01:14:32", + 266335 ], [ - "2022-11-07T19:40:53", - 2719 + "2023-05-26T01:11:00", + 267622 ], [ - "2022-11-08T01:06:52", - 2719 + "2023-05-27T17:04:12", + 268377 ], [ - "2022-11-11T17:10:50", - 2722 + "2023-05-28T17:03:24", + 268641 ], [ - "2022-11-13T20:58:24", - 2722 + "2023-05-29T11:13:08", + 268976 ], [ - "2022-11-14T23:48:23", - 0 + "2023-05-31T23:48:39", + 270723 ], [ - "2022-11-15T07:38:22", - 2722 + "2023-06-01T01:25:18", + 270848 ], [ - "2022-11-17T09:11:40", - 2722 + "2023-06-02T01:10:33", + 271657 ], [ - "2022-11-19T22:14:34", - 2729 + "2023-06-03T09:59:50", + 272295 ], [ - "2022-11-21T23:47:48", - 2730 + "2023-06-04T01:13:43", + 272391 ], [ - "2022-11-22T01:14:59", - 2730 + "2023-06-05T01:08:28", + 272653 ], [ - "2022-11-23T23:28:30", - 2746 + "2023-06-07T01:10:00", + 273929 ], [ - "2022-11-26T01:00:47", - 2751 + "2023-06-08T05:19:18", + 274617 ], [ - "2022-11-28T01:02:53", - 2751 + "2023-06-11T18:48:09", + 276437 ], [ - "2022-12-07T07:19:55", - 2766 + "2023-06-12T01:16:15", + 276584 ], [ - "2022-12-18T20:23:59", - 2785 + "2023-06-13T01:11:33", + 277578 ], [ - "2022-12-19T18:26:59", - 2785 + "2023-06-17T01:09:24", + 280668 ], [ - "2022-12-20T16:08:58", - 2787 + "2023-06-21T05:26:13", + 284231 ], [ - "2022-12-21T23:23:24", - 2791 + "2023-06-23T01:12:21", + 285611 ], [ - "2022-12-22T22:59:06", - 2791 + "2023-06-24T01:13:03", + 286468 ], [ - "2022-12-24T20:01:35", - 2793 + "2023-06-25T01:19:08", + 286651 ], [ - "2022-12-25T21:13:52", - 2793 + "2023-07-02T01:17:57", + 292703 ], [ - "2022-12-26T19:30:31", - 2795 + "2023-07-05T04:19:03", + 296096 ], [ - "2022-12-27T23:56:39", - 2795 + "2023-07-06T01:13:59", + 297315 ], [ - "2022-12-29T20:55:31", - 2797 + "2023-07-07T01:22:59", + 298646 ], [ - "2022-12-30T20:56:36", - 2797 + "2023-07-09T01:17:28", + 299698 ], [ - "2022-12-31T08:10:29", - 2797 + "2023-07-10T12:35:57", + 301182 ], [ - "2023-01-01T23:58:03", - 2797 + "2023-07-11T18:04:48", + 303260 ], [ - "2023-01-02T23:32:43", - 2797 + "2023-07-13T01:16:23", + 304595 ], [ - "2023-01-04T01:14:45", - 2797 + "2023-07-14T18:55:34", + 306496 ], [ - "2023-01-05T00:40:47", - 2802 + "2023-07-15T14:49:24", + 306845 ], [ - "2023-01-06T15:27:19", - 2802 + "2023-07-17T01:18:56", + 307377 ], [ - "2023-01-07T23:05:20", - 2802 + "2023-07-23T01:13:49", + 312386 ], [ - "2023-01-09T23:13:18", - 2805 + "2023-07-24T12:19:15", + 313242 ], [ - "2023-01-10T22:19:22", - 2807 + "2023-07-25T10:15:45", + 314353 ], [ - "2023-01-11T20:38:34", - 2810 + "2023-07-26T21:02:52", + 316374 ], [ - "2023-01-12T19:14:41", - 2813 + "2023-08-03T19:41:39", + 326059 ], [ - "2023-01-14T22:19:17", - 2815 + "2023-08-06T01:17:07", + 327439 ], [ - "2023-01-15T05:54:49", - 2815 + "2023-08-07T14:09:58", + 328647 ], [ - "2023-01-16T01:07:20", - 2815 + "2023-08-09T21:27:06", + 331693 ], [ - "2023-01-18T01:10:41", - 2824 + "2023-08-10T00:37:45", + 331722 ], [ - "2023-01-19T01:11:47", - 2828 + "2023-08-11T00:59:39", + 332925 ], [ - "2023-01-20T01:07:56", - 2838 + "2023-08-14T01:07:10", + 334890 ], [ - "2023-01-21T01:11:30", - 2843 + "2023-08-20T10:19:30", + 342264 ], [ - "2023-01-22T23:52:22", - 2843 + "2023-08-21T01:02:38", + 342416 ], [ - "2023-01-24T01:13:09", - 2843 + "2023-08-22T05:14:32", + 343984 ], [ - "2023-01-25T01:09:15", - 2843 + "2023-08-23T01:09:12", + 345822 ], [ - "2023-01-27T01:08:47", - 2846 + "2023-08-24T08:23:46", + 347557 ], [ - "2023-01-28T23:00:24", - 2850 + "2023-08-25T01:09:33", + 348691 ], [ - "2023-01-29T11:12:53", - 2850 + "2023-08-26T15:48:29", + 350156 ], [ - "2023-01-31T09:09:55", - 2867 + "2023-09-01T01:00:53", + 355593 ], [ - "2023-02-04T01:08:11", - 2877 + "2023-09-02T06:53:40", + 356458 ], [ - "2023-02-05T19:16:16", - 2877 + "2023-09-03T17:23:10", + 357234 ], [ - "2023-02-06T01:06:21", - 2877 + "2023-09-04T01:14:42", + 357368 ], [ - "2023-02-07T01:06:44", - 2881 + "2023-09-06T09:29:05", + 360204 ], [ - "2023-02-08T19:33:17", - 2890 + "2023-09-08T01:01:21", + 362336 ], [ - "2023-02-16T01:07:41", - 2957 + "2023-09-17T18:42:04", + 372407 ], [ - "2023-02-17T20:09:45", - 2970 + "2023-09-18T07:24:56", + 372720 ], [ - "2023-02-19T16:48:31", - 2976 + "2023-09-19T01:04:12", + 373821 ], [ - "2023-02-22T01:09:24", - 2987 + "2023-09-20T15:31:08", + 375985 ], [ - "2023-02-25T18:11:10", - 3001 + "2023-09-21T01:10:04", + 376546 ], [ - "2023-02-26T01:20:44", - 3005 + "2023-09-22T16:54:09", + 378963 ], [ - "2023-02-27T01:05:31", - 3009 + "2023-09-24T01:09:47", + 380474 ], [ - "2023-02-28T01:12:07", - 3020 + "2023-09-26T01:03:52", + 383480 ], [ - "2023-03-01T01:11:53", - 3024 + "2023-09-28T01:03:35", + 385940 ], [ - "2023-03-02T01:11:37", - 3043 + "2023-10-02T10:16:34", + 389462 ], [ - "2023-03-04T19:06:27", - 3065 + "2023-10-11T01:02:27", + 399669 ], [ - "2023-03-05T21:22:00", - 3087 + "2023-10-12T07:12:13", + 401307 ], [ - "2023-03-06T18:58:36", - 3097 + "2023-10-15T18:35:06", + 404475 ], [ - "2023-03-07T22:04:26", - 3113 + "2023-10-16T01:12:02", + 404581 ], [ - "2023-03-11T18:55:05", - 3161 + "2023-10-17T01:19:48", + 405862 ], [ - "2023-03-13T01:08:17", - 3163 + "2023-10-18T09:54:25", + 407755 ], [ - "2023-03-16T01:14:43", - 3181 + "2023-10-19T05:13:12", + 408974 ], [ - "2023-03-25T20:41:27", - 3225 + "2023-10-20T21:26:06", + 411981 ], [ - "2023-03-26T18:35:58", - 3243 + "2023-10-21T07:20:54", + 412435 ], [ - "2023-03-27T19:04:51", - 3261 + "2023-10-22T21:40:43", + 413397 ], [ - "2023-03-28T14:20:40", - 3269 + "2023-10-24T01:08:57", + 414940 ], [ - "2023-03-29T01:10:08", - 3271 + "2023-10-25T03:48:19", + 417104 ], [ - "2023-03-30T01:06:23", - 3289 + "2023-10-28T17:16:00", + 421915 ], [ - "2023-04-01T16:38:16", - 3306 + "2023-10-29T10:04:35", + 422136 ], [ - "2023-04-02T18:16:54", - 3319 + "2023-10-30T01:06:23", + 422433 ], [ - "2023-04-03T20:17:29", - 3341 + "2023-10-31T01:15:37", + 423994 + ], + [ + "2023-11-01T12:58:49", + 426041 + ], + [ + "2023-11-03T22:34:05", + 430160 + ], + [ + "2023-11-04T17:14:00", + 430637 + ], + [ + "2023-11-05T18:48:33", + 430973 + ], + [ + "2023-11-06T22:30:41", + 432350 + ], + [ + "2023-11-07T22:42:00", + 433930 + ], + [ + "2023-11-08T22:22:32", + 435191 + ], + [ + "2023-11-09T22:42:59", + 436251 + ], + [ + "2023-11-10T22:40:09", + 437022 + ], + [ + "2023-11-11T22:37:19", + 437269 ] ], - "rust": [ + "php": [ [ "2021-07-26T20:10:04", - 691 + 1300 ], [ "2021-07-28T01:29:28", - 694 + 1301 ], [ "2021-07-29T01:25:08", - 696 + 1306 ], [ "2021-07-30T02:45:47", - 699 + 1311 ], [ "2021-07-31T02:55:52", - 700 + 1311 ], [ "2021-08-01T01:34:33", - 702 + 1313 ], [ "2021-08-02T01:25:51", - 712 + 1323 ], [ "2021-08-03T01:34:04", - 712 + 1323 ], [ "2021-08-04T01:25:42", - 716 + 1327 ], [ "2021-08-05T13:16:40", - 716 + 1329 ], [ "2021-08-06T10:08:44", - 716 + 1329 ], [ "2021-08-07T01:23:20", - 716 + 1329 ], [ "2021-08-08T17:46:20", - 719 + 1334 ], [ "2021-08-09T12:57:30", - 722 + 1337 ], [ "2021-08-10T18:15:58", - 725 + 1340 ], [ "2021-08-11T19:45:43", - 730 + 1345 ], [ "2021-08-12T16:45:06", - 742 + 1357 ], [ "2021-08-13T01:26:41", - 748 + 1363 ], [ "2021-08-14T08:26:41", - 749 + 1364 ], [ "2021-08-15T21:37:16", - 762 + 1377 ], [ "2021-08-17T01:22:18", - 763 + 1378 ], [ "2021-08-18T01:24:15", - 764 + 1379 ], [ "2021-08-19T22:44:18", - 768 + 1387 ], [ "2021-08-20T16:03:59", - 780 + 1399 ], [ "2021-08-21T12:36:04", - 784 + 1407 ], [ "2021-08-22T01:21:13", - 785 + 1408 ], [ "2021-08-23T20:34:23", - 798 + 1431 ], [ "2021-08-24T21:32:49", - 800 + 1437 ], [ "2021-08-28T19:11:50", - 801 + 1450 ], [ "2021-08-29T12:02:14", - 807 + 1471 ], [ "2021-08-31T03:01:11", - 809 + 1487 ], [ "2021-09-01T01:34:30", - 811 + 1491 ], [ "2021-09-02T11:26:37", - 827 + 1508 ], [ "2021-09-03T01:30:31", - 831 + 1512 ], [ "2021-09-04T13:35:27", - 833 + 1522 ], [ "2021-09-06T01:30:54", - 840 + 1547 ], [ "2021-09-07T01:30:29", - 841 + 1564 ], [ "2021-09-12T12:45:46", - 864 + 1581 ], [ "2021-09-15T03:11:38", - 867 + 1588 ], [ "2021-09-18T22:10:09", - 876 + 1602 ], [ "2021-09-19T15:32:31", - 881 + 1607 ], [ "2021-09-20T01:35:53", - 883 + 1611 ], [ "2021-09-21T17:53:24", - 885 + 1619 ], [ "2021-09-23T01:37:54", - 891 + 1629 ], [ "2021-09-24T03:14:34", - 893 + 1633 ], [ "2021-09-25T16:30:33", - 909 + 1663 ], [ "2021-09-26T12:23:03", - 911 + 1667 ], [ "2021-09-27T15:31:39", - 917 + 1683 ], [ "2021-09-29T01:26:48", - 919 + 1693 ], [ "2021-09-30T23:05:25", - 922 + 1708 ], [ "2021-10-01T16:05:31", - 923 + 1711 ], [ "2021-10-03T21:24:16", - 924 + 1726 ], [ "2021-10-05T01:32:48", - 926 + 1739 ], [ "2021-10-06T08:19:33", - 929 + 1760 ], [ "2021-10-07T19:01:06", - 939 + 1774 ], [ "2021-10-09T09:11:23", - 942 + 1781 ], [ "2021-10-10T16:38:57", - 945 + 1784 ], [ "2021-10-12T12:32:12", - 947 + 1816 ], [ "2021-10-13T01:33:36", - 947 + 1819 ], [ "2021-10-16T01:43:12", - 951 + 1856 ], [ "2021-10-17T12:27:08", - 958 + 1879 ], [ "2021-10-21T01:43:07", - 960 + 1934 ], [ "2021-10-24T15:47:49", - 966 + 1942 ], [ "2021-10-25T04:54:54", - 968 + 1944 ], [ "2021-10-26T19:08:21", - 980 + 1971 ], [ "2021-10-27T10:52:46", - 982 + 1973 + ], + [ + "2021-10-28T01:27:35", + 1979 ], [ "2021-10-29T05:01:38", - 984 + 1981 ], [ "2021-10-30T20:34:54", @@ -15582,819 +15558,819 @@ ], [ "2021-10-31T18:17:07", - 1053 + 2056 ], [ "2021-11-01T01:50:59", - 1066 + 2071 ], [ "2021-11-02T11:56:56", - 1084 + 2112 ], [ "2021-11-03T01:34:05", - 1111 + 2126 ], [ "2021-11-04T22:06:35", - 1160 + 2153 ], [ "2021-11-07T22:48:14", - 1179 + 2183 ], [ "2021-11-08T16:38:12", - 1198 + 2198 ], [ "2021-11-09T14:05:16", - 1207 + 2221 ], [ "2021-11-11T23:43:38", - 1234 + 2243 ], [ "2021-11-12T07:23:40", - 1235 + 2244 ], [ "2021-11-13T03:49:42", - 1237 + 2250 ], [ "2021-11-14T20:38:46", - 1238 + 2282 ], [ "2021-11-15T21:50:19", - 1247 + 2301 ], [ "2021-11-17T13:49:27", - 1250 + 2316 ], [ "2021-11-18T12:57:03", - 1251 + 2321 ], [ "2021-11-19T01:41:21", - 1257 + 2335 ], [ "2021-11-21T18:45:36", - 1259 + 2353 ], [ "2021-11-22T21:51:21", - 1275 + 2383 ], [ "2021-11-24T01:32:35", - 1276 + 2396 ], [ "2021-11-25T01:36:17", - 1277 + 2429 ], [ "2021-11-26T01:28:24", - 1278 + 2441 ], [ "2021-11-27T01:29:49", - 1282 + 2465 ], [ "2021-11-29T19:53:22", - 1286 + 2486 ], [ "2021-12-01T21:53:10", - 1293 + 2565 ], [ "2021-12-02T22:38:42", - 1299 + 2591 ], [ "2021-12-03T07:25:47", - 1302 + 2606 ], [ "2021-12-04T10:20:40", - 1305 + 2675 ], [ "2021-12-05T01:37:50", - 1309 + 2699 ], [ "2021-12-06T01:34:54", - 1312 + 2726 ], [ "2021-12-07T19:17:16", - 1337 + 2766 ], [ "2021-12-08T11:50:21", - 1339 + 2779 ], [ "2021-12-09T08:24:35", - 1356 + 2800 ], [ "2021-12-11T10:08:27", - 1357 + 2851 ], [ "2021-12-12T01:37:49", - 1372 + 2863 ], [ "2021-12-14T01:36:23", - 1377 + 2903 ], [ "2021-12-15T01:38:21", - 1378 + 2904 ], [ "2021-12-16T01:40:15", - 1379 + 2908 ], [ "2021-12-17T01:41:18", - 1379 + 2918 ], [ "2021-12-18T12:07:04", - 1380 + 2930 ], [ "2021-12-21T13:52:15", - 1388 + 2982 ], [ "2021-12-23T13:53:28", - 1390 + 3056 ], [ "2021-12-26T01:43:59", - 1391 + 3141 ], [ "2021-12-29T20:36:25", - 1392 + 3251 ], [ "2021-12-31T01:38:18", - 1392 + 3259 ], [ "2022-01-01T01:37:58", - 1405 + 3262 ], [ "2022-01-03T22:58:05", - 1407 + 3296 ], [ "2022-01-09T14:02:41", - 1434 + 3451 ], [ "2022-01-11T01:36:44", - 1451 + 3492 ], [ "2022-01-12T01:35:34", - 1452 + 3503 ], [ "2022-01-13T09:24:45", - 1462 + 3529 ], [ "2022-01-14T01:38:08", - 1471 + 3549 ], [ "2022-01-15T11:07:48", - 1473 + 3567 ], [ "2022-01-16T01:40:08", - 1475 + 3571 ], [ "2022-01-17T12:08:17", - 1477 + 3582 ], [ "2022-01-18T04:25:59", - 1478 + 3583 ], [ "2022-01-22T22:01:45", - 1483 + 3733 ], [ "2022-01-23T19:48:17", - 1501 + 3753 ], [ "2022-01-24T20:09:52", - 1509 + 3769 ], [ "2022-01-25T07:19:01", - 1509 + 3769 ], [ "2022-01-26T01:45:09", - 1512 + 3785 ], [ "2022-01-28T01:33:25", - 1523 + 3802 ], [ "2022-01-29T20:09:19", - 1526 + 3841 ], [ "2022-01-30T17:15:32", - 1534 + 3848 ], [ "2022-01-31T13:01:19", - 1544 + 3877 ], [ "2022-02-01T07:00:15", - 1548 + 3880 ], [ "2022-02-02T23:09:44", - 1551 + 3899 ], [ "2022-02-03T10:37:04", - 1572 + 3921 ], [ "2022-02-05T23:23:53", - 1575 + 3934 ], [ "2022-02-06T17:27:14", - 1578 + 3943 ], [ "2022-02-07T07:41:03", - 1579 + 3944 ], [ "2022-02-09T12:02:49", - 1586 + 3959 ], [ "2022-02-10T01:38:28", - 1586 + 3963 ], [ "2022-02-13T17:21:12", - 1587 + 3976 ], [ "2022-02-14T01:37:05", - 1591 + 3980 ], [ "2022-02-16T01:41:49", - 1593 + 4046 ], [ "2022-02-18T21:34:22", - 1604 + 4106 ], [ "2022-02-20T20:39:40", - 1664 + 4141 ], [ "2022-02-21T21:26:40", - 1712 + 4183 ], [ "2022-02-25T15:39:13", - 2127 + 4346 ], [ "2022-02-27T01:44:50", - 2165 + 4378 ], [ "2022-02-28T01:51:49", - 2192 + 4378 ], [ "2022-03-02T23:33:51", - 2271 + 4466 ], [ "2022-03-03T01:50:14", - 2275 + 4466 ], [ "2022-03-04T05:18:37", - 2304 + 4476 ], [ "2022-03-06T01:44:30", - 2352 + 4482 ], [ "2022-03-08T11:13:31", - 2412 + 4497 ], [ "2022-03-09T07:35:11", - 2458 + 4502 ], [ "2022-03-10T01:51:49", - 2478 + 4515 ], [ "2022-03-11T01:51:30", - 2504 + 4526 ], [ "2022-03-12T01:42:04", - 2529 + 4534 ], [ "2022-03-13T19:08:51", - 2584 + 4547 ], [ "2022-03-14T15:10:17", - 2607 + 4554 ], [ "2022-03-15T01:49:51", - 2617 + 4558 ], [ "2022-03-16T01:45:07", - 2655 + 4566 ], [ "2022-03-17T12:36:48", - 2691 + 4574 ], [ "2022-03-19T16:59:24", - 2746 + 4634 ], [ "2022-03-20T11:59:05", - 2766 + 4636 ], [ "2022-03-21T01:44:24", - 2782 + 4636 ], [ "2022-03-22T01:55:14", - 2808 + 4647 ], [ "2022-03-23T01:55:28", - 2833 + 4668 ], [ "2022-03-24T01:48:26", - 2855 + 4693 ], [ "2022-03-26T22:36:41", - 2897 + 4747 ], [ "2022-03-27T20:21:20", - 2916 + 4749 ], [ "2022-03-30T01:54:07", - 2954 + 4933 ], [ "2022-03-31T19:42:14", - 2979 + 5108 ], [ "2022-04-01T15:16:50", - 2989 + 5184 ], [ "2022-04-02T01:51:52", - 2995 + 5314 ], [ "2022-04-04T03:28:40", - 3043 + 5320 ], [ "2022-04-06T04:08:13", - 3082 + 5668 ], [ "2022-04-07T01:53:15", - 3099 + 5857 ], [ "2022-04-09T01:50:38", - 3117 + 6225 ], [ "2022-04-10T14:05:52", - 3117 + 6227 ], [ "2022-04-11T17:59:19", - 3117 + 6276 ], [ "2022-04-18T19:21:22", - 3126 + 7002 ], [ "2022-04-22T17:35:15", - 3141 + 7346 ], [ "2022-04-23T08:58:43", - 3141 + 7395 ], [ "2022-04-24T16:22:52", - 3145 + 7396 ], [ "2022-04-26T12:16:27", - 3145 + 7460 ], [ "2022-04-28T02:47:35", - 3166 + 7571 ], [ "2022-04-29T02:28:21", - 3167 + 7637 ], [ "2022-04-30T15:55:37", - 3178 + 7687 ], [ "2022-05-02T02:22:46", - 3179 + 7692 ], [ "2022-05-03T15:10:47", - 3183 + 7739 ], [ "2022-05-04T02:21:38", - 3183 + 7779 ], [ "2022-05-05T02:29:20", - 3189 + 7831 ], [ "2022-05-06T01:57:12", - 3202 + 7873 ], [ "2022-05-07T15:43:47", - 3202 + 7928 ], [ "2022-05-08T09:22:07", - 3202 + 7929 ], [ "2022-05-11T18:46:39", - 3205 + 8032 ], [ "2022-05-14T10:19:10", - 3213 + 8142 ], [ "2022-05-15T18:35:14", - 3213 + 8143 ], [ "2022-05-17T02:16:25", - 3217 + 8177 ], [ "2022-05-20T02:14:29", - 3241 + 8258 ], [ "2022-05-21T01:55:42", - 3243 + 8282 ], [ "2022-05-22T02:10:42", - 3245 + 8290 ], [ "2022-05-24T11:16:46", - 3252 + 8324 ], [ "2022-05-25T02:18:32", - 3254 + 8358 ], [ "2022-05-27T02:15:18", - 3256 + 8450 ], [ "2022-05-28T02:22:34", - 3268 + 8468 ], [ "2022-05-30T02:21:03", - 3268 + 8470 ], [ "2022-05-31T19:33:59", - 3277 + 8498 ], [ "2022-06-01T02:31:42", - 3277 + 8512 ], [ "2022-06-02T02:27:43", - 3307 + 8538 ], [ "2022-06-03T01:55:13", - 3310 + 8594 ], [ "2022-06-08T20:16:03", - 3407 + 8720 ], [ "2022-06-09T13:28:16", - 3414 + 8754 ], [ "2022-06-10T02:21:45", - 3433 + 8778 ], [ "2022-06-11T02:20:43", - 3487 + 8813 ], [ "2022-06-12T13:23:39", - 3502 + 8814 ], [ "2022-06-14T02:30:00", - 3526 + 8847 ], [ "2022-06-15T20:20:02", - 3631 + 8904 ], [ "2022-06-17T02:17:40", - 3680 + 8949 ], [ "2022-06-19T07:40:43", - 3695 + 8999 ], [ "2022-06-22T23:37:06", - 3733 + 9115 ], [ "2022-06-23T09:06:53", - 3734 + 9115 ], [ "2022-06-24T02:16:36", - 3735 + 9150 ], [ "2022-06-25T02:27:04", - 3735 + 9180 ], [ "2022-06-26T16:16:05", - 3736 + 9181 ], [ "2022-09-10T23:57:56", - 3919 + 17672 ], [ "2022-09-11T17:27:20", - 3919 + 17715 ], [ "2022-09-12T17:31:29", - 3921 + 17865 ], [ "2022-09-15T12:40:02", - 3927 + 18309 ], [ "2022-09-16T01:11:41", - 3929 + 18521 ], [ "2022-09-17T01:12:07", - 3933 + 18615 ], [ "2022-09-19T22:06:52", - 3936 + 18825 ], [ "2022-09-20T01:15:00", - 3936 + 18926 ], [ "2022-09-21T18:40:27", - 3937 + 19294 ], [ "2022-09-22T16:43:34", - 3938 + 19430 ], [ "2022-09-25T01:14:04", - 3955 + 19912 ], [ "2022-09-26T01:16:57", - 3955 + 19914 ], [ "2022-09-27T20:49:14", - 3958 + 20267 ], [ "2022-09-30T01:39:04", - 3965 + 20440 ], [ "2022-10-01T17:39:25", - 3967 + 20592 ], [ "2022-10-02T12:03:53", - 3967 + 20642 ], [ "2022-10-03T08:03:32", - 3968 + 20679 ], [ "2022-10-04T01:20:50", - 3976 + 21206 ], [ "2022-10-05T01:21:27", - 3980 + 21582 ], [ "2022-10-08T23:24:13", - 4000 + 22127 ], [ "2022-10-10T01:35:49", - 4002 + 22160 ], [ "2022-10-11T01:16:06", - 4002 + 22273 ], [ "2022-10-12T19:05:48", - 4004 + 22531 ], [ "2022-10-13T01:19:16", - 4004 + 22571 ], [ "2022-10-14T01:30:33", - 4013 + 22766 ], [ "2022-10-15T01:22:21", - 4024 + 22918 ], [ "2022-10-16T21:43:31", - 4024 + 23255 ], [ "2022-10-18T06:25:58", - 4035 + 23473 ], [ "2022-10-22T11:41:20", - 4073 + 24408 ], [ "2022-10-23T01:13:56", - 4075 + 24408 ], [ "2022-10-24T20:11:55", - 4082 + 24766 ], [ "2022-10-25T00:08:55", - 4082 + 24793 ], [ "2022-10-26T01:07:23", - 4087 + 25198 ], [ "2022-10-27T01:11:40", - 4088 + 25360 ], [ "2022-10-29T01:02:52", - 4102 + 25918 ], [ "2022-10-30T20:09:57", - 4102 + 26142 ], [ "2022-10-31T22:27:03", - 4104 + 26243 ], [ "2022-11-01T18:25:59", - 4104 + 26361 ], [ "2022-11-03T01:11:15", - 4132 + 26535 ], [ "2022-11-04T11:35:34", - 4149 + 26732 ], [ "2022-11-05T07:41:24", - 4157 + 26775 ], [ "2022-11-06T11:06:34", - 4157 + 26817 ], [ "2022-11-07T19:40:53", - 4167 + 26913 ], [ "2022-11-08T01:06:52", - 4170 + 26964 ], [ "2022-11-11T17:10:50", - 4184 + 27435 ], [ "2022-11-13T20:58:24", - 4184 + 27613 ], [ "2022-11-14T23:48:23", @@ -16402,4507 +16378,12064 @@ ], [ "2022-11-15T07:38:22", - 4192 + 27870 ], [ "2022-11-17T09:11:40", - 4202 + 28473 ], [ "2022-11-19T22:14:34", - 4205 + 28858 ], [ "2022-11-21T23:47:48", - 4209 + 29106 ], [ "2022-11-22T01:14:59", - 4209 + 29117 ], [ "2022-11-23T23:28:30", - 4213 + 29307 ], [ "2022-11-26T01:00:47", - 4216 + 29407 ], [ "2022-11-28T01:02:53", - 4219 + 29424 ], [ "2022-12-07T07:19:55", - 4259 + 30367 ], [ "2022-12-18T20:23:59", - 4332 + 32057 ], [ "2022-12-19T18:26:59", - 4339 + 32350 ], [ "2022-12-20T16:08:58", - 4341 + 32526 ], [ "2022-12-21T23:23:24", - 4350 + 32765 ], [ "2022-12-22T22:59:06", - 4350 + 32907 ], [ "2022-12-24T20:01:35", - 4350 + 32943 ], [ "2022-12-25T21:13:52", - 4350 + 33040 ], [ "2022-12-26T19:30:31", - 4353 + 33337 ], [ "2022-12-27T23:56:39", - 4353 + 33479 ], [ "2022-12-29T20:55:31", - 4353 + 33705 ], [ "2022-12-30T20:56:36", - 4353 + 33756 ], [ "2022-12-31T08:10:29", - 4353 + 33760 ], [ "2023-01-01T23:58:03", - 4353 + 33900 ], [ "2023-01-02T23:32:43", - 4375 + 33969 ], [ "2023-01-04T01:14:45", - 4380 + 34253 ], [ "2023-01-05T00:40:47", - 4381 + 34525 ], [ "2023-01-06T15:27:19", - 4387 + 34898 ], [ "2023-01-07T23:05:20", - 4393 + 35001 ], [ "2023-01-09T23:13:18", - 4400 + 37122 ], [ "2023-01-10T22:19:22", - 4407 + 37363 ], [ "2023-01-11T20:38:34", - 4412 + 37589 ], [ "2023-01-12T19:14:41", - 4416 + 37752 ], [ "2023-01-14T22:19:17", - 4420 + 38021 ], [ "2023-01-15T05:54:49", - 4420 + 38085 ], [ "2023-01-16T01:07:20", - 4420 + 38341 ], [ "2023-01-18T01:10:41", - 4431 + 39502 ], [ "2023-01-19T01:11:47", - 4436 + 39748 ], [ "2023-01-20T01:07:56", - 4449 + 39955 ], [ "2023-01-21T01:11:30", - 4457 + 40172 ], [ "2023-01-22T23:52:22", - 4457 + 40330 ], [ "2023-01-24T01:13:09", - 4460 + 40628 ], [ "2023-01-25T01:09:15", - 4460 + 40791 ], [ "2023-01-27T01:08:47", - 4471 + 41965 ], [ "2023-01-28T23:00:24", - 4476 + 42833 ], [ "2023-01-29T11:12:53", - 4476 + 43282 ], [ "2023-01-31T09:09:55", - 4486 + 43814 ], [ "2023-02-04T01:08:11", - 4494 + 44147 ], [ "2023-02-05T19:16:16", - 4494 + 44373 ], [ "2023-02-06T01:06:21", - 4494 + 44378 ], [ "2023-02-07T01:06:44", - 4495 + 44448 ], [ "2023-02-08T19:33:17", - 4495 + 44537 ], [ "2023-02-16T01:07:41", - 4564 + 45239 ], [ "2023-02-17T20:09:45", - 4578 + 45376 ], [ "2023-02-19T16:48:31", - 4584 + 45571 ], [ "2023-02-22T01:09:24", - 4604 + 45753 ], [ "2023-02-25T18:11:10", - 4625 + 46412 ], [ "2023-02-26T01:20:44", - 4629 + 46460 ], [ "2023-02-27T01:05:31", - 4633 + 46524 ], [ "2023-02-28T01:12:07", - 4639 + 46611 ], [ "2023-03-01T01:11:53", - 4646 + 46672 ], [ "2023-03-02T01:11:37", - 4652 + 46726 ], [ "2023-03-04T19:06:27", - 4673 + 46836 ], [ "2023-03-05T21:22:00", - 4693 + 46863 ], [ "2023-03-06T18:58:36", - 4709 + 46936 ], [ "2023-03-07T22:04:26", - 4729 + 46970 ], [ "2023-03-11T18:55:05", - 4801 + 47133 ], [ "2023-03-13T01:08:17", - 4805 + 47173 ], [ "2023-03-16T01:14:43", - 4831 + 47333 ], [ "2023-03-25T20:41:27", - 4959 + 47693 ], [ "2023-03-26T18:35:58", - 4977 + 47711 ], [ "2023-03-27T19:04:51", - 4993 + 47757 ], [ "2023-03-28T14:20:40", - 5001 + 47825 ], [ "2023-03-29T01:10:08", - 5017 + 47867 ], [ "2023-03-30T01:06:23", - 5033 + 47908 ], [ "2023-04-01T16:38:16", - 5088 + 48010 ], [ "2023-04-02T18:16:54", - 5100 + 48030 ], [ "2023-04-03T20:17:29", - 5121 - ] - ], - "salesforce": [ + 48063 + ], [ - "2021-07-26T20:10:04", - 4784 + "2023-04-04T01:00:44", + 48094 ], [ - "2021-07-28T01:29:28", - 4851 + "2023-04-05T01:02:44", + 48149 ], [ - "2021-07-29T01:25:08", - 4901 + "2023-04-06T01:02:10", + 48200 ], [ - "2021-07-30T02:45:47", - 4953 + "2023-04-10T19:39:37", + 48300 ], [ - "2021-07-31T02:55:52", - 4989 + "2023-04-11T18:04:56", + 48352 ], [ - "2021-08-01T01:34:33", - 5020 + "2023-04-12T19:58:02", + 48396 ], [ - "2021-08-02T01:25:51", - 5057 + "2023-04-15T13:28:28", + 48480 ], [ - "2021-08-03T01:34:04", - 5101 + "2023-04-16T20:56:34", + 48503 ], [ - "2021-08-04T01:25:42", - 5140 + "2023-04-20T09:00:09", + 48585 ], [ - "2021-08-05T13:16:40", - 5197 + "2023-04-22T18:08:18", + 48714 ], [ - "2021-08-06T10:08:44", - 5230 + "2023-04-23T08:46:30", + 48722 ], [ - "2021-08-07T01:23:20", - 5260 + "2023-04-24T10:35:05", + 48729 ], [ - "2021-08-08T17:46:20", - 5309 + "2023-04-25T13:22:38", + 48793 ], [ - "2021-08-09T12:57:30", - 5352 + "2023-04-26T01:05:21", + 48827 ], [ - "2021-08-10T18:15:58", - 5375 + "2023-04-29T09:13:18", + 48965 ], [ - "2021-08-11T19:45:43", - 5397 + "2023-04-30T23:37:21", + 48972 ], [ - "2021-08-12T16:45:06", - 5432 + "2023-05-01T12:30:40", + 48974 ], [ - "2021-08-13T01:26:41", - 5459 + "2023-05-02T01:03:19", + 49019 ], [ - "2021-08-14T08:26:41", - 5488 + "2023-05-12T22:08:47", + 49356 ], [ - "2021-08-15T21:37:16", - 5518 + "2023-05-13T20:23:06", + 49374 ], [ - "2021-08-17T01:22:18", - 5537 + "2023-05-14T19:54:23", + 49393 ], [ - "2021-08-18T01:24:15", - 5567 + "2023-05-17T23:06:02", + 49529 ], [ - "2021-08-19T22:44:18", - 5666 + "2023-05-18T18:05:13", + 49564 ], [ - "2021-08-20T16:03:59", - 5695 + "2023-05-19T18:27:46", + 49635 ], [ - "2021-08-21T12:36:04", - 5721 + "2023-05-20T06:58:27", + 49654 ], [ - "2021-08-22T01:21:13", - 5729 + "2023-05-21T17:54:05", + 49663 ], [ - "2021-08-23T20:34:23", - 5782 + "2023-05-22T19:05:24", + 49704 ], [ - "2021-08-24T21:32:49", - 5816 + "2023-05-23T01:07:57", + 49708 ], [ - "2021-08-28T19:11:50", - 5872 + "2023-05-24T01:14:32", + 49750 ], [ - "2021-08-29T12:02:14", - 5896 + "2023-05-26T01:11:00", + 49869 ], [ - "2021-08-31T03:01:11", - 5939 + "2023-05-27T17:04:12", + 49926 ], [ - "2021-09-01T01:34:30", - 5976 + "2023-05-28T17:03:24", + 49930 ], [ - "2021-09-02T11:26:37", - 6008 + "2023-05-29T11:13:08", + 49939 ], [ - "2021-09-03T01:30:31", - 6043 + "2023-05-31T23:48:39", + 50079 ], [ - "2021-09-04T13:35:27", - 6058 + "2023-06-01T01:25:18", + 50083 ], [ - "2021-09-06T01:30:54", - 6093 + "2023-06-02T01:10:33", + 50168 ], [ - "2021-09-07T01:30:29", - 6118 + "2023-06-03T09:59:50", + 50256 ], [ - "2021-09-12T12:45:46", - 6208 + "2023-06-04T01:13:43", + 50274 ], [ - "2021-09-15T03:11:38", - 6284 + "2023-06-05T01:08:28", + 50290 ], [ - "2021-09-18T22:10:09", - 6378 + "2023-06-07T01:10:00", + 50424 ], [ - "2021-09-19T15:32:31", - 6392 + "2023-06-08T05:19:18", + 50506 ], [ - "2021-09-20T01:35:53", - 6402 + "2023-06-11T18:48:09", + 50690 ], [ - "2021-09-21T17:53:24", - 6459 + "2023-06-12T01:16:15", + 50693 ], [ - "2021-09-23T01:37:54", - 6516 + "2023-06-13T01:11:33", + 50761 ], [ - "2021-09-24T03:14:34", - 6565 + "2023-06-17T01:09:24", + 51059 ], [ - "2021-09-25T16:30:33", - 6630 + "2023-06-21T05:26:13", + 51184 ], [ - "2021-09-26T12:23:03", - 6651 + "2023-06-23T01:12:21", + 51246 ], [ - "2021-09-27T15:31:39", - 6667 + "2023-06-24T01:13:03", + 51289 ], [ - "2021-09-29T01:26:48", - 6709 + "2023-06-25T01:19:08", + 51291 ], [ - "2021-09-30T23:05:25", - 6763 + "2023-07-02T01:17:57", + 51514 ], [ - "2021-10-01T16:05:31", - 6802 + "2023-07-05T04:19:03", + 51573 ], [ - "2021-10-03T21:24:16", - 6860 + "2023-07-06T01:13:59", + 51619 ], [ - "2021-10-05T01:32:48", - 6878 + "2023-07-07T01:22:59", + 51638 ], [ - "2021-10-06T08:19:33", - 6922 + "2023-07-09T01:17:28", + 51687 ], [ - "2021-10-07T19:01:06", - 6968 + "2023-07-10T12:35:57", + 51714 ], [ - "2021-10-09T09:11:23", - 7010 + "2023-07-11T18:04:48", + 51775 ], [ - "2021-10-10T16:38:57", - 7037 + "2023-07-13T01:16:23", + 51854 ], [ - "2021-10-12T12:32:12", - 7072 + "2023-07-14T18:55:34", + 51951 ], [ - "2021-10-13T01:33:36", - 7096 + "2023-07-15T14:49:24", + 51963 ], [ - "2021-10-16T01:43:12", - 7190 + "2023-07-17T01:18:56", + 51965 ], [ - "2021-10-17T12:27:08", - 7230 + "2023-07-23T01:13:49", + 52251 ], [ - "2021-10-21T01:43:07", - 7383 + "2023-07-24T12:19:15", + 52264 ], [ - "2021-10-24T15:47:49", - 7458 + "2023-07-25T10:15:45", + 52331 ], [ - "2021-10-25T04:54:54", - 7479 + "2023-07-26T21:02:52", + 52448 ], [ - "2021-10-26T19:08:21", - 7533 + "2023-08-03T19:41:39", + 52784 ], [ - "2021-10-27T10:52:46", - 7551 + "2023-08-06T01:17:07", + 52836 ], [ - "2021-10-28T01:27:35", - 7565 + "2023-08-07T14:09:58", + 52843 ], [ - "2021-10-29T05:01:38", - 7610 + "2023-08-09T21:27:06", + 52984 ], [ - "2021-10-30T20:34:54", - 48 + "2023-08-10T00:37:45", + 52985 ], [ - "2021-10-31T18:17:07", - 7773 + "2023-08-11T00:59:39", + 53068 ], [ - "2021-11-01T01:50:59", - 7797 + "2023-08-14T01:07:10", + 53139 ], [ - "2021-11-02T11:56:56", - 7842 + "2023-08-20T10:19:30", + 53268 ], [ - "2021-11-03T01:34:05", - 7870 + "2023-08-21T01:02:38", + 53268 ], [ - "2021-11-04T22:06:35", - 7942 + "2023-08-22T05:14:32", + 53298 ], [ - "2021-11-07T22:48:14", - 8057 + "2023-08-23T01:09:12", + 53335 ], [ - "2021-11-08T16:38:12", - 8089 + "2023-08-24T08:23:46", + 53374 ], [ - "2021-11-09T14:05:16", - 8114 + "2023-08-25T01:09:33", + 53416 ], [ - "2021-11-11T23:43:38", - 8170 + "2023-08-26T15:48:29", + 53458 ], [ - "2021-11-12T07:23:40", - 8179 + "2023-09-01T01:00:53", + 53627 ], [ - "2021-11-13T03:49:42", - 8197 + "2023-09-02T06:53:40", + 53675 ], [ - "2021-11-14T20:38:46", - 8219 + "2023-09-03T17:23:10", + 53675 ], [ - "2021-11-15T21:50:19", - 8250 + "2023-09-04T01:14:42", + 53675 ], [ - "2021-11-17T13:49:27", - 8280 + "2023-09-06T09:29:05", + 53708 ], [ - "2021-11-18T12:57:03", - 8298 + "2023-09-08T01:01:21", + 53776 ], [ - "2021-11-19T01:41:21", - 8312 + "2023-09-17T18:42:04", + 53991 ], [ - "2021-11-21T18:45:36", - 8360 + "2023-09-18T07:24:56", + 53991 ], [ - "2021-11-22T21:51:21", - 8394 + "2023-09-19T01:04:12", + 54023 ], [ - "2021-11-24T01:32:35", - 8430 + "2023-09-20T15:31:08", + 54078 ], [ - "2021-11-25T01:36:17", - 8449 + "2023-09-21T01:10:04", + 54094 ], [ - "2021-11-26T01:28:24", - 8466 + "2023-09-22T16:54:09", + 54144 ], [ - "2021-11-27T01:29:49", - 8500 + "2023-09-24T01:09:47", + 54172 ], [ - "2021-11-29T19:53:22", - 8547 + "2023-09-26T01:03:52", + 54204 ], [ - "2021-12-01T21:53:10", - 8602 + "2023-09-28T01:03:35", + 54262 ], [ - "2021-12-02T22:38:42", - 8637 + "2023-10-02T10:16:34", + 54328 ], [ - "2021-12-03T07:25:47", - 8650 + "2023-10-11T01:02:27", + 54643 ], [ - "2021-12-04T10:20:40", - 8673 + "2023-10-12T07:12:13", + 54677 ], [ - "2021-12-05T01:37:50", - 8685 + "2023-10-15T18:35:06", + 54767 ], [ - "2021-12-06T01:34:54", - 8702 + "2023-10-16T01:12:02", + 54767 ], [ - "2021-12-07T19:17:16", - 8776 + "2023-10-17T01:19:48", + 54813 ], [ - "2021-12-08T11:50:21", - 8801 + "2023-10-18T09:54:25", + 54873 ], [ - "2021-12-09T08:24:35", - 8848 + "2023-10-19T05:13:12", + 54950 ], [ - "2021-12-11T10:08:27", - 8887 + "2023-10-20T21:26:06", + 54999 ], [ - "2021-12-12T01:37:49", - 8911 + "2023-10-21T07:20:54", + 55002 ], [ - "2021-12-14T01:36:23", - 8975 + "2023-10-22T21:40:43", + 55002 ], [ - "2021-12-15T01:38:21", - 8997 + "2023-10-24T01:08:57", + 55039 ], [ - "2021-12-16T01:40:15", - 9027 + "2023-10-25T03:48:19", + 55109 ], [ - "2021-12-17T01:41:18", - 9045 + "2023-10-28T17:16:00", + 55232 ], [ - "2021-12-18T12:07:04", - 9081 + "2023-10-29T10:04:35", + 55237 ], [ - "2021-12-21T13:52:15", - 9153 + "2023-10-30T01:06:23", + 55237 ], [ - "2021-12-23T13:53:28", - 9190 + "2023-10-31T01:15:37", + 55274 ], [ - "2021-12-26T01:43:59", - 9236 + "2023-11-01T12:58:49", + 55316 ], [ - "2021-12-29T20:36:25", - 9310 + "2023-11-03T22:34:05", + 55395 ], [ - "2021-12-31T01:38:18", - 9331 + "2023-11-04T17:14:00", + 55397 ], [ - "2022-01-01T01:37:58", - 9351 + "2023-11-05T18:48:33", + 55399 ], [ - "2022-01-03T22:58:05", - 9402 + "2023-11-06T22:30:41", + 55435 ], [ - "2022-01-09T14:02:41", - 9537 + "2023-11-07T22:42:00", + 55482 ], [ - "2022-01-11T01:36:44", - 9576 + "2023-11-08T22:22:32", + 55518 ], [ - "2022-01-12T01:35:34", - 9591 + "2023-11-09T22:42:59", + 55556 ], [ - "2022-01-13T09:24:45", - 9614 + "2023-11-10T22:40:09", + 55634 ], [ - "2022-01-14T01:38:08", - 9655 - ], + "2023-11-11T22:37:19", + 55635 + ] + ], + "python": [ [ - "2022-01-15T11:07:48", - 9681 + "2021-07-26T20:10:04", + 12114 ], [ - "2022-01-16T01:40:08", - 9688 + "2021-07-28T01:29:28", + 12392 ], [ - "2022-01-17T12:08:17", - 9710 + "2021-07-29T01:25:08", + 12554 ], [ - "2022-01-18T04:25:59", - 9732 + "2021-07-30T02:45:47", + 12647 ], [ - "2022-01-22T22:01:45", - 9853 + "2021-07-31T02:55:52", + 12754 ], [ - "2022-01-23T19:48:17", - 9925 + "2021-08-01T01:34:33", + 12781 ], [ - "2022-01-24T20:09:52", - 9978 + "2021-08-02T01:25:51", + 12831 ], [ - "2022-01-25T07:19:01", - 9990 + "2021-08-03T01:34:04", + 13033 ], [ - "2022-01-26T01:45:09", - 10009 + "2021-08-04T01:25:42", + 13261 ], [ - "2022-01-28T01:33:25", - 10091 + "2021-08-05T13:16:40", + 13489 ], [ - "2022-01-29T20:09:19", - 10121 + "2021-08-06T10:08:44", + 13664 ], [ - "2022-01-30T17:15:32", - 10142 + "2021-08-07T01:23:20", + 13846 ], [ - "2022-01-31T13:01:19", - 10179 + "2021-08-08T17:46:20", + 13935 ], [ - "2022-02-01T07:00:15", - 10214 + "2021-08-09T12:57:30", + 13981 ], [ - "2022-02-02T23:09:44", - 10246 + "2021-08-10T18:15:58", + 14214 ], [ - "2022-02-03T10:37:04", - 10275 + "2021-08-11T19:45:43", + 14545 ], [ - "2022-02-05T23:23:53", - 10343 + "2021-08-12T16:45:06", + 14755 ], [ - "2022-02-06T17:27:14", - 10357 + "2021-08-13T01:26:41", + 14874 ], [ - "2022-02-07T07:41:03", - 10371 + "2021-08-14T08:26:41", + 15073 ], [ - "2022-02-09T12:02:49", - 10414 + "2021-08-15T21:37:16", + 15148 ], [ - "2022-02-10T01:38:28", - 10421 + "2021-08-17T01:22:18", + 15350 ], [ - "2022-02-13T17:21:12", - 10492 + "2021-08-18T01:24:15", + 15695 ], [ - "2022-02-14T01:37:05", - 10501 + "2021-08-19T22:44:18", + 16060 ], [ - "2022-02-16T01:41:49", - 10590 + "2021-08-20T16:03:59", + 16230 ], [ - "2022-02-18T21:34:22", - 10753 + "2021-08-21T12:36:04", + 16461 ], [ - "2022-02-20T20:39:40", - 10829 + "2021-08-22T01:21:13", + 16489 ], [ - "2022-02-21T21:26:40", - 10886 + "2021-08-23T20:34:23", + 16769 ], [ - "2022-02-25T15:39:13", - 11060 + "2021-08-24T21:32:49", + 17102 ], [ - "2022-02-27T01:44:50", - 11121 + "2021-08-28T19:11:50", + 17673 ], [ - "2022-02-28T01:51:49", - 11156 + "2021-08-29T12:02:14", + 17813 ], [ - "2022-03-02T23:33:51", - 11225 + "2021-08-31T03:01:11", + 17950 ], [ - "2022-03-03T01:50:14", - 11228 + "2021-09-01T01:34:30", + 18097 ], [ - "2022-03-04T05:18:37", - 11240 + "2021-09-02T11:26:37", + 18385 ], [ - "2022-03-06T01:44:30", - 11266 + "2021-09-03T01:30:31", + 18498 ], [ - "2022-03-08T11:13:31", - 11276 + "2021-09-04T13:35:27", + 18586 ], [ - "2022-03-09T07:35:11", - 11285 + "2021-09-06T01:30:54", + 18619 ], [ - "2022-03-10T01:51:49", - 11293 + "2021-09-07T01:30:29", + 18663 ], [ - "2022-03-11T01:51:30", - 11305 + "2021-09-12T12:45:46", + 19323 ], [ - "2022-03-12T01:42:04", - 11321 + "2021-09-15T03:11:38", + 19752 ], [ - "2022-03-13T19:08:51", - 11326 + "2021-09-18T22:10:09", + 20215 ], [ - "2022-03-14T15:10:17", - 11334 + "2021-09-19T15:32:31", + 20290 ], [ - "2022-03-15T01:49:51", - 11338 + "2021-09-20T01:35:53", + 20322 ], [ - "2022-03-16T01:45:07", - 11358 + "2021-09-21T17:53:24", + 20479 ], [ - "2022-03-17T12:36:48", - 11387 + "2021-09-23T01:37:54", + 20838 ], [ - "2022-03-19T16:59:24", - 11409 + "2021-09-24T03:14:34", + 20957 ], [ - "2022-03-20T11:59:05", - 11413 + "2021-09-25T16:30:33", + 21082 ], [ - "2022-03-21T01:44:24", - 11423 + "2021-09-26T12:23:03", + 21118 ], [ - "2022-03-22T01:55:14", - 11439 + "2021-09-27T15:31:39", + 21278 ], [ - "2022-03-23T01:55:28", - 11459 + "2021-09-29T01:26:48", + 21465 ], [ - "2022-03-24T01:48:26", - 11477 + "2021-09-30T23:05:25", + 21750 ], [ - "2022-03-26T22:36:41", - 11500 + "2021-10-01T16:05:31", + 21808 ], [ - "2022-03-27T20:21:20", - 11502 + "2021-10-03T21:24:16", + 21957 ], [ - "2022-03-30T01:54:07", - 11548 + "2021-10-05T01:32:48", + 22052 ], [ - "2022-03-31T19:42:14", - 11561 + "2021-10-06T08:19:33", + 22135 ], [ - "2022-04-01T15:16:50", - 11565 + "2021-10-07T19:01:06", + 22351 ], [ - "2022-04-02T01:51:52", - 11569 + "2021-10-09T09:11:23", + 22455 ], [ - "2022-04-04T03:28:40", - 11574 + "2021-10-10T16:38:57", + 22538 ], [ - "2022-04-06T04:08:13", - 11598 + "2021-10-12T12:32:12", + 22694 ], [ - "2022-04-07T01:53:15", - 11600 + "2021-10-13T01:33:36", + 22764 ], [ - "2022-04-09T01:50:38", - 11636 + "2021-10-16T01:43:12", + 22948 ], [ - "2022-04-10T14:05:52", - 11641 + "2021-10-17T12:27:08", + 22990 ], [ - "2022-04-11T17:59:19", - 11647 + "2021-10-21T01:43:07", + 23368 ], [ - "2022-04-18T19:21:22", - 11772 + "2021-10-24T15:47:49", + 23763 ], [ - "2022-04-22T17:35:15", - 11851 + "2021-10-25T04:54:54", + 23787 ], [ - "2022-04-23T08:58:43", - 11855 + "2021-10-26T19:08:21", + 24038 ], [ - "2022-04-24T16:22:52", - 11860 + "2021-10-27T10:52:46", + 24169 ], [ - "2022-04-26T12:16:27", - 11880 + "2021-10-28T01:27:35", + 24297 ], [ - "2022-04-28T02:47:35", - 11896 + "2021-10-29T05:01:38", + 24528 ], [ - "2022-04-29T02:28:21", - 11923 + "2021-10-30T20:34:54", + 192 ], [ - "2022-04-30T15:55:37", - 11928 + "2021-10-31T18:17:07", + 25160 ], [ - "2022-05-02T02:22:46", - 11930 + "2021-11-01T01:50:59", + 25257 ], [ - "2022-05-03T15:10:47", - 11945 + "2021-11-02T11:56:56", + 25463 ], [ - "2022-05-04T02:21:38", - 11947 + "2021-11-03T01:34:05", + 25673 ], [ - "2022-05-05T02:29:20", - 11955 + "2021-11-04T22:06:35", + 26146 ], [ - "2022-05-06T01:57:12", - 11965 + "2021-11-07T22:48:14", + 26596 ], [ - "2022-05-07T15:43:47", - 11972 + "2021-11-08T16:38:12", + 26831 ], [ - "2022-05-08T09:22:07", - 11972 + "2021-11-09T14:05:16", + 27110 ], [ - "2022-05-11T18:46:39", - 11980 + "2021-11-11T23:43:38", + 27794 ], [ - "2022-05-14T10:19:10", - 11987 + "2021-11-12T07:23:40", + 27867 ], [ - "2022-05-15T18:35:14", - 11987 + "2021-11-13T03:49:42", + 28008 ], [ - "2022-05-17T02:16:25", - 11998 + "2021-11-14T20:38:46", + 28165 ], [ - "2022-05-20T02:14:29", - 12026 + "2021-11-15T21:50:19", + 28379 ], [ - "2022-05-21T01:55:42", - 12037 + "2021-11-17T13:49:27", + 28791 ], [ - "2022-05-22T02:10:42", - 12038 + "2021-11-18T12:57:03", + 29203 ], [ - "2022-05-24T11:16:46", - 12042 + "2021-11-19T01:41:21", + 29337 ], [ - "2022-05-25T02:18:32", - 12048 + "2021-11-21T18:45:36", + 29714 ], [ - "2022-05-27T02:15:18", - 12051 + "2021-11-22T21:51:21", + 30003 ], [ - "2022-05-28T02:22:34", - 12051 + "2021-11-24T01:32:35", + 30265 ], [ - "2022-05-30T02:21:03", - 12051 + "2021-11-25T01:36:17", + 30523 ], [ - "2022-05-31T19:33:59", - 12067 + "2021-11-26T01:28:24", + 30727 ], [ - "2022-06-01T02:31:42", - 12067 + "2021-11-27T01:29:49", + 30957 ], [ - "2022-06-02T02:27:43", - 12074 + "2021-11-29T19:53:22", + 31359 ], [ - "2022-06-03T01:55:13", - 12084 + "2021-12-01T21:53:10", + 32018 ], [ - "2022-06-08T20:16:03", - 12095 + "2021-12-02T22:38:42", + 32322 ], [ - "2022-06-09T13:28:16", - 12097 + "2021-12-03T07:25:47", + 32420 ], [ - "2022-06-10T02:21:45", - 12101 + "2021-12-04T10:20:40", + 32672 ], [ - "2022-06-11T02:20:43", - 12122 + "2021-12-05T01:37:50", + 32768 ], [ - "2022-06-12T13:23:39", - 12134 + "2021-12-06T01:34:54", + 32904 ], [ - "2022-06-14T02:30:00", - 12182 + "2021-12-07T19:17:16", + 33401 ], [ - "2022-06-15T20:20:02", - 12219 + "2021-12-08T11:50:21", + 33547 ], [ - "2022-06-17T02:17:40", - 12250 + "2021-12-09T08:24:35", + 33874 ], [ - "2022-06-19T07:40:43", - 12280 + "2021-12-11T10:08:27", + 34553 ], [ - "2022-06-22T23:37:06", - 12336 + "2021-12-12T01:37:49", + 34662 ], [ - "2022-06-23T09:06:53", - 12373 + "2021-12-14T01:36:23", + 35219 ], [ - "2022-06-24T02:16:36", - 12402 + "2021-12-15T01:38:21", + 35552 ], [ - "2022-06-25T02:27:04", - 12430 + "2021-12-16T01:40:15", + 35947 ], [ - "2022-06-26T16:16:05", - 12445 + "2021-12-17T01:41:18", + 36319 ], [ - "2022-09-10T23:57:56", - 13603 + "2021-12-18T12:07:04", + 36713 ], [ - "2022-09-11T17:27:20", - 13615 + "2021-12-21T13:52:15", + 37511 ], [ - "2022-09-12T17:31:29", - 13634 + "2021-12-23T13:53:28", + 38213 ], [ - "2022-09-15T12:40:02", - 13708 + "2021-12-26T01:43:59", + 38727 ], [ - "2022-09-16T01:11:41", - 13718 + "2021-12-29T20:36:25", + 39878 ], [ - "2022-09-17T01:12:07", - 13748 + "2021-12-31T01:38:18", + 40296 ], [ - "2022-09-19T22:06:52", - 13809 + "2022-01-01T01:37:58", + 40473 ], [ - "2022-09-20T01:15:00", - 13813 + "2022-01-03T22:58:05", + 41051 ], [ - "2022-09-21T18:40:27", - 13914 + "2022-01-09T14:02:41", + 42764 ], [ - "2022-09-22T16:43:34", - 13943 + "2022-01-11T01:36:44", + 43267 ], [ - "2022-09-25T01:14:04", - 13977 + "2022-01-12T01:35:34", + 43757 ], [ - "2022-09-26T01:16:57", - 13988 + "2022-01-13T09:24:45", + 44388 ], [ - "2022-09-27T20:49:14", - 14058 + "2022-01-14T01:38:08", + 44713 ], [ - "2022-09-30T01:39:04", - 14107 + "2022-01-15T11:07:48", + 45182 ], [ - "2022-10-01T17:39:25", - 14139 + "2022-01-16T01:40:08", + 45286 ], [ - "2022-10-02T12:03:53", - 14151 + "2022-01-17T12:08:17", + 45652 ], [ - "2022-10-03T08:03:32", - 14164 + "2022-01-18T04:25:59", + 45901 ], [ - "2022-10-04T01:20:50", - 14189 + "2022-01-22T22:01:45", + 48238 ], [ - "2022-10-05T01:21:27", - 14219 + "2022-01-23T19:48:17", + 48456 ], [ - "2022-10-08T23:24:13", - 14311 + "2022-01-24T20:09:52", + 49015 ], [ - "2022-10-10T01:35:49", - 14327 + "2022-01-25T07:19:01", + 49123 ], [ - "2022-10-11T01:16:06", - 14341 + "2022-01-26T01:45:09", + 49529 ], [ - "2022-10-12T19:05:48", - 14382 + "2022-01-28T01:33:25", + 50460 ], [ - "2022-10-13T01:19:16", - 14389 + "2022-01-29T20:09:19", + 51015 ], [ - "2022-10-14T01:30:33", - 14413 + "2022-01-30T17:15:32", + 51375 ], [ - "2022-10-15T01:22:21", - 14439 + "2022-01-31T13:01:19", + 51789 ], [ - "2022-10-16T21:43:31", - 14458 + "2022-02-01T07:00:15", + 52049 ], [ - "2022-10-18T06:25:58", - 14494 + "2022-02-02T23:09:44", + 52890 ], [ - "2022-10-22T11:41:20", - 14625 + "2022-02-03T10:37:04", + 53123 ], [ - "2022-10-23T01:13:56", - 14628 + "2022-02-05T23:23:53", + 53939 ], [ - "2022-10-24T20:11:55", - 14662 + "2022-02-06T17:27:14", + 54165 ], [ - "2022-10-25T00:08:55", - 14662 + "2022-02-07T07:41:03", + 54266 ], [ - "2022-10-26T01:07:23", - 14689 + "2022-02-09T12:02:49", + 55460 ], [ - "2022-10-27T01:11:40", - 14705 + "2022-02-10T01:38:28", + 55763 ], [ - "2022-10-29T01:02:52", - 14760 + "2022-02-13T17:21:12", + 56972 ], [ - "2022-10-30T20:09:57", - 14782 + "2022-02-14T01:37:05", + 57018 ], [ - "2022-10-31T22:27:03", - 14796 + "2022-02-16T01:41:49", + 58016 ], [ - "2022-11-01T18:25:59", - 14829 + "2022-02-18T21:34:22", + 59453 ], [ - "2022-11-03T01:11:15", - 14863 + "2022-02-20T20:39:40", + 59921 ], [ - "2022-11-04T11:35:34", - 14895 + "2022-02-21T21:26:40", + 60302 ], [ - "2022-11-05T07:41:24", - 14938 + "2022-02-25T15:39:13", + 61802 ], [ - "2022-11-06T11:06:34", - 14949 + "2022-02-27T01:44:50", + 62111 ], [ - "2022-11-07T19:40:53", - 14967 + "2022-02-28T01:51:49", + 62256 ], [ - "2022-11-08T01:06:52", - 14967 + "2022-03-02T23:33:51", + 63202 ], [ - "2022-11-11T17:10:50", - 15074 + "2022-03-03T01:50:14", + 63222 ], [ - "2022-11-13T20:58:24", - 15097 + "2022-03-04T05:18:37", + 63446 ], [ - "2022-11-14T23:48:23", - 0 + "2022-03-06T01:44:30", + 63741 ], [ - "2022-11-15T07:38:22", - 15126 + "2022-03-08T11:13:31", + 64105 ], [ - "2022-11-17T09:11:40", - 15172 + "2022-03-09T07:35:11", + 64274 ], [ - "2022-11-19T22:14:34", - 15215 + "2022-03-10T01:51:49", + 64388 ], [ - "2022-11-21T23:47:48", - 15245 + "2022-03-11T01:51:30", + 64515 ], [ - "2022-11-22T01:14:59", - 15248 + "2022-03-12T01:42:04", + 64668 ], [ - "2022-11-23T23:28:30", - 15286 + "2022-03-13T19:08:51", + 64753 ], [ - "2022-11-26T01:00:47", - 15329 + "2022-03-14T15:10:17", + 64841 ], [ - "2022-11-28T01:02:53", - 15352 + "2022-03-15T01:49:51", + 64907 ], [ - "2022-12-07T07:19:55", - 15644 + "2022-03-16T01:45:07", + 65108 ], [ - "2022-12-18T20:23:59", - 15776 + "2022-03-17T12:36:48", + 65286 ], [ - "2022-12-19T18:26:59", - 15781 + "2022-03-19T16:59:24", + 65509 ], [ - "2022-12-20T16:08:58", - 15787 + "2022-03-20T11:59:05", + 65551 ], [ - "2022-12-21T23:23:24", - 15806 + "2022-03-21T01:44:24", + 65571 ], [ - "2022-12-22T22:59:06", - 15828 + "2022-03-22T01:55:14", + 65686 ], [ - "2022-12-24T20:01:35", - 15841 + "2022-03-23T01:55:28", + 65834 ], [ - "2022-12-25T21:13:52", - 15846 + "2022-03-24T01:48:26", + 65983 ], [ - "2022-12-26T19:30:31", - 15851 + "2022-03-26T22:36:41", + 66332 ], [ - "2022-12-27T23:56:39", - 15855 + "2022-03-27T20:21:20", + 66473 ], [ - "2022-12-29T20:55:31", - 15869 + "2022-03-30T01:54:07", + 66896 ], [ - "2022-12-30T20:56:36", - 15875 + "2022-03-31T19:42:14", + 67239 ], [ - "2022-12-31T08:10:29", - 15880 + "2022-04-01T15:16:50", + 67412 ], [ - "2023-01-01T23:58:03", - 15885 + "2022-04-02T01:51:52", + 67461 ], [ - "2023-01-02T23:32:43", - 15889 + "2022-04-04T03:28:40", + 67546 ], [ - "2023-01-04T01:14:45", - 15900 + "2022-04-06T04:08:13", + 67808 ], [ - "2023-01-05T00:40:47", - 15909 + "2022-04-07T01:53:15", + 67968 ], [ - "2023-01-06T15:27:19", - 15934 + "2022-04-09T01:50:38", + 68244 ], [ - "2023-01-07T23:05:20", - 15939 + "2022-04-10T14:05:52", + 68326 ], [ - "2023-01-09T23:13:18", - 15956 + "2022-04-11T17:59:19", + 68472 ], [ - "2023-01-10T22:19:22", - 15971 + "2022-04-18T19:21:22", + 69692 ], [ - "2023-01-11T20:38:34", - 15979 + "2022-04-22T17:35:15", + 70553 ], [ - "2023-01-12T19:14:41", - 15983 + "2022-04-23T08:58:43", + 70640 ], [ - "2023-01-14T22:19:17", - 15995 + "2022-04-24T16:22:52", + 70726 ], [ - "2023-01-15T05:54:49", - 16000 + "2022-04-26T12:16:27", + 71175 ], [ - "2023-01-16T01:07:20", - 16000 + "2022-04-28T02:47:35", + 71693 ], [ - "2023-01-18T01:10:41", - 16016 + "2022-04-29T02:28:21", + 71943 ], [ - "2023-01-19T01:11:47", - 16052 + "2022-04-30T15:55:37", + 72194 ], [ - "2023-01-20T01:07:56", - 16081 + "2022-05-02T02:22:46", + 72313 ], [ - "2023-01-21T01:11:30", - 16137 + "2022-05-03T15:10:47", + 72693 ], [ - "2023-01-22T23:52:22", - 16142 + "2022-05-04T02:21:38", + 72892 ], [ - "2023-01-24T01:13:09", - 16177 + "2022-05-05T02:29:20", + 73174 ], [ - "2023-01-25T01:09:15", - 16205 + "2022-05-06T01:57:12", + 73350 + ], + [ + "2022-05-07T15:43:47", + 73524 + ], + [ + "2022-05-08T09:22:07", + 73563 + ], + [ + "2022-05-11T18:46:39", + 74431 + ], + [ + "2022-05-14T10:19:10", + 74966 + ], + [ + "2022-05-15T18:35:14", + 75025 + ], + [ + "2022-05-17T02:16:25", + 75288 + ], + [ + "2022-05-20T02:14:29", + 76045 + ], + [ + "2022-05-21T01:55:42", + 76141 + ], + [ + "2022-05-22T02:10:42", + 76169 + ], + [ + "2022-05-24T11:16:46", + 76570 + ], + [ + "2022-05-25T02:18:32", + 76775 + ], + [ + "2022-05-27T02:15:18", + 77367 + ], + [ + "2022-05-28T02:22:34", + 77616 + ], + [ + "2022-05-30T02:21:03", + 77735 + ], + [ + "2022-05-31T19:33:59", + 78055 + ], + [ + "2022-06-01T02:31:42", + 78128 + ], + [ + "2022-06-02T02:27:43", + 78363 + ], + [ + "2022-06-03T01:55:13", + 78667 + ], + [ + "2022-06-08T20:16:03", + 79795 + ], + [ + "2022-06-09T13:28:16", + 79968 + ], + [ + "2022-06-10T02:21:45", + 80151 + ], + [ + "2022-06-11T02:20:43", + 80314 + ], + [ + "2022-06-12T13:23:39", + 80361 + ], + [ + "2022-06-14T02:30:00", + 80699 + ], + [ + "2022-06-15T20:20:02", + 81237 + ], + [ + "2022-06-17T02:17:40", + 81585 + ], + [ + "2022-06-19T07:40:43", + 81804 + ], + [ + "2022-06-22T23:37:06", + 82519 + ], + [ + "2022-06-23T09:06:53", + 82603 + ], + [ + "2022-06-24T02:16:36", + 82833 + ], + [ + "2022-06-25T02:27:04", + 82998 + ], + [ + "2022-06-26T16:16:05", + 83123 + ], + [ + "2022-09-10T23:57:56", + 100871 + ], + [ + "2022-09-11T17:27:20", + 100978 + ], + [ + "2022-09-12T17:31:29", + 101217 + ], + [ + "2022-09-15T12:40:02", + 102297 + ], + [ + "2022-09-16T01:11:41", + 102537 + ], + [ + "2022-09-17T01:12:07", + 102754 + ], + [ + "2022-09-19T22:06:52", + 103169 + ], + [ + "2022-09-20T01:15:00", + 103274 + ], + [ + "2022-09-21T18:40:27", + 103841 + ], + [ + "2022-09-22T16:43:34", + 104225 + ], + [ + "2022-09-25T01:14:04", + 104862 + ], + [ + "2022-09-26T01:16:57", + 104938 + ], + [ + "2022-09-27T20:49:14", + 106119 + ], + [ + "2022-09-30T01:39:04", + 107276 + ], + [ + "2022-10-01T17:39:25", + 107616 + ], + [ + "2022-10-02T12:03:53", + 107693 + ], + [ + "2022-10-03T08:03:32", + 107854 + ], + [ + "2022-10-04T01:20:50", + 108270 + ], + [ + "2022-10-05T01:21:27", + 108637 + ], + [ + "2022-10-08T23:24:13", + 109921 + ], + [ + "2022-10-10T01:35:49", + 109971 + ], + [ + "2022-10-11T01:16:06", + 110310 + ], + [ + "2022-10-12T19:05:48", + 111094 + ], + [ + "2022-10-13T01:19:16", + 111351 + ], + [ + "2022-10-14T01:30:33", + 111957 + ], + [ + "2022-10-15T01:22:21", + 112331 + ], + [ + "2022-10-16T21:43:31", + 112450 + ], + [ + "2022-10-18T06:25:58", + 112995 + ], + [ + "2022-10-22T11:41:20", + 114727 + ], + [ + "2022-10-23T01:13:56", + 114775 + ], + [ + "2022-10-24T20:11:55", + 115322 + ], + [ + "2022-10-25T00:08:55", + 115408 + ], + [ + "2022-10-26T01:07:23", + 116029 + ], + [ + "2022-10-27T01:11:40", + 116590 + ], + [ + "2022-10-29T01:02:52", + 117610 + ], + [ + "2022-10-30T20:09:57", + 117840 + ], + [ + "2022-10-31T22:27:03", + 118339 + ], + [ + "2022-11-01T18:25:59", + 118704 + ], + [ + "2022-11-03T01:11:15", + 119324 + ], + [ + "2022-11-04T11:35:34", + 119914 + ], + [ + "2022-11-05T07:41:24", + 120143 + ], + [ + "2022-11-06T11:06:34", + 120251 + ], + [ + "2022-11-07T19:40:53", + 120812 + ], + [ + "2022-11-08T01:06:52", + 120981 + ], + [ + "2022-11-11T17:10:50", + 123012 + ], + [ + "2022-11-13T20:58:24", + 123572 + ], + [ + "2022-11-14T23:48:23", + 0 + ], + [ + "2022-11-15T07:38:22", + 124242 + ], + [ + "2022-11-17T09:11:40", + 125561 + ], + [ + "2022-11-19T22:14:34", + 126647 + ], + [ + "2022-11-21T23:47:48", + 127228 + ], + [ + "2022-11-22T01:14:59", + 127278 + ], + [ + "2022-11-23T23:28:30", + 128217 + ], + [ + "2022-11-26T01:00:47", + 128828 + ], + [ + "2022-11-28T01:02:53", + 129131 + ], + [ + "2022-12-07T07:19:55", + 133802 + ], + [ + "2022-12-18T20:23:59", + 138864 + ], + [ + "2022-12-19T18:26:59", + 139150 + ], + [ + "2022-12-20T16:08:58", + 139498 + ], + [ + "2022-12-21T23:23:24", + 140102 + ], + [ + "2022-12-22T22:59:06", + 140496 + ], + [ + "2022-12-24T20:01:35", + 140786 + ], + [ + "2022-12-25T21:13:52", + 140818 + ], + [ + "2022-12-26T19:56:00", + 140920 + ], + [ + "2022-12-27T23:56:39", + 141171 + ], + [ + "2022-12-29T20:55:31", + 141503 + ], + [ + "2022-12-30T20:56:36", + 141638 + ], + [ + "2022-12-31T08:10:29", + 141690 + ], + [ + "2023-01-01T23:58:03", + 141832 + ], + [ + "2023-01-02T23:32:43", + 141974 + ], + [ + "2023-01-04T01:14:45", + 142406 + ], + [ + "2023-01-05T00:40:47", + 142966 + ], + [ + "2023-01-06T15:27:19", + 143598 + ], + [ + "2023-01-07T23:05:20", + 143981 + ], + [ + "2023-01-09T23:13:18", + 144627 + ], + [ + "2023-01-10T22:19:22", + 145146 + ], + [ + "2023-01-11T20:38:34", + 145622 + ], + [ + "2023-01-12T19:14:41", + 145991 + ], + [ + "2023-01-14T22:19:17", + 146541 + ], + [ + "2023-01-15T05:54:49", + 146579 + ], + [ + "2023-01-16T01:07:20", + 146752 + ], + [ + "2023-01-18T01:10:41", + 147365 + ], + [ + "2023-01-19T01:11:47", + 147868 + ], + [ + "2023-01-20T01:07:56", + 148411 + ], + [ + "2023-01-21T01:11:30", + 148977 + ], + [ + "2023-01-22T23:52:22", + 149183 + ], + [ + "2023-01-24T01:13:09", + 149765 + ], + [ + "2023-01-25T01:09:15", + 150196 + ], + [ + "2023-01-27T01:08:47", + 151020 + ], + [ + "2023-01-28T23:00:24", + 151557 + ], + [ + "2023-01-29T11:12:53", + 151596 + ], + [ + "2023-01-31T09:09:55", + 152256 + ], + [ + "2023-02-04T01:08:11", + 154070 + ], + [ + "2023-02-05T19:16:16", + 154277 + ], + [ + "2023-02-06T01:06:21", + 154354 + ], + [ + "2023-02-07T01:06:44", + 154867 + ], + [ + "2023-02-08T19:33:17", + 155660 + ], + [ + "2023-02-16T01:07:41", + 158821 + ], + [ + "2023-02-17T20:09:45", + 159652 + ], + [ + "2023-02-19T16:48:31", + 160036 + ], + [ + "2023-02-22T01:09:24", + 161175 + ], + [ + "2023-02-25T18:11:10", + 162943 + ], + [ + "2023-02-26T01:20:44", + 162979 + ], + [ + "2023-02-27T01:05:31", + 163146 + ], + [ + "2023-02-28T01:12:07", + 163711 + ], + [ + "2023-03-01T01:11:53", + 164193 + ], + [ + "2023-03-02T01:11:37", + 164690 + ], + [ + "2023-03-04T19:06:27", + 165996 + ], + [ + "2023-03-05T21:22:00", + 166291 + ], + [ + "2023-03-06T18:58:36", + 166786 + ], + [ + "2023-03-07T22:04:26", + 168105 + ], + [ + "2023-03-11T18:55:05", + 171255 + ], + [ + "2023-03-13T01:08:17", + 171481 + ], + [ + "2023-03-16T01:14:43", + 173745 + ], + [ + "2023-03-25T20:41:27", + 179705 + ], + [ + "2023-03-26T18:35:58", + 179894 + ], + [ + "2023-03-27T19:04:51", + 180520 + ], + [ + "2023-03-28T14:20:40", + 181249 + ], + [ + "2023-03-29T01:10:08", + 181616 + ], + [ + "2023-03-30T01:06:23", + 182463 + ], + [ + "2023-04-01T16:38:16", + 184103 + ], + [ + "2023-04-02T18:16:54", + 184448 + ], + [ + "2023-04-03T20:17:29", + 185068 + ], + [ + "2023-04-04T01:00:44", + 185233 + ], + [ + "2023-04-05T01:02:44", + 185836 + ], + [ + "2023-04-06T01:02:10", + 186421 + ], + [ + "2023-04-10T19:39:37", + 187902 + ], + [ + "2023-04-11T18:04:56", + 188375 + ], + [ + "2023-04-12T19:58:02", + 188985 + ], + [ + "2023-04-15T13:28:28", + 190205 + ], + [ + "2023-04-16T20:56:34", + 190514 + ], + [ + "2023-04-20T09:00:09", + 192380 + ], + [ + "2023-04-22T18:08:18", + 193451 + ], + [ + "2023-04-23T08:46:30", + 193559 + ], + [ + "2023-04-24T10:35:05", + 193896 + ], + [ + "2023-04-25T13:22:38", + 194609 + ], + [ + "2023-04-26T01:05:21", + 194928 + ], + [ + "2023-04-29T09:13:18", + 196532 + ], + [ + "2023-04-30T23:37:21", + 196901 + ], + [ + "2023-05-01T12:30:40", + 197167 + ], + [ + "2023-05-02T01:03:19", + 197650 + ], + [ + "2023-05-12T22:08:47", + 203644 + ], + [ + "2023-05-13T20:23:06", + 203948 + ], + [ + "2023-05-14T19:54:23", + 204309 + ], + [ + "2023-05-17T23:06:02", + 206008 + ], + [ + "2023-05-18T18:05:13", + 206554 + ], + [ + "2023-05-19T18:27:46", + 207221 + ], + [ + "2023-05-20T06:58:27", + 207495 + ], + [ + "2023-05-21T17:54:05", + 207701 + ], + [ + "2023-05-22T19:05:24", + 208159 + ], + [ + "2023-05-23T01:07:57", + 208311 + ], + [ + "2023-05-24T01:14:32", + 209103 + ], + [ + "2023-05-26T01:11:00", + 210357 + ], + [ + "2023-05-27T17:04:12", + 210946 + ], + [ + "2023-05-28T17:03:24", + 211066 + ], + [ + "2023-05-29T11:13:08", + 211275 + ], + [ + "2023-05-31T23:48:39", + 212640 + ], + [ + "2023-06-01T01:25:18", + 212752 + ], + [ + "2023-06-02T01:10:33", + 213377 + ], + [ + "2023-06-03T09:59:50", + 213971 + ], + [ + "2023-06-04T01:13:43", + 214027 + ], + [ + "2023-06-05T01:08:28", + 214127 + ], + [ + "2023-06-07T01:10:00", + 215444 + ], + [ + "2023-06-08T05:19:18", + 216241 + ], + [ + "2023-06-11T18:48:09", + 217500 + ], + [ + "2023-06-12T01:16:15", + 217578 + ], + [ + "2023-06-13T01:11:33", + 218129 + ], + [ + "2023-06-17T01:09:24", + 220479 + ], + [ + "2023-06-21T05:26:13", + 221931 + ], + [ + "2023-06-23T01:12:21", + 223162 + ], + [ + "2023-06-24T01:13:03", + 223567 + ], + [ + "2023-06-25T01:19:08", + 223616 + ], + [ + "2023-07-02T01:17:57", + 226462 + ], + [ + "2023-07-05T04:19:03", + 227461 + ], + [ + "2023-07-06T01:13:59", + 228077 + ], + [ + "2023-07-07T01:22:59", + 228529 + ], + [ + "2023-07-09T01:17:28", + 229209 + ], + [ + "2023-07-10T12:35:57", + 229620 + ], + [ + "2023-07-11T18:04:48", + 230515 + ], + [ + "2023-07-13T01:16:23", + 231337 + ], + [ + "2023-07-14T18:55:34", + 232317 + ], + [ + "2023-07-15T14:49:24", + 232549 + ], + [ + "2023-07-17T01:18:56", + 232726 + ], + [ + "2023-07-23T01:13:49", + 235406 + ], + [ + "2023-07-24T12:19:15", + 235640 + ], + [ + "2023-07-25T10:15:45", + 236182 + ], + [ + "2023-07-26T21:02:52", + 237245 + ], + [ + "2023-08-03T19:41:39", + 240747 + ], + [ + "2023-08-06T01:17:07", + 241369 + ], + [ + "2023-08-07T14:09:58", + 241629 + ], + [ + "2023-08-09T21:27:06", + 242771 + ], + [ + "2023-08-10T00:37:45", + 242792 + ], + [ + "2023-08-11T00:59:39", + 243344 + ], + [ + "2023-08-14T01:07:10", + 243846 + ], + [ + "2023-08-20T10:19:30", + 246486 + ], + [ + "2023-08-21T01:02:38", + 246540 + ], + [ + "2023-08-22T05:14:32", + 247084 + ], + [ + "2023-08-23T01:09:12", + 247492 + ], + [ + "2023-08-24T08:23:46", + 248224 + ], + [ + "2023-08-25T01:09:33", + 248730 + ], + [ + "2023-08-26T15:48:29", + 249258 + ], + [ + "2023-09-01T01:00:53", + 251368 + ], + [ + "2023-09-02T06:53:40", + 251930 + ], + [ + "2023-09-03T17:23:10", + 252067 + ], + [ + "2023-09-04T01:14:42", + 252127 + ], + [ + "2023-09-06T09:29:05", + 253338 + ], + [ + "2023-09-08T01:01:21", + 254401 + ], + [ + "2023-09-17T18:42:04", + 258505 + ], + [ + "2023-09-18T07:24:56", + 258755 + ], + [ + "2023-09-19T01:04:12", + 259342 + ], + [ + "2023-09-20T15:31:08", + 260278 + ], + [ + "2023-09-21T01:10:04", + 260516 + ], + [ + "2023-09-22T16:54:09", + 261564 + ], + [ + "2023-09-24T01:09:47", + 261858 + ], + [ + "2023-09-26T01:03:52", + 262537 + ], + [ + "2023-09-28T01:03:35", + 263666 + ], + [ + "2023-10-02T10:16:34", + 264978 + ], + [ + "2023-10-11T01:02:27", + 268831 + ], + [ + "2023-10-12T07:12:13", + 269333 + ], + [ + "2023-10-15T18:35:06", + 270258 + ], + [ + "2023-10-16T01:12:02", + 270286 + ], + [ + "2023-10-17T01:19:48", + 270939 + ], + [ + "2023-10-18T09:54:25", + 271685 + ], + [ + "2023-10-19T05:13:12", + 272178 + ], + [ + "2023-10-20T21:26:06", + 273307 + ], + [ + "2023-10-21T07:20:54", + 273458 + ], + [ + "2023-10-22T21:40:43", + 273816 + ], + [ + "2023-10-24T01:08:57", + 274542 + ], + [ + "2023-10-25T03:48:19", + 275204 + ], + [ + "2023-10-28T17:16:00", + 277025 + ], + [ + "2023-10-29T10:04:35", + 277108 + ], + [ + "2023-10-30T01:06:23", + 277184 + ], + [ + "2023-10-31T01:15:37", + 277976 + ], + [ + "2023-11-01T12:58:49", + 278635 + ], + [ + "2023-11-03T22:34:05", + 280069 + ], + [ + "2023-11-04T17:14:00", + 280243 + ], + [ + "2023-11-05T18:48:33", + 280348 + ], + [ + "2023-11-06T22:30:41", + 281038 + ], + [ + "2023-11-07T22:42:00", + 281777 + ], + [ + "2023-11-08T22:22:32", + 282451 + ], + [ + "2023-11-09T22:42:59", + 282844 + ], + [ + "2023-11-10T22:40:09", + 283417 + ], + [ + "2023-11-11T22:37:19", + 283527 + ] + ], + "ruby": [ + [ + "2021-07-26T20:10:04", + 978 + ], + [ + "2021-07-28T01:29:28", + 985 + ], + [ + "2021-07-29T01:25:08", + 985 + ], + [ + "2021-07-30T02:45:47", + 990 + ], + [ + "2021-07-31T02:55:52", + 992 + ], + [ + "2021-08-01T01:34:33", + 994 + ], + [ + "2021-08-02T01:25:51", + 995 + ], + [ + "2021-08-03T01:34:04", + 995 + ], + [ + "2021-08-04T01:25:42", + 1002 + ], + [ + "2021-08-05T13:16:40", + 1003 + ], + [ + "2021-08-06T10:08:44", + 1003 + ], + [ + "2021-08-07T01:23:20", + 1003 + ], + [ + "2021-08-08T17:46:20", + 1006 + ], + [ + "2021-08-09T12:57:30", + 1009 + ], + [ + "2021-08-10T18:15:58", + 1012 + ], + [ + "2021-08-11T19:45:43", + 1016 + ], + [ + "2021-08-12T16:45:06", + 1028 + ], + [ + "2021-08-13T01:26:41", + 1034 + ], + [ + "2021-08-14T08:26:41", + 1035 + ], + [ + "2021-08-15T21:37:16", + 1048 + ], + [ + "2021-08-17T01:22:18", + 1049 + ], + [ + "2021-08-18T01:24:15", + 1050 + ], + [ + "2021-08-19T22:44:18", + 1060 + ], + [ + "2021-08-20T16:03:59", + 1072 + ], + [ + "2021-08-21T12:36:04", + 1076 + ], + [ + "2021-08-22T01:21:13", + 1077 + ], + [ + "2021-08-23T20:34:23", + 1090 + ], + [ + "2021-08-24T21:32:49", + 1092 + ], + [ + "2021-08-28T19:11:50", + 1093 + ], + [ + "2021-08-29T12:02:14", + 1099 + ], + [ + "2021-08-31T03:01:11", + 1101 + ], + [ + "2021-09-01T01:34:30", + 1103 + ], + [ + "2021-09-02T11:26:37", + 1105 + ], + [ + "2021-09-03T01:30:31", + 1109 + ], + [ + "2021-09-04T13:35:27", + 1111 + ], + [ + "2021-09-06T01:30:54", + 1118 + ], + [ + "2021-09-07T01:30:29", + 1119 + ], + [ + "2021-09-12T12:45:46", + 1121 + ], + [ + "2021-09-15T03:11:38", + 1124 + ], + [ + "2021-09-18T22:10:09", + 1136 + ], + [ + "2021-09-19T15:32:31", + 1141 + ], + [ + "2021-09-20T01:35:53", + 1143 + ], + [ + "2021-09-21T17:53:24", + 1145 + ], + [ + "2021-09-23T01:37:54", + 1151 + ], + [ + "2021-09-24T03:14:34", + 1153 + ], + [ + "2021-09-25T16:30:33", + 1169 + ], + [ + "2021-09-26T12:23:03", + 1171 + ], + [ + "2021-09-27T15:31:39", + 1178 + ], + [ + "2021-09-29T01:26:48", + 1180 + ], + [ + "2021-09-30T23:05:25", + 1183 + ], + [ + "2021-10-01T16:05:31", + 1184 + ], + [ + "2021-10-03T21:24:16", + 1185 + ], + [ + "2021-10-05T01:32:48", + 1187 + ], + [ + "2021-10-06T08:19:33", + 1190 + ], + [ + "2021-10-07T19:01:06", + 1194 + ], + [ + "2021-10-09T09:11:23", + 1197 + ], + [ + "2021-10-10T16:38:57", + 1201 + ], + [ + "2021-10-12T12:32:12", + 1207 + ], + [ + "2021-10-13T01:33:36", + 1214 + ], + [ + "2021-10-16T01:43:12", + 1218 + ], + [ + "2021-10-17T12:27:08", + 1222 + ], + [ + "2021-10-21T01:43:07", + 1227 + ], + [ + "2021-10-24T15:47:49", + 1233 + ], + [ + "2021-10-25T04:54:54", + 1235 + ], + [ + "2021-10-26T19:08:21", + 1244 + ], + [ + "2021-10-27T10:52:46", + 1246 + ], + [ + "2021-10-29T05:01:38", + 1255 + ], + [ + "2021-10-30T20:34:54", + 46 + ], + [ + "2021-10-31T18:17:07", + 1324 + ], + [ + "2021-11-01T01:50:59", + 1337 + ], + [ + "2021-11-02T11:56:56", + 1355 + ], + [ + "2021-11-03T01:34:05", + 1378 + ], + [ + "2021-11-04T22:06:35", + 1411 + ], + [ + "2021-11-07T22:48:14", + 1433 + ], + [ + "2021-11-08T16:38:12", + 1444 + ], + [ + "2021-11-09T14:05:16", + 1460 + ], + [ + "2021-11-11T23:43:38", + 1475 + ], + [ + "2021-11-12T07:23:40", + 1476 + ], + [ + "2021-11-13T03:49:42", + 1478 + ], + [ + "2021-11-14T20:38:46", + 1482 + ], + [ + "2021-11-15T21:50:19", + 1507 + ], + [ + "2021-11-17T13:49:27", + 1510 + ], + [ + "2021-11-18T12:57:03", + 1511 + ], + [ + "2021-11-19T01:41:21", + 1517 + ], + [ + "2021-11-21T18:45:36", + 1519 + ], + [ + "2021-11-22T21:51:21", + 1535 + ], + [ + "2021-11-24T01:32:35", + 1536 + ], + [ + "2021-11-25T01:36:17", + 1537 + ], + [ + "2021-11-26T01:28:24", + 1538 + ], + [ + "2021-11-27T01:29:49", + 1539 + ], + [ + "2021-11-29T19:53:22", + 1543 + ], + [ + "2021-12-01T21:53:10", + 1550 + ], + [ + "2021-12-02T22:38:42", + 1557 + ], + [ + "2021-12-03T07:25:47", + 1560 + ], + [ + "2021-12-04T10:20:40", + 1562 + ], + [ + "2021-12-05T01:37:50", + 1566 + ], + [ + "2021-12-06T01:34:54", + 1569 + ], + [ + "2021-12-07T19:17:16", + 1598 + ], + [ + "2021-12-08T11:50:21", + 1600 + ], + [ + "2021-12-09T08:24:35", + 1619 + ], + [ + "2021-12-11T10:08:27", + 1620 + ], + [ + "2021-12-12T01:37:49", + 1635 + ], + [ + "2021-12-14T01:36:23", + 1640 + ], + [ + "2021-12-15T01:38:21", + 1641 + ], + [ + "2021-12-16T01:40:15", + 1642 + ], + [ + "2021-12-17T01:41:18", + 1642 + ], + [ + "2021-12-18T12:07:04", + 1643 + ], + [ + "2021-12-21T13:52:15", + 1652 + ], + [ + "2021-12-23T13:53:28", + 1654 + ], + [ + "2021-12-26T01:43:59", + 1655 + ], + [ + "2021-12-29T20:36:25", + 1673 + ], + [ + "2021-12-31T01:38:18", + 1675 + ], + [ + "2022-01-01T01:37:58", + 1676 + ], + [ + "2022-01-03T22:58:05", + 1678 + ], + [ + "2022-01-09T14:02:41", + 1705 + ], + [ + "2022-01-11T01:36:44", + 1719 + ], + [ + "2022-01-12T01:35:34", + 1720 + ], + [ + "2022-01-13T09:24:45", + 1733 + ], + [ + "2022-01-14T01:38:08", + 1739 + ], + [ + "2022-01-15T11:07:48", + 1742 + ], + [ + "2022-01-16T01:40:08", + 1744 + ], + [ + "2022-01-17T12:08:17", + 1745 + ], + [ + "2022-01-18T04:25:59", + 1747 + ], + [ + "2022-01-22T22:01:45", + 1751 + ], + [ + "2022-01-23T19:48:17", + 1769 + ], + [ + "2022-01-24T20:09:52", + 1775 + ], + [ + "2022-01-25T07:19:01", + 1775 + ], + [ + "2022-01-26T01:45:09", + 1778 + ], + [ + "2022-01-28T01:33:25", + 1782 + ], + [ + "2022-01-29T20:09:19", + 1786 + ], + [ + "2022-01-30T17:15:32", + 1800 + ], + [ + "2022-01-31T13:01:19", + 1814 + ], + [ + "2022-02-01T07:00:15", + 1816 + ], + [ + "2022-02-02T23:09:44", + 1819 + ], + [ + "2022-02-03T10:37:04", + 1840 + ], + [ + "2022-02-05T23:23:53", + 1843 + ], + [ + "2022-02-06T17:27:14", + 1846 + ], + [ + "2022-02-07T07:41:03", + 1847 + ], + [ + "2022-02-09T12:02:49", + 1854 + ], + [ + "2022-02-10T01:38:28", + 1856 + ], + [ + "2022-02-13T17:21:12", + 1857 + ], + [ + "2022-02-14T01:37:05", + 1861 + ], + [ + "2022-02-16T01:41:49", + 1863 + ], + [ + "2022-02-18T21:34:22", + 1864 + ], + [ + "2022-02-20T20:39:40", + 1891 + ], + [ + "2022-02-21T21:26:40", + 1903 + ], + [ + "2022-02-25T15:39:13", + 1904 + ], + [ + "2022-02-27T01:44:50", + 1904 + ], + [ + "2022-02-28T01:51:49", + 1910 + ], + [ + "2022-03-02T23:33:51", + 1910 + ], + [ + "2022-03-03T01:50:14", + 1910 + ], + [ + "2022-03-04T05:18:37", + 1910 + ], + [ + "2022-03-06T01:44:30", + 1910 + ], + [ + "2022-03-08T11:13:31", + 1914 + ], + [ + "2022-03-09T07:35:11", + 1918 + ], + [ + "2022-03-10T01:51:49", + 1929 + ], + [ + "2022-03-11T01:51:30", + 1929 + ], + [ + "2022-03-12T01:42:04", + 1929 + ], + [ + "2022-03-13T19:08:51", + 1929 + ], + [ + "2022-03-14T15:10:17", + 1929 + ], + [ + "2022-03-15T01:49:51", + 1929 + ], + [ + "2022-03-16T01:45:07", + 1929 + ], + [ + "2022-03-17T12:36:48", + 1930 + ], + [ + "2022-03-19T16:59:24", + 1935 + ], + [ + "2022-03-20T11:59:05", + 1935 + ], + [ + "2022-03-21T01:44:24", + 1961 + ], + [ + "2022-03-22T01:55:14", + 1983 + ], + [ + "2022-03-23T01:55:28", + 2003 + ], + [ + "2022-03-24T01:48:26", + 2007 + ], + [ + "2022-03-26T22:36:41", + 2010 + ], + [ + "2022-03-27T20:21:20", + 2010 + ], + [ + "2022-03-30T01:54:07", + 2018 + ], + [ + "2022-03-31T19:42:14", + 2031 + ], + [ + "2022-04-01T15:16:50", + 2036 + ], + [ + "2022-04-02T01:51:52", + 2036 + ], + [ + "2022-04-04T03:28:40", + 2037 + ], + [ + "2022-04-06T04:08:13", + 2037 + ], + [ + "2022-04-07T01:53:15", + 2037 + ], + [ + "2022-04-09T01:50:38", + 2053 + ], + [ + "2022-04-10T14:05:52", + 2053 + ], + [ + "2022-04-11T17:59:19", + 2058 + ], + [ + "2022-04-18T19:21:22", + 2081 + ], + [ + "2022-04-22T17:35:15", + 2096 + ], + [ + "2022-04-23T08:58:43", + 2096 + ], + [ + "2022-04-24T16:22:52", + 2096 + ], + [ + "2022-04-26T12:16:27", + 2100 + ], + [ + "2022-04-28T02:47:35", + 2110 + ], + [ + "2022-04-29T02:28:21", + 2119 + ], + [ + "2022-04-30T15:55:37", + 2124 + ], + [ + "2022-05-02T02:22:46", + 2124 + ], + [ + "2022-05-03T15:10:47", + 2136 + ], + [ + "2022-05-04T02:21:38", + 2136 + ], + [ + "2022-05-05T02:29:20", + 2146 + ], + [ + "2022-05-06T01:57:12", + 2167 + ], + [ + "2022-05-07T15:43:47", + 2175 + ], + [ + "2022-05-08T09:22:07", + 2181 + ], + [ + "2022-05-11T18:46:39", + 2203 + ], + [ + "2022-05-14T10:19:10", + 2224 + ], + [ + "2022-05-15T18:35:14", + 2226 + ], + [ + "2022-05-17T02:16:25", + 2235 + ], + [ + "2022-05-20T02:14:29", + 2257 + ], + [ + "2022-05-21T01:55:42", + 2259 + ], + [ + "2022-05-22T02:10:42", + 2264 + ], + [ + "2022-05-24T11:16:46", + 2280 + ], + [ + "2022-05-25T02:18:32", + 2286 + ], + [ + "2022-05-27T02:15:18", + 2309 + ], + [ + "2022-05-28T02:22:34", + 2311 + ], + [ + "2022-05-30T02:21:03", + 2312 + ], + [ + "2022-05-31T19:33:59", + 2314 + ], + [ + "2022-06-01T02:31:42", + 2314 + ], + [ + "2022-06-02T02:27:43", + 2314 + ], + [ + "2022-06-03T01:55:13", + 2314 + ], + [ + "2022-06-08T20:16:03", + 2315 + ], + [ + "2022-06-09T13:28:16", + 2315 + ], + [ + "2022-06-10T02:21:45", + 2316 + ], + [ + "2022-06-11T02:20:43", + 2316 + ], + [ + "2022-06-12T13:23:39", + 2317 + ], + [ + "2022-06-14T02:30:00", + 2318 + ], + [ + "2022-06-15T20:20:02", + 2318 + ], + [ + "2022-06-17T02:17:40", + 2318 + ], + [ + "2022-06-19T07:40:43", + 2319 + ], + [ + "2022-06-22T23:37:06", + 2321 + ], + [ + "2022-06-23T09:06:53", + 2321 + ], + [ + "2022-06-24T02:16:36", + 2321 + ], + [ + "2022-06-25T02:27:04", + 2323 + ], + [ + "2022-06-26T16:16:05", + 2323 + ], + [ + "2022-09-10T23:57:56", + 2537 + ], + [ + "2022-09-11T17:27:20", + 2539 + ], + [ + "2022-09-12T17:31:29", + 2545 + ], + [ + "2022-09-15T12:40:02", + 2547 + ], + [ + "2022-09-16T01:11:41", + 2547 + ], + [ + "2022-09-17T01:12:07", + 2560 + ], + [ + "2022-09-19T22:06:52", + 2567 + ], + [ + "2022-09-20T01:15:00", + 2567 + ], + [ + "2022-09-21T18:40:27", + 2580 + ], + [ + "2022-09-22T16:43:34", + 2580 + ], + [ + "2022-09-25T01:14:04", + 2582 + ], + [ + "2022-09-26T01:16:57", + 2582 + ], + [ + "2022-09-27T20:49:14", + 2587 + ], + [ + "2022-09-30T01:39:04", + 2587 + ], + [ + "2022-10-01T17:39:25", + 2588 + ], + [ + "2022-10-02T12:03:53", + 2588 + ], + [ + "2022-10-03T08:03:32", + 2588 + ], + [ + "2022-10-04T01:20:50", + 2610 + ], + [ + "2022-10-05T01:21:27", + 2623 + ], + [ + "2022-10-08T23:24:13", + 2635 + ], + [ + "2022-10-10T01:35:49", + 2635 + ], + [ + "2022-10-11T01:16:06", + 2649 + ], + [ + "2022-10-12T19:05:48", + 2653 + ], + [ + "2022-10-13T01:19:16", + 2653 + ], + [ + "2022-10-14T01:30:33", + 2653 + ], + [ + "2022-10-15T01:22:21", + 2660 + ], + [ + "2022-10-16T21:43:31", + 2660 + ], + [ + "2022-10-18T06:25:58", + 2661 + ], + [ + "2022-10-22T11:41:20", + 2667 + ], + [ + "2022-10-23T01:13:56", + 2667 + ], + [ + "2022-10-24T20:11:55", + 2674 + ], + [ + "2022-10-25T00:08:55", + 2674 + ], + [ + "2022-10-26T01:07:23", + 2684 + ], + [ + "2022-10-27T01:11:40", + 2688 + ], + [ + "2022-10-29T01:02:52", + 2712 + ], + [ + "2022-10-30T20:09:57", + 2714 + ], + [ + "2022-10-31T22:27:03", + 2716 + ], + [ + "2022-11-01T18:25:59", + 2718 + ], + [ + "2022-11-03T01:11:15", + 2719 + ], + [ + "2022-11-04T11:35:34", + 2719 + ], + [ + "2022-11-05T07:41:24", + 2719 + ], + [ + "2022-11-06T11:06:34", + 2719 + ], + [ + "2022-11-07T19:40:53", + 2719 + ], + [ + "2022-11-08T01:06:52", + 2719 + ], + [ + "2022-11-11T17:10:50", + 2722 + ], + [ + "2022-11-13T20:58:24", + 2722 + ], + [ + "2022-11-14T23:48:23", + 0 + ], + [ + "2022-11-15T07:38:22", + 2722 + ], + [ + "2022-11-17T09:11:40", + 2722 + ], + [ + "2022-11-19T22:14:34", + 2729 + ], + [ + "2022-11-21T23:47:48", + 2730 + ], + [ + "2022-11-22T01:14:59", + 2730 + ], + [ + "2022-11-23T23:28:30", + 2746 + ], + [ + "2022-11-26T01:00:47", + 2751 + ], + [ + "2022-11-28T01:02:53", + 2751 + ], + [ + "2022-12-07T07:19:55", + 2766 + ], + [ + "2022-12-18T20:23:59", + 2785 + ], + [ + "2022-12-19T18:26:59", + 2785 + ], + [ + "2022-12-20T16:08:58", + 2787 + ], + [ + "2022-12-21T23:23:24", + 2791 + ], + [ + "2022-12-22T22:59:06", + 2791 + ], + [ + "2022-12-24T20:01:35", + 2793 + ], + [ + "2022-12-25T21:13:52", + 2793 + ], + [ + "2022-12-26T19:30:31", + 2795 + ], + [ + "2022-12-27T23:56:39", + 2795 + ], + [ + "2022-12-29T20:55:31", + 2797 + ], + [ + "2022-12-30T20:56:36", + 2797 + ], + [ + "2022-12-31T08:10:29", + 2797 + ], + [ + "2023-01-01T23:58:03", + 2797 + ], + [ + "2023-01-02T23:32:43", + 2797 + ], + [ + "2023-01-04T01:14:45", + 2797 + ], + [ + "2023-01-05T00:40:47", + 2802 + ], + [ + "2023-01-06T15:27:19", + 2802 + ], + [ + "2023-01-07T23:05:20", + 2802 + ], + [ + "2023-01-09T23:13:18", + 2805 + ], + [ + "2023-01-10T22:19:22", + 2807 + ], + [ + "2023-01-11T20:38:34", + 2810 + ], + [ + "2023-01-12T19:14:41", + 2813 + ], + [ + "2023-01-14T22:19:17", + 2815 + ], + [ + "2023-01-15T05:54:49", + 2815 + ], + [ + "2023-01-16T01:07:20", + 2815 + ], + [ + "2023-01-18T01:10:41", + 2824 + ], + [ + "2023-01-19T01:11:47", + 2828 + ], + [ + "2023-01-20T01:07:56", + 2838 + ], + [ + "2023-01-21T01:11:30", + 2843 + ], + [ + "2023-01-22T23:52:22", + 2843 + ], + [ + "2023-01-24T01:13:09", + 2843 + ], + [ + "2023-01-25T01:09:15", + 2843 + ], + [ + "2023-01-27T01:08:47", + 2846 + ], + [ + "2023-01-28T23:00:24", + 2850 + ], + [ + "2023-01-29T11:12:53", + 2850 + ], + [ + "2023-01-31T09:09:55", + 2867 + ], + [ + "2023-02-04T01:08:11", + 2877 + ], + [ + "2023-02-05T19:16:16", + 2877 + ], + [ + "2023-02-06T01:06:21", + 2877 + ], + [ + "2023-02-07T01:06:44", + 2881 + ], + [ + "2023-02-08T19:33:17", + 2890 + ], + [ + "2023-02-16T01:07:41", + 2957 + ], + [ + "2023-02-17T20:09:45", + 2970 + ], + [ + "2023-02-19T16:48:31", + 2976 + ], + [ + "2023-02-22T01:09:24", + 2987 + ], + [ + "2023-02-25T18:11:10", + 3001 + ], + [ + "2023-02-26T01:20:44", + 3005 + ], + [ + "2023-02-27T01:05:31", + 3009 + ], + [ + "2023-02-28T01:12:07", + 3020 + ], + [ + "2023-03-01T01:11:53", + 3024 + ], + [ + "2023-03-02T01:11:37", + 3043 + ], + [ + "2023-03-04T19:06:27", + 3065 + ], + [ + "2023-03-05T21:22:00", + 3087 + ], + [ + "2023-03-06T18:58:36", + 3097 + ], + [ + "2023-03-07T22:04:26", + 3113 + ], + [ + "2023-03-11T18:55:05", + 3161 + ], + [ + "2023-03-13T01:08:17", + 3163 + ], + [ + "2023-03-16T01:14:43", + 3181 + ], + [ + "2023-03-25T20:41:27", + 3225 + ], + [ + "2023-03-26T18:35:58", + 3243 + ], + [ + "2023-03-27T19:04:51", + 3261 + ], + [ + "2023-03-28T14:20:40", + 3269 + ], + [ + "2023-03-29T01:10:08", + 3271 + ], + [ + "2023-03-30T01:06:23", + 3289 + ], + [ + "2023-04-01T16:38:16", + 3306 + ], + [ + "2023-04-02T18:16:54", + 3319 + ], + [ + "2023-04-03T20:17:29", + 3341 + ], + [ + "2023-04-04T01:00:44", + 3344 + ], + [ + "2023-04-05T01:02:44", + 3364 + ], + [ + "2023-04-06T01:02:10", + 3370 + ], + [ + "2023-04-10T19:39:37", + 3387 + ], + [ + "2023-04-11T18:04:56", + 3397 + ], + [ + "2023-04-12T19:58:02", + 3412 + ], + [ + "2023-04-15T13:28:28", + 3424 + ], + [ + "2023-04-16T20:56:34", + 3440 + ], + [ + "2023-04-20T09:00:09", + 3451 + ], + [ + "2023-04-22T18:08:18", + 3471 + ], + [ + "2023-04-23T08:46:30", + 3479 + ], + [ + "2023-04-24T10:35:05", + 3485 + ], + [ + "2023-04-25T13:22:38", + 3492 + ], + [ + "2023-04-26T01:05:21", + 3494 + ], + [ + "2023-04-29T09:13:18", + 3509 + ], + [ + "2023-04-30T23:37:21", + 3515 + ], + [ + "2023-05-01T12:30:40", + 3517 + ], + [ + "2023-05-02T01:03:19", + 3521 + ], + [ + "2023-05-12T22:08:47", + 3543 + ], + [ + "2023-05-13T20:23:06", + 3557 + ], + [ + "2023-05-14T19:54:23", + 3577 + ], + [ + "2023-05-17T23:06:02", + 3583 + ], + [ + "2023-05-18T18:05:13", + 3589 + ], + [ + "2023-05-19T18:27:46", + 3601 + ], + [ + "2023-05-20T06:58:27", + 3603 + ], + [ + "2023-05-21T17:54:05", + 3603 + ], + [ + "2023-05-22T19:05:24", + 3606 + ], + [ + "2023-05-23T01:07:57", + 3606 + ], + [ + "2023-05-24T01:14:32", + 3613 + ], + [ + "2023-05-26T01:11:00", + 3621 + ], + [ + "2023-05-27T17:04:12", + 3640 + ], + [ + "2023-05-28T17:03:24", + 3644 + ], + [ + "2023-05-29T11:13:08", + 3647 + ], + [ + "2023-05-31T23:48:39", + 3660 + ], + [ + "2023-06-01T01:25:18", + 3663 + ], + [ + "2023-06-02T01:10:33", + 3666 + ], + [ + "2023-06-03T09:59:50", + 3672 + ], + [ + "2023-06-04T01:13:43", + 3674 + ], + [ + "2023-06-05T01:08:28", + 3676 + ], + [ + "2023-06-07T01:10:00", + 3680 + ], + [ + "2023-06-08T05:19:18", + 3684 + ], + [ + "2023-06-11T18:48:09", + 3690 + ], + [ + "2023-06-12T01:16:15", + 3693 + ], + [ + "2023-06-13T01:11:33", + 3697 + ], + [ + "2023-06-17T01:09:24", + 3733 + ], + [ + "2023-06-21T05:26:13", + 3766 + ], + [ + "2023-06-23T01:12:21", + 3768 + ], + [ + "2023-06-24T01:13:03", + 3770 + ], + [ + "2023-06-25T01:19:08", + 3772 + ], + [ + "2023-07-02T01:17:57", + 3779 + ], + [ + "2023-07-05T04:19:03", + 3789 + ], + [ + "2023-07-06T01:13:59", + 3792 + ], + [ + "2023-07-07T01:22:59", + 3804 + ], + [ + "2023-07-09T01:17:28", + 3808 + ], + [ + "2023-07-10T12:35:57", + 3816 + ], + [ + "2023-07-11T18:04:48", + 3828 + ], + [ + "2023-07-13T01:16:23", + 3844 + ], + [ + "2023-07-14T18:55:34", + 3860 + ], + [ + "2023-07-15T14:49:24", + 3866 + ], + [ + "2023-07-17T01:18:56", + 3868 + ], + [ + "2023-07-23T01:13:49", + 3877 + ], + [ + "2023-07-24T12:19:15", + 3879 + ], + [ + "2023-07-25T10:15:45", + 3882 + ], + [ + "2023-07-26T21:02:52", + 3923 + ], + [ + "2023-08-03T19:41:39", + 3942 + ], + [ + "2023-08-06T01:17:07", + 3942 + ], + [ + "2023-08-07T14:09:58", + 3943 + ], + [ + "2023-08-09T21:27:06", + 3949 + ], + [ + "2023-08-10T00:37:45", + 3949 + ], + [ + "2023-08-11T00:59:39", + 3956 + ], + [ + "2023-08-14T01:07:10", + 3957 + ], + [ + "2023-08-20T10:19:30", + 3959 + ], + [ + "2023-08-21T01:02:38", + 3959 + ], + [ + "2023-08-22T05:14:32", + 3963 + ], + [ + "2023-08-23T01:09:12", + 3970 + ], + [ + "2023-08-24T08:23:46", + 3970 + ], + [ + "2023-08-25T01:09:33", + 3970 + ], + [ + "2023-08-26T15:48:29", + 3970 + ], + [ + "2023-09-01T01:00:53", + 3981 + ], + [ + "2023-09-02T06:53:40", + 3983 + ], + [ + "2023-09-03T17:23:10", + 3983 + ], + [ + "2023-09-04T01:14:42", + 3983 + ], + [ + "2023-09-06T09:29:05", + 3985 + ], + [ + "2023-09-08T01:01:21", + 3985 + ], + [ + "2023-09-17T18:42:04", + 3999 + ], + [ + "2023-09-18T07:24:56", + 3999 + ], + [ + "2023-09-19T01:04:12", + 4000 + ], + [ + "2023-09-20T15:31:08", + 4000 + ], + [ + "2023-09-21T01:10:04", + 4000 + ], + [ + "2023-09-22T16:54:09", + 4000 + ], + [ + "2023-09-24T01:09:47", + 4003 + ], + [ + "2023-09-26T01:03:52", + 4007 + ], + [ + "2023-09-28T01:03:35", + 4037 + ], + [ + "2023-10-02T10:16:34", + 4037 + ], + [ + "2023-10-11T01:02:27", + 4040 + ], + [ + "2023-10-12T07:12:13", + 4041 + ], + [ + "2023-10-15T18:35:06", + 4053 + ], + [ + "2023-10-16T01:12:02", + 4053 + ], + [ + "2023-10-17T01:19:48", + 4053 + ], + [ + "2023-10-18T09:54:25", + 4053 + ], + [ + "2023-10-19T05:13:12", + 4054 + ], + [ + "2023-10-20T21:26:06", + 4054 + ], + [ + "2023-10-21T07:20:54", + 4054 + ], + [ + "2023-10-22T21:40:43", + 4054 + ], + [ + "2023-10-24T01:08:57", + 4054 + ], + [ + "2023-10-25T03:48:19", + 4058 + ], + [ + "2023-10-28T17:16:00", + 4070 + ], + [ + "2023-10-29T10:04:35", + 4073 + ], + [ + "2023-10-30T01:06:23", + 4073 + ], + [ + "2023-10-31T01:15:37", + 4075 + ], + [ + "2023-11-01T12:58:49", + 4076 + ], + [ + "2023-11-03T22:34:05", + 4093 + ], + [ + "2023-11-04T17:14:00", + 4097 + ], + [ + "2023-11-05T18:48:33", + 4098 + ], + [ + "2023-11-06T22:30:41", + 4130 + ], + [ + "2023-11-07T22:42:00", + 4163 + ], + [ + "2023-11-08T22:22:32", + 4199 + ], + [ + "2023-11-09T22:42:59", + 4269 + ], + [ + "2023-11-10T22:40:09", + 4313 + ], + [ + "2023-11-11T22:37:19", + 4341 + ] + ], + "rust": [ + [ + "2021-07-26T20:10:04", + 691 + ], + [ + "2021-07-28T01:29:28", + 694 + ], + [ + "2021-07-29T01:25:08", + 696 + ], + [ + "2021-07-30T02:45:47", + 699 + ], + [ + "2021-07-31T02:55:52", + 700 + ], + [ + "2021-08-01T01:34:33", + 702 + ], + [ + "2021-08-02T01:25:51", + 712 + ], + [ + "2021-08-03T01:34:04", + 712 + ], + [ + "2021-08-04T01:25:42", + 716 + ], + [ + "2021-08-05T13:16:40", + 716 + ], + [ + "2021-08-06T10:08:44", + 716 + ], + [ + "2021-08-07T01:23:20", + 716 + ], + [ + "2021-08-08T17:46:20", + 719 + ], + [ + "2021-08-09T12:57:30", + 722 + ], + [ + "2021-08-10T18:15:58", + 725 + ], + [ + "2021-08-11T19:45:43", + 730 + ], + [ + "2021-08-12T16:45:06", + 742 + ], + [ + "2021-08-13T01:26:41", + 748 + ], + [ + "2021-08-14T08:26:41", + 749 + ], + [ + "2021-08-15T21:37:16", + 762 + ], + [ + "2021-08-17T01:22:18", + 763 + ], + [ + "2021-08-18T01:24:15", + 764 + ], + [ + "2021-08-19T22:44:18", + 768 + ], + [ + "2021-08-20T16:03:59", + 780 + ], + [ + "2021-08-21T12:36:04", + 784 + ], + [ + "2021-08-22T01:21:13", + 785 + ], + [ + "2021-08-23T20:34:23", + 798 + ], + [ + "2021-08-24T21:32:49", + 800 + ], + [ + "2021-08-28T19:11:50", + 801 + ], + [ + "2021-08-29T12:02:14", + 807 + ], + [ + "2021-08-31T03:01:11", + 809 + ], + [ + "2021-09-01T01:34:30", + 811 + ], + [ + "2021-09-02T11:26:37", + 827 + ], + [ + "2021-09-03T01:30:31", + 831 + ], + [ + "2021-09-04T13:35:27", + 833 + ], + [ + "2021-09-06T01:30:54", + 840 + ], + [ + "2021-09-07T01:30:29", + 841 + ], + [ + "2021-09-12T12:45:46", + 864 + ], + [ + "2021-09-15T03:11:38", + 867 + ], + [ + "2021-09-18T22:10:09", + 876 + ], + [ + "2021-09-19T15:32:31", + 881 + ], + [ + "2021-09-20T01:35:53", + 883 + ], + [ + "2021-09-21T17:53:24", + 885 + ], + [ + "2021-09-23T01:37:54", + 891 + ], + [ + "2021-09-24T03:14:34", + 893 + ], + [ + "2021-09-25T16:30:33", + 909 + ], + [ + "2021-09-26T12:23:03", + 911 + ], + [ + "2021-09-27T15:31:39", + 917 + ], + [ + "2021-09-29T01:26:48", + 919 + ], + [ + "2021-09-30T23:05:25", + 922 + ], + [ + "2021-10-01T16:05:31", + 923 + ], + [ + "2021-10-03T21:24:16", + 924 + ], + [ + "2021-10-05T01:32:48", + 926 + ], + [ + "2021-10-06T08:19:33", + 929 + ], + [ + "2021-10-07T19:01:06", + 939 + ], + [ + "2021-10-09T09:11:23", + 942 + ], + [ + "2021-10-10T16:38:57", + 945 + ], + [ + "2021-10-12T12:32:12", + 947 + ], + [ + "2021-10-13T01:33:36", + 947 + ], + [ + "2021-10-16T01:43:12", + 951 + ], + [ + "2021-10-17T12:27:08", + 958 + ], + [ + "2021-10-21T01:43:07", + 960 + ], + [ + "2021-10-24T15:47:49", + 966 + ], + [ + "2021-10-25T04:54:54", + 968 + ], + [ + "2021-10-26T19:08:21", + 980 + ], + [ + "2021-10-27T10:52:46", + 982 + ], + [ + "2021-10-29T05:01:38", + 984 + ], + [ + "2021-10-30T20:34:54", + 46 + ], + [ + "2021-10-31T18:17:07", + 1053 + ], + [ + "2021-11-01T01:50:59", + 1066 + ], + [ + "2021-11-02T11:56:56", + 1084 + ], + [ + "2021-11-03T01:34:05", + 1111 + ], + [ + "2021-11-04T22:06:35", + 1160 + ], + [ + "2021-11-07T22:48:14", + 1179 + ], + [ + "2021-11-08T16:38:12", + 1198 + ], + [ + "2021-11-09T14:05:16", + 1207 + ], + [ + "2021-11-11T23:43:38", + 1234 + ], + [ + "2021-11-12T07:23:40", + 1235 + ], + [ + "2021-11-13T03:49:42", + 1237 + ], + [ + "2021-11-14T20:38:46", + 1238 + ], + [ + "2021-11-15T21:50:19", + 1247 + ], + [ + "2021-11-17T13:49:27", + 1250 + ], + [ + "2021-11-18T12:57:03", + 1251 + ], + [ + "2021-11-19T01:41:21", + 1257 + ], + [ + "2021-11-21T18:45:36", + 1259 + ], + [ + "2021-11-22T21:51:21", + 1275 + ], + [ + "2021-11-24T01:32:35", + 1276 + ], + [ + "2021-11-25T01:36:17", + 1277 + ], + [ + "2021-11-26T01:28:24", + 1278 + ], + [ + "2021-11-27T01:29:49", + 1282 + ], + [ + "2021-11-29T19:53:22", + 1286 + ], + [ + "2021-12-01T21:53:10", + 1293 + ], + [ + "2021-12-02T22:38:42", + 1299 + ], + [ + "2021-12-03T07:25:47", + 1302 + ], + [ + "2021-12-04T10:20:40", + 1305 + ], + [ + "2021-12-05T01:37:50", + 1309 + ], + [ + "2021-12-06T01:34:54", + 1312 + ], + [ + "2021-12-07T19:17:16", + 1337 + ], + [ + "2021-12-08T11:50:21", + 1339 + ], + [ + "2021-12-09T08:24:35", + 1356 + ], + [ + "2021-12-11T10:08:27", + 1357 + ], + [ + "2021-12-12T01:37:49", + 1372 + ], + [ + "2021-12-14T01:36:23", + 1377 + ], + [ + "2021-12-15T01:38:21", + 1378 + ], + [ + "2021-12-16T01:40:15", + 1379 + ], + [ + "2021-12-17T01:41:18", + 1379 + ], + [ + "2021-12-18T12:07:04", + 1380 + ], + [ + "2021-12-21T13:52:15", + 1388 + ], + [ + "2021-12-23T13:53:28", + 1390 + ], + [ + "2021-12-26T01:43:59", + 1391 + ], + [ + "2021-12-29T20:36:25", + 1392 + ], + [ + "2021-12-31T01:38:18", + 1392 + ], + [ + "2022-01-01T01:37:58", + 1405 + ], + [ + "2022-01-03T22:58:05", + 1407 + ], + [ + "2022-01-09T14:02:41", + 1434 + ], + [ + "2022-01-11T01:36:44", + 1451 + ], + [ + "2022-01-12T01:35:34", + 1452 + ], + [ + "2022-01-13T09:24:45", + 1462 + ], + [ + "2022-01-14T01:38:08", + 1471 + ], + [ + "2022-01-15T11:07:48", + 1473 + ], + [ + "2022-01-16T01:40:08", + 1475 + ], + [ + "2022-01-17T12:08:17", + 1477 + ], + [ + "2022-01-18T04:25:59", + 1478 + ], + [ + "2022-01-22T22:01:45", + 1483 + ], + [ + "2022-01-23T19:48:17", + 1501 + ], + [ + "2022-01-24T20:09:52", + 1509 + ], + [ + "2022-01-25T07:19:01", + 1509 + ], + [ + "2022-01-26T01:45:09", + 1512 + ], + [ + "2022-01-28T01:33:25", + 1523 + ], + [ + "2022-01-29T20:09:19", + 1526 + ], + [ + "2022-01-30T17:15:32", + 1534 + ], + [ + "2022-01-31T13:01:19", + 1544 + ], + [ + "2022-02-01T07:00:15", + 1548 + ], + [ + "2022-02-02T23:09:44", + 1551 + ], + [ + "2022-02-03T10:37:04", + 1572 + ], + [ + "2022-02-05T23:23:53", + 1575 + ], + [ + "2022-02-06T17:27:14", + 1578 + ], + [ + "2022-02-07T07:41:03", + 1579 + ], + [ + "2022-02-09T12:02:49", + 1586 + ], + [ + "2022-02-10T01:38:28", + 1586 + ], + [ + "2022-02-13T17:21:12", + 1587 + ], + [ + "2022-02-14T01:37:05", + 1591 + ], + [ + "2022-02-16T01:41:49", + 1593 + ], + [ + "2022-02-18T21:34:22", + 1604 + ], + [ + "2022-02-20T20:39:40", + 1664 + ], + [ + "2022-02-21T21:26:40", + 1712 + ], + [ + "2022-02-25T15:39:13", + 2127 + ], + [ + "2022-02-27T01:44:50", + 2165 + ], + [ + "2022-02-28T01:51:49", + 2192 + ], + [ + "2022-03-02T23:33:51", + 2271 + ], + [ + "2022-03-03T01:50:14", + 2275 + ], + [ + "2022-03-04T05:18:37", + 2304 + ], + [ + "2022-03-06T01:44:30", + 2352 + ], + [ + "2022-03-08T11:13:31", + 2412 + ], + [ + "2022-03-09T07:35:11", + 2458 + ], + [ + "2022-03-10T01:51:49", + 2478 + ], + [ + "2022-03-11T01:51:30", + 2504 + ], + [ + "2022-03-12T01:42:04", + 2529 + ], + [ + "2022-03-13T19:08:51", + 2584 + ], + [ + "2022-03-14T15:10:17", + 2607 + ], + [ + "2022-03-15T01:49:51", + 2617 + ], + [ + "2022-03-16T01:45:07", + 2655 + ], + [ + "2022-03-17T12:36:48", + 2691 + ], + [ + "2022-03-19T16:59:24", + 2746 + ], + [ + "2022-03-20T11:59:05", + 2766 + ], + [ + "2022-03-21T01:44:24", + 2782 + ], + [ + "2022-03-22T01:55:14", + 2808 + ], + [ + "2022-03-23T01:55:28", + 2833 + ], + [ + "2022-03-24T01:48:26", + 2855 + ], + [ + "2022-03-26T22:36:41", + 2897 + ], + [ + "2022-03-27T20:21:20", + 2916 + ], + [ + "2022-03-30T01:54:07", + 2954 + ], + [ + "2022-03-31T19:42:14", + 2979 + ], + [ + "2022-04-01T15:16:50", + 2989 + ], + [ + "2022-04-02T01:51:52", + 2995 + ], + [ + "2022-04-04T03:28:40", + 3043 + ], + [ + "2022-04-06T04:08:13", + 3082 + ], + [ + "2022-04-07T01:53:15", + 3099 + ], + [ + "2022-04-09T01:50:38", + 3117 + ], + [ + "2022-04-10T14:05:52", + 3117 + ], + [ + "2022-04-11T17:59:19", + 3117 + ], + [ + "2022-04-18T19:21:22", + 3126 + ], + [ + "2022-04-22T17:35:15", + 3141 + ], + [ + "2022-04-23T08:58:43", + 3141 + ], + [ + "2022-04-24T16:22:52", + 3145 + ], + [ + "2022-04-26T12:16:27", + 3145 + ], + [ + "2022-04-28T02:47:35", + 3166 + ], + [ + "2022-04-29T02:28:21", + 3167 + ], + [ + "2022-04-30T15:55:37", + 3178 + ], + [ + "2022-05-02T02:22:46", + 3179 + ], + [ + "2022-05-03T15:10:47", + 3183 + ], + [ + "2022-05-04T02:21:38", + 3183 + ], + [ + "2022-05-05T02:29:20", + 3189 + ], + [ + "2022-05-06T01:57:12", + 3202 + ], + [ + "2022-05-07T15:43:47", + 3202 + ], + [ + "2022-05-08T09:22:07", + 3202 + ], + [ + "2022-05-11T18:46:39", + 3205 + ], + [ + "2022-05-14T10:19:10", + 3213 + ], + [ + "2022-05-15T18:35:14", + 3213 + ], + [ + "2022-05-17T02:16:25", + 3217 + ], + [ + "2022-05-20T02:14:29", + 3241 + ], + [ + "2022-05-21T01:55:42", + 3243 + ], + [ + "2022-05-22T02:10:42", + 3245 + ], + [ + "2022-05-24T11:16:46", + 3252 + ], + [ + "2022-05-25T02:18:32", + 3254 + ], + [ + "2022-05-27T02:15:18", + 3256 + ], + [ + "2022-05-28T02:22:34", + 3268 + ], + [ + "2022-05-30T02:21:03", + 3268 + ], + [ + "2022-05-31T19:33:59", + 3277 + ], + [ + "2022-06-01T02:31:42", + 3277 + ], + [ + "2022-06-02T02:27:43", + 3307 + ], + [ + "2022-06-03T01:55:13", + 3310 + ], + [ + "2022-06-08T20:16:03", + 3407 + ], + [ + "2022-06-09T13:28:16", + 3414 + ], + [ + "2022-06-10T02:21:45", + 3433 + ], + [ + "2022-06-11T02:20:43", + 3487 + ], + [ + "2022-06-12T13:23:39", + 3502 + ], + [ + "2022-06-14T02:30:00", + 3526 + ], + [ + "2022-06-15T20:20:02", + 3631 + ], + [ + "2022-06-17T02:17:40", + 3680 + ], + [ + "2022-06-19T07:40:43", + 3695 + ], + [ + "2022-06-22T23:37:06", + 3733 + ], + [ + "2022-06-23T09:06:53", + 3734 + ], + [ + "2022-06-24T02:16:36", + 3735 + ], + [ + "2022-06-25T02:27:04", + 3735 + ], + [ + "2022-06-26T16:16:05", + 3736 + ], + [ + "2022-09-10T23:57:56", + 3919 + ], + [ + "2022-09-11T17:27:20", + 3919 + ], + [ + "2022-09-12T17:31:29", + 3921 + ], + [ + "2022-09-15T12:40:02", + 3927 + ], + [ + "2022-09-16T01:11:41", + 3929 + ], + [ + "2022-09-17T01:12:07", + 3933 + ], + [ + "2022-09-19T22:06:52", + 3936 + ], + [ + "2022-09-20T01:15:00", + 3936 + ], + [ + "2022-09-21T18:40:27", + 3937 + ], + [ + "2022-09-22T16:43:34", + 3938 + ], + [ + "2022-09-25T01:14:04", + 3955 + ], + [ + "2022-09-26T01:16:57", + 3955 + ], + [ + "2022-09-27T20:49:14", + 3958 + ], + [ + "2022-09-30T01:39:04", + 3965 + ], + [ + "2022-10-01T17:39:25", + 3967 + ], + [ + "2022-10-02T12:03:53", + 3967 + ], + [ + "2022-10-03T08:03:32", + 3968 + ], + [ + "2022-10-04T01:20:50", + 3976 + ], + [ + "2022-10-05T01:21:27", + 3980 + ], + [ + "2022-10-08T23:24:13", + 4000 + ], + [ + "2022-10-10T01:35:49", + 4002 + ], + [ + "2022-10-11T01:16:06", + 4002 + ], + [ + "2022-10-12T19:05:48", + 4004 + ], + [ + "2022-10-13T01:19:16", + 4004 + ], + [ + "2022-10-14T01:30:33", + 4013 + ], + [ + "2022-10-15T01:22:21", + 4024 + ], + [ + "2022-10-16T21:43:31", + 4024 + ], + [ + "2022-10-18T06:25:58", + 4035 + ], + [ + "2022-10-22T11:41:20", + 4073 + ], + [ + "2022-10-23T01:13:56", + 4075 + ], + [ + "2022-10-24T20:11:55", + 4082 + ], + [ + "2022-10-25T00:08:55", + 4082 + ], + [ + "2022-10-26T01:07:23", + 4087 + ], + [ + "2022-10-27T01:11:40", + 4088 + ], + [ + "2022-10-29T01:02:52", + 4102 + ], + [ + "2022-10-30T20:09:57", + 4102 + ], + [ + "2022-10-31T22:27:03", + 4104 + ], + [ + "2022-11-01T18:25:59", + 4104 + ], + [ + "2022-11-03T01:11:15", + 4132 + ], + [ + "2022-11-04T11:35:34", + 4149 + ], + [ + "2022-11-05T07:41:24", + 4157 + ], + [ + "2022-11-06T11:06:34", + 4157 + ], + [ + "2022-11-07T19:40:53", + 4167 + ], + [ + "2022-11-08T01:06:52", + 4170 + ], + [ + "2022-11-11T17:10:50", + 4184 + ], + [ + "2022-11-13T20:58:24", + 4184 + ], + [ + "2022-11-14T23:48:23", + 0 + ], + [ + "2022-11-15T07:38:22", + 4192 + ], + [ + "2022-11-17T09:11:40", + 4202 + ], + [ + "2022-11-19T22:14:34", + 4205 + ], + [ + "2022-11-21T23:47:48", + 4209 + ], + [ + "2022-11-22T01:14:59", + 4209 + ], + [ + "2022-11-23T23:28:30", + 4213 + ], + [ + "2022-11-26T01:00:47", + 4216 + ], + [ + "2022-11-28T01:02:53", + 4219 + ], + [ + "2022-12-07T07:19:55", + 4259 + ], + [ + "2022-12-18T20:23:59", + 4332 + ], + [ + "2022-12-19T18:26:59", + 4339 + ], + [ + "2022-12-20T16:08:58", + 4341 + ], + [ + "2022-12-21T23:23:24", + 4350 + ], + [ + "2022-12-22T22:59:06", + 4350 + ], + [ + "2022-12-24T20:01:35", + 4350 + ], + [ + "2022-12-25T21:13:52", + 4350 + ], + [ + "2022-12-26T19:30:31", + 4353 + ], + [ + "2022-12-27T23:56:39", + 4353 + ], + [ + "2022-12-29T20:55:31", + 4353 + ], + [ + "2022-12-30T20:56:36", + 4353 + ], + [ + "2022-12-31T08:10:29", + 4353 + ], + [ + "2023-01-01T23:58:03", + 4353 + ], + [ + "2023-01-02T23:32:43", + 4375 + ], + [ + "2023-01-04T01:14:45", + 4380 + ], + [ + "2023-01-05T00:40:47", + 4381 + ], + [ + "2023-01-06T15:27:19", + 4387 + ], + [ + "2023-01-07T23:05:20", + 4393 + ], + [ + "2023-01-09T23:13:18", + 4400 + ], + [ + "2023-01-10T22:19:22", + 4407 + ], + [ + "2023-01-11T20:38:34", + 4412 + ], + [ + "2023-01-12T19:14:41", + 4416 + ], + [ + "2023-01-14T22:19:17", + 4420 + ], + [ + "2023-01-15T05:54:49", + 4420 + ], + [ + "2023-01-16T01:07:20", + 4420 + ], + [ + "2023-01-18T01:10:41", + 4431 + ], + [ + "2023-01-19T01:11:47", + 4436 + ], + [ + "2023-01-20T01:07:56", + 4449 + ], + [ + "2023-01-21T01:11:30", + 4457 + ], + [ + "2023-01-22T23:52:22", + 4457 + ], + [ + "2023-01-24T01:13:09", + 4460 + ], + [ + "2023-01-25T01:09:15", + 4460 + ], + [ + "2023-01-27T01:08:47", + 4471 + ], + [ + "2023-01-28T23:00:24", + 4476 + ], + [ + "2023-01-29T11:12:53", + 4476 + ], + [ + "2023-01-31T09:09:55", + 4486 + ], + [ + "2023-02-04T01:08:11", + 4494 + ], + [ + "2023-02-05T19:16:16", + 4494 + ], + [ + "2023-02-06T01:06:21", + 4494 + ], + [ + "2023-02-07T01:06:44", + 4495 + ], + [ + "2023-02-08T19:33:17", + 4495 + ], + [ + "2023-02-16T01:07:41", + 4564 + ], + [ + "2023-02-17T20:09:45", + 4578 + ], + [ + "2023-02-19T16:48:31", + 4584 + ], + [ + "2023-02-22T01:09:24", + 4604 + ], + [ + "2023-02-25T18:11:10", + 4625 + ], + [ + "2023-02-26T01:20:44", + 4629 + ], + [ + "2023-02-27T01:05:31", + 4633 + ], + [ + "2023-02-28T01:12:07", + 4639 + ], + [ + "2023-03-01T01:11:53", + 4646 + ], + [ + "2023-03-02T01:11:37", + 4652 + ], + [ + "2023-03-04T19:06:27", + 4673 + ], + [ + "2023-03-05T21:22:00", + 4693 + ], + [ + "2023-03-06T18:58:36", + 4709 + ], + [ + "2023-03-07T22:04:26", + 4729 + ], + [ + "2023-03-11T18:55:05", + 4801 + ], + [ + "2023-03-13T01:08:17", + 4805 + ], + [ + "2023-03-16T01:14:43", + 4831 + ], + [ + "2023-03-25T20:41:27", + 4959 + ], + [ + "2023-03-26T18:35:58", + 4977 + ], + [ + "2023-03-27T19:04:51", + 4993 + ], + [ + "2023-03-28T14:20:40", + 5001 + ], + [ + "2023-03-29T01:10:08", + 5017 + ], + [ + "2023-03-30T01:06:23", + 5033 + ], + [ + "2023-04-01T16:38:16", + 5088 + ], + [ + "2023-04-02T18:16:54", + 5100 + ], + [ + "2023-04-03T20:17:29", + 5121 + ], + [ + "2023-04-04T01:00:44", + 5132 + ], + [ + "2023-04-05T01:02:44", + 5142 + ], + [ + "2023-04-06T01:02:10", + 5150 + ], + [ + "2023-04-10T19:39:37", + 5170 + ], + [ + "2023-04-11T18:04:56", + 5185 + ], + [ + "2023-04-12T19:58:02", + 5197 + ], + [ + "2023-04-15T13:28:28", + 5251 + ], + [ + "2023-04-16T20:56:34", + 5268 + ], + [ + "2023-04-20T09:00:09", + 5310 + ], + [ + "2023-04-22T18:08:18", + 5347 + ], + [ + "2023-04-23T08:46:30", + 5355 + ], + [ + "2023-04-24T10:35:05", + 5365 + ], + [ + "2023-04-25T13:22:38", + 5382 + ], + [ + "2023-04-26T01:05:21", + 5388 + ], + [ + "2023-04-29T09:13:18", + 5414 + ], + [ + "2023-04-30T23:37:21", + 5420 + ], + [ + "2023-05-01T12:30:40", + 5422 + ], + [ + "2023-05-02T01:03:19", + 5451 + ], + [ + "2023-05-12T22:08:47", + 5564 + ], + [ + "2023-05-13T20:23:06", + 5578 + ], + [ + "2023-05-14T19:54:23", + 5596 + ], + [ + "2023-05-17T23:06:02", + 5634 + ], + [ + "2023-05-18T18:05:13", + 5641 + ], + [ + "2023-05-19T18:27:46", + 5654 + ], + [ + "2023-05-20T06:58:27", + 5657 + ], + [ + "2023-05-21T17:54:05", + 5657 + ], + [ + "2023-05-22T19:05:24", + 5658 + ], + [ + "2023-05-23T01:07:57", + 5658 + ], + [ + "2023-05-24T01:14:32", + 5658 + ], + [ + "2023-05-26T01:11:00", + 5674 + ], + [ + "2023-05-27T17:04:12", + 5699 + ], + [ + "2023-05-28T17:03:24", + 5703 + ], + [ + "2023-05-29T11:13:08", + 5705 + ], + [ + "2023-05-31T23:48:39", + 5743 + ], + [ + "2023-06-01T01:25:18", + 5746 + ], + [ + "2023-06-02T01:10:33", + 5776 + ], + [ + "2023-06-03T09:59:50", + 5790 + ], + [ + "2023-06-04T01:13:43", + 5792 + ], + [ + "2023-06-05T01:08:28", + 5795 + ], + [ + "2023-06-07T01:10:00", + 5806 + ], + [ + "2023-06-08T05:19:18", + 5818 + ], + [ + "2023-06-11T18:48:09", + 5839 + ], + [ + "2023-06-12T01:16:15", + 5842 + ], + [ + "2023-06-13T01:11:33", + 5858 + ], + [ + "2023-06-17T01:09:24", + 5889 + ], + [ + "2023-06-21T05:26:13", + 5967 + ], + [ + "2023-06-23T01:12:21", + 6017 + ], + [ + "2023-06-24T01:13:03", + 6035 + ], + [ + "2023-06-25T01:19:08", + 6037 + ], + [ + "2023-07-02T01:17:57", + 6096 + ], + [ + "2023-07-05T04:19:03", + 6143 + ], + [ + "2023-07-06T01:13:59", + 6153 + ], + [ + "2023-07-07T01:22:59", + 6164 + ], + [ + "2023-07-09T01:17:28", + 6176 + ], + [ + "2023-07-10T12:35:57", + 6187 + ], + [ + "2023-07-11T18:04:48", + 6206 + ], + [ + "2023-07-13T01:16:23", + 6233 + ], + [ + "2023-07-14T18:55:34", + 6255 + ], + [ + "2023-07-15T14:49:24", + 6262 + ], + [ + "2023-07-17T01:18:56", + 6266 + ], + [ + "2023-07-23T01:13:49", + 6324 + ], + [ + "2023-07-24T12:19:15", + 6324 + ], + [ + "2023-07-25T10:15:45", + 6332 + ], + [ + "2023-07-26T21:02:52", + 6334 + ], + [ + "2023-08-03T19:41:39", + 6409 + ], + [ + "2023-08-06T01:17:07", + 6429 + ], + [ + "2023-08-07T14:09:58", + 6431 + ], + [ + "2023-08-09T21:27:06", + 6468 + ], + [ + "2023-08-10T00:37:45", + 6468 + ], + [ + "2023-08-11T00:59:39", + 6491 + ], + [ + "2023-08-14T01:07:10", + 6494 + ], + [ + "2023-08-20T10:19:30", + 6556 + ], + [ + "2023-08-21T01:02:38", + 6556 + ], + [ + "2023-08-22T05:14:32", + 6568 + ], + [ + "2023-08-23T01:09:12", + 6581 + ], + [ + "2023-08-24T08:23:46", + 6591 + ], + [ + "2023-08-25T01:09:33", + 6599 + ], + [ + "2023-08-26T15:48:29", + 6611 + ], + [ + "2023-09-01T01:00:53", + 6636 + ], + [ + "2023-09-02T06:53:40", + 6672 + ], + [ + "2023-09-03T17:23:10", + 6672 + ], + [ + "2023-09-04T01:14:42", + 6672 + ], + [ + "2023-09-06T09:29:05", + 6707 + ], + [ + "2023-09-08T01:01:21", + 6723 + ], + [ + "2023-09-17T18:42:04", + 6802 + ], + [ + "2023-09-18T07:24:56", + 6802 + ], + [ + "2023-09-19T01:04:12", + 6813 + ], + [ + "2023-09-20T15:31:08", + 6836 + ], + [ + "2023-09-21T01:10:04", + 6843 + ], + [ + "2023-09-22T16:54:09", + 6856 + ], + [ + "2023-09-24T01:09:47", + 6864 + ], + [ + "2023-09-26T01:03:52", + 6873 + ], + [ + "2023-09-28T01:03:35", + 6885 + ], + [ + "2023-10-02T10:16:34", + 6926 + ], + [ + "2023-10-11T01:02:27", + 6963 + ], + [ + "2023-10-12T07:12:13", + 6977 + ], + [ + "2023-10-15T18:35:06", + 7003 + ], + [ + "2023-10-16T01:12:02", + 7003 + ], + [ + "2023-10-17T01:19:48", + 7007 + ], + [ + "2023-10-18T09:54:25", + 7017 + ], + [ + "2023-10-19T05:13:12", + 7022 + ], + [ + "2023-10-20T21:26:06", + 7026 + ], + [ + "2023-10-21T07:20:54", + 7026 + ], + [ + "2023-10-22T21:40:43", + 7026 + ], + [ + "2023-10-24T01:08:57", + 7040 + ], + [ + "2023-10-25T03:48:19", + 7050 + ], + [ + "2023-10-28T17:16:00", + 7081 + ], + [ + "2023-10-29T10:04:35", + 7087 + ], + [ + "2023-10-30T01:06:23", + 7087 + ], + [ + "2023-10-31T01:15:37", + 7096 + ], + [ + "2023-11-01T12:58:49", + 7122 + ], + [ + "2023-11-03T22:34:05", + 7167 + ], + [ + "2023-11-04T17:14:00", + 7167 + ], + [ + "2023-11-05T18:48:33", + 7167 + ], + [ + "2023-11-06T22:30:41", + 7190 + ], + [ + "2023-11-07T22:42:00", + 7197 + ], + [ + "2023-11-08T22:22:32", + 7221 + ], + [ + "2023-11-09T22:42:59", + 7230 + ], + [ + "2023-11-10T22:40:09", + 7235 + ], + [ + "2023-11-11T22:37:19", + 7235 + ] + ], + "salesforce": [ + [ + "2021-07-26T20:10:04", + 4784 + ], + [ + "2021-07-28T01:29:28", + 4851 + ], + [ + "2021-07-29T01:25:08", + 4901 + ], + [ + "2021-07-30T02:45:47", + 4953 + ], + [ + "2021-07-31T02:55:52", + 4989 + ], + [ + "2021-08-01T01:34:33", + 5020 + ], + [ + "2021-08-02T01:25:51", + 5057 + ], + [ + "2021-08-03T01:34:04", + 5101 + ], + [ + "2021-08-04T01:25:42", + 5140 + ], + [ + "2021-08-05T13:16:40", + 5197 + ], + [ + "2021-08-06T10:08:44", + 5230 + ], + [ + "2021-08-07T01:23:20", + 5260 + ], + [ + "2021-08-08T17:46:20", + 5309 + ], + [ + "2021-08-09T12:57:30", + 5352 + ], + [ + "2021-08-10T18:15:58", + 5375 + ], + [ + "2021-08-11T19:45:43", + 5397 + ], + [ + "2021-08-12T16:45:06", + 5432 + ], + [ + "2021-08-13T01:26:41", + 5459 + ], + [ + "2021-08-14T08:26:41", + 5488 + ], + [ + "2021-08-15T21:37:16", + 5518 + ], + [ + "2021-08-17T01:22:18", + 5537 + ], + [ + "2021-08-18T01:24:15", + 5567 + ], + [ + "2021-08-19T22:44:18", + 5666 + ], + [ + "2021-08-20T16:03:59", + 5695 + ], + [ + "2021-08-21T12:36:04", + 5721 + ], + [ + "2021-08-22T01:21:13", + 5729 + ], + [ + "2021-08-23T20:34:23", + 5782 + ], + [ + "2021-08-24T21:32:49", + 5816 + ], + [ + "2021-08-28T19:11:50", + 5872 + ], + [ + "2021-08-29T12:02:14", + 5896 + ], + [ + "2021-08-31T03:01:11", + 5939 + ], + [ + "2021-09-01T01:34:30", + 5976 + ], + [ + "2021-09-02T11:26:37", + 6008 + ], + [ + "2021-09-03T01:30:31", + 6043 + ], + [ + "2021-09-04T13:35:27", + 6058 + ], + [ + "2021-09-06T01:30:54", + 6093 + ], + [ + "2021-09-07T01:30:29", + 6118 + ], + [ + "2021-09-12T12:45:46", + 6208 + ], + [ + "2021-09-15T03:11:38", + 6284 + ], + [ + "2021-09-18T22:10:09", + 6378 + ], + [ + "2021-09-19T15:32:31", + 6392 + ], + [ + "2021-09-20T01:35:53", + 6402 + ], + [ + "2021-09-21T17:53:24", + 6459 + ], + [ + "2021-09-23T01:37:54", + 6516 + ], + [ + "2021-09-24T03:14:34", + 6565 + ], + [ + "2021-09-25T16:30:33", + 6630 + ], + [ + "2021-09-26T12:23:03", + 6651 + ], + [ + "2021-09-27T15:31:39", + 6667 + ], + [ + "2021-09-29T01:26:48", + 6709 + ], + [ + "2021-09-30T23:05:25", + 6763 + ], + [ + "2021-10-01T16:05:31", + 6802 + ], + [ + "2021-10-03T21:24:16", + 6860 + ], + [ + "2021-10-05T01:32:48", + 6878 + ], + [ + "2021-10-06T08:19:33", + 6922 + ], + [ + "2021-10-07T19:01:06", + 6968 + ], + [ + "2021-10-09T09:11:23", + 7010 + ], + [ + "2021-10-10T16:38:57", + 7037 + ], + [ + "2021-10-12T12:32:12", + 7072 + ], + [ + "2021-10-13T01:33:36", + 7096 + ], + [ + "2021-10-16T01:43:12", + 7190 + ], + [ + "2021-10-17T12:27:08", + 7230 + ], + [ + "2021-10-21T01:43:07", + 7383 + ], + [ + "2021-10-24T15:47:49", + 7458 + ], + [ + "2021-10-25T04:54:54", + 7479 + ], + [ + "2021-10-26T19:08:21", + 7533 + ], + [ + "2021-10-27T10:52:46", + 7551 + ], + [ + "2021-10-28T01:27:35", + 7565 + ], + [ + "2021-10-29T05:01:38", + 7610 + ], + [ + "2021-10-30T20:34:54", + 48 + ], + [ + "2021-10-31T18:17:07", + 7773 + ], + [ + "2021-11-01T01:50:59", + 7797 + ], + [ + "2021-11-02T11:56:56", + 7842 + ], + [ + "2021-11-03T01:34:05", + 7870 + ], + [ + "2021-11-04T22:06:35", + 7942 + ], + [ + "2021-11-07T22:48:14", + 8057 + ], + [ + "2021-11-08T16:38:12", + 8089 + ], + [ + "2021-11-09T14:05:16", + 8114 + ], + [ + "2021-11-11T23:43:38", + 8170 + ], + [ + "2021-11-12T07:23:40", + 8179 + ], + [ + "2021-11-13T03:49:42", + 8197 + ], + [ + "2021-11-14T20:38:46", + 8219 + ], + [ + "2021-11-15T21:50:19", + 8250 + ], + [ + "2021-11-17T13:49:27", + 8280 + ], + [ + "2021-11-18T12:57:03", + 8298 + ], + [ + "2021-11-19T01:41:21", + 8312 + ], + [ + "2021-11-21T18:45:36", + 8360 + ], + [ + "2021-11-22T21:51:21", + 8394 + ], + [ + "2021-11-24T01:32:35", + 8430 + ], + [ + "2021-11-25T01:36:17", + 8449 + ], + [ + "2021-11-26T01:28:24", + 8466 + ], + [ + "2021-11-27T01:29:49", + 8500 + ], + [ + "2021-11-29T19:53:22", + 8547 + ], + [ + "2021-12-01T21:53:10", + 8602 + ], + [ + "2021-12-02T22:38:42", + 8637 + ], + [ + "2021-12-03T07:25:47", + 8650 + ], + [ + "2021-12-04T10:20:40", + 8673 + ], + [ + "2021-12-05T01:37:50", + 8685 + ], + [ + "2021-12-06T01:34:54", + 8702 + ], + [ + "2021-12-07T19:17:16", + 8776 + ], + [ + "2021-12-08T11:50:21", + 8801 + ], + [ + "2021-12-09T08:24:35", + 8848 + ], + [ + "2021-12-11T10:08:27", + 8887 + ], + [ + "2021-12-12T01:37:49", + 8911 + ], + [ + "2021-12-14T01:36:23", + 8975 + ], + [ + "2021-12-15T01:38:21", + 8997 + ], + [ + "2021-12-16T01:40:15", + 9027 + ], + [ + "2021-12-17T01:41:18", + 9045 + ], + [ + "2021-12-18T12:07:04", + 9081 + ], + [ + "2021-12-21T13:52:15", + 9153 + ], + [ + "2021-12-23T13:53:28", + 9190 + ], + [ + "2021-12-26T01:43:59", + 9236 + ], + [ + "2021-12-29T20:36:25", + 9310 + ], + [ + "2021-12-31T01:38:18", + 9331 + ], + [ + "2022-01-01T01:37:58", + 9351 + ], + [ + "2022-01-03T22:58:05", + 9402 + ], + [ + "2022-01-09T14:02:41", + 9537 + ], + [ + "2022-01-11T01:36:44", + 9576 + ], + [ + "2022-01-12T01:35:34", + 9591 + ], + [ + "2022-01-13T09:24:45", + 9614 + ], + [ + "2022-01-14T01:38:08", + 9655 + ], + [ + "2022-01-15T11:07:48", + 9681 + ], + [ + "2022-01-16T01:40:08", + 9688 + ], + [ + "2022-01-17T12:08:17", + 9710 + ], + [ + "2022-01-18T04:25:59", + 9732 + ], + [ + "2022-01-22T22:01:45", + 9853 + ], + [ + "2022-01-23T19:48:17", + 9925 + ], + [ + "2022-01-24T20:09:52", + 9978 + ], + [ + "2022-01-25T07:19:01", + 9990 + ], + [ + "2022-01-26T01:45:09", + 10009 + ], + [ + "2022-01-28T01:33:25", + 10091 + ], + [ + "2022-01-29T20:09:19", + 10121 + ], + [ + "2022-01-30T17:15:32", + 10142 + ], + [ + "2022-01-31T13:01:19", + 10179 + ], + [ + "2022-02-01T07:00:15", + 10214 + ], + [ + "2022-02-02T23:09:44", + 10246 + ], + [ + "2022-02-03T10:37:04", + 10275 + ], + [ + "2022-02-05T23:23:53", + 10343 + ], + [ + "2022-02-06T17:27:14", + 10357 + ], + [ + "2022-02-07T07:41:03", + 10371 + ], + [ + "2022-02-09T12:02:49", + 10414 + ], + [ + "2022-02-10T01:38:28", + 10421 + ], + [ + "2022-02-13T17:21:12", + 10492 + ], + [ + "2022-02-14T01:37:05", + 10501 + ], + [ + "2022-02-16T01:41:49", + 10590 + ], + [ + "2022-02-18T21:34:22", + 10753 + ], + [ + "2022-02-20T20:39:40", + 10829 + ], + [ + "2022-02-21T21:26:40", + 10886 + ], + [ + "2022-02-25T15:39:13", + 11060 + ], + [ + "2022-02-27T01:44:50", + 11121 + ], + [ + "2022-02-28T01:51:49", + 11156 + ], + [ + "2022-03-02T23:33:51", + 11225 + ], + [ + "2022-03-03T01:50:14", + 11228 + ], + [ + "2022-03-04T05:18:37", + 11240 + ], + [ + "2022-03-06T01:44:30", + 11266 + ], + [ + "2022-03-08T11:13:31", + 11276 + ], + [ + "2022-03-09T07:35:11", + 11285 + ], + [ + "2022-03-10T01:51:49", + 11293 + ], + [ + "2022-03-11T01:51:30", + 11305 + ], + [ + "2022-03-12T01:42:04", + 11321 + ], + [ + "2022-03-13T19:08:51", + 11326 + ], + [ + "2022-03-14T15:10:17", + 11334 + ], + [ + "2022-03-15T01:49:51", + 11338 + ], + [ + "2022-03-16T01:45:07", + 11358 + ], + [ + "2022-03-17T12:36:48", + 11387 + ], + [ + "2022-03-19T16:59:24", + 11409 + ], + [ + "2022-03-20T11:59:05", + 11413 + ], + [ + "2022-03-21T01:44:24", + 11423 + ], + [ + "2022-03-22T01:55:14", + 11439 + ], + [ + "2022-03-23T01:55:28", + 11459 + ], + [ + "2022-03-24T01:48:26", + 11477 + ], + [ + "2022-03-26T22:36:41", + 11500 + ], + [ + "2022-03-27T20:21:20", + 11502 + ], + [ + "2022-03-30T01:54:07", + 11548 + ], + [ + "2022-03-31T19:42:14", + 11561 + ], + [ + "2022-04-01T15:16:50", + 11565 + ], + [ + "2022-04-02T01:51:52", + 11569 + ], + [ + "2022-04-04T03:28:40", + 11574 + ], + [ + "2022-04-06T04:08:13", + 11598 + ], + [ + "2022-04-07T01:53:15", + 11600 + ], + [ + "2022-04-09T01:50:38", + 11636 + ], + [ + "2022-04-10T14:05:52", + 11641 + ], + [ + "2022-04-11T17:59:19", + 11647 + ], + [ + "2022-04-18T19:21:22", + 11772 + ], + [ + "2022-04-22T17:35:15", + 11851 + ], + [ + "2022-04-23T08:58:43", + 11855 + ], + [ + "2022-04-24T16:22:52", + 11860 + ], + [ + "2022-04-26T12:16:27", + 11880 + ], + [ + "2022-04-28T02:47:35", + 11896 + ], + [ + "2022-04-29T02:28:21", + 11923 + ], + [ + "2022-04-30T15:55:37", + 11928 + ], + [ + "2022-05-02T02:22:46", + 11930 + ], + [ + "2022-05-03T15:10:47", + 11945 + ], + [ + "2022-05-04T02:21:38", + 11947 + ], + [ + "2022-05-05T02:29:20", + 11955 + ], + [ + "2022-05-06T01:57:12", + 11965 + ], + [ + "2022-05-07T15:43:47", + 11972 + ], + [ + "2022-05-08T09:22:07", + 11972 + ], + [ + "2022-05-11T18:46:39", + 11980 + ], + [ + "2022-05-14T10:19:10", + 11987 + ], + [ + "2022-05-15T18:35:14", + 11987 + ], + [ + "2022-05-17T02:16:25", + 11998 + ], + [ + "2022-05-20T02:14:29", + 12026 + ], + [ + "2022-05-21T01:55:42", + 12037 + ], + [ + "2022-05-22T02:10:42", + 12038 + ], + [ + "2022-05-24T11:16:46", + 12042 + ], + [ + "2022-05-25T02:18:32", + 12048 + ], + [ + "2022-05-27T02:15:18", + 12051 + ], + [ + "2022-05-28T02:22:34", + 12051 + ], + [ + "2022-05-30T02:21:03", + 12051 + ], + [ + "2022-05-31T19:33:59", + 12067 + ], + [ + "2022-06-01T02:31:42", + 12067 + ], + [ + "2022-06-02T02:27:43", + 12074 + ], + [ + "2022-06-03T01:55:13", + 12084 + ], + [ + "2022-06-08T20:16:03", + 12095 + ], + [ + "2022-06-09T13:28:16", + 12097 + ], + [ + "2022-06-10T02:21:45", + 12101 + ], + [ + "2022-06-11T02:20:43", + 12122 + ], + [ + "2022-06-12T13:23:39", + 12134 + ], + [ + "2022-06-14T02:30:00", + 12182 + ], + [ + "2022-06-15T20:20:02", + 12219 + ], + [ + "2022-06-17T02:17:40", + 12250 + ], + [ + "2022-06-19T07:40:43", + 12280 + ], + [ + "2022-06-22T23:37:06", + 12336 + ], + [ + "2022-06-23T09:06:53", + 12373 + ], + [ + "2022-06-24T02:16:36", + 12402 + ], + [ + "2022-06-25T02:27:04", + 12430 + ], + [ + "2022-06-26T16:16:05", + 12445 + ], + [ + "2022-09-10T23:57:56", + 13603 + ], + [ + "2022-09-11T17:27:20", + 13615 + ], + [ + "2022-09-12T17:31:29", + 13634 + ], + [ + "2022-09-15T12:40:02", + 13708 + ], + [ + "2022-09-16T01:11:41", + 13718 + ], + [ + "2022-09-17T01:12:07", + 13748 + ], + [ + "2022-09-19T22:06:52", + 13809 + ], + [ + "2022-09-20T01:15:00", + 13813 + ], + [ + "2022-09-21T18:40:27", + 13914 + ], + [ + "2022-09-22T16:43:34", + 13943 + ], + [ + "2022-09-25T01:14:04", + 13977 + ], + [ + "2022-09-26T01:16:57", + 13988 + ], + [ + "2022-09-27T20:49:14", + 14058 + ], + [ + "2022-09-30T01:39:04", + 14107 + ], + [ + "2022-10-01T17:39:25", + 14139 + ], + [ + "2022-10-02T12:03:53", + 14151 + ], + [ + "2022-10-03T08:03:32", + 14164 + ], + [ + "2022-10-04T01:20:50", + 14189 + ], + [ + "2022-10-05T01:21:27", + 14219 + ], + [ + "2022-10-08T23:24:13", + 14311 + ], + [ + "2022-10-10T01:35:49", + 14327 + ], + [ + "2022-10-11T01:16:06", + 14341 + ], + [ + "2022-10-12T19:05:48", + 14382 + ], + [ + "2022-10-13T01:19:16", + 14389 + ], + [ + "2022-10-14T01:30:33", + 14413 + ], + [ + "2022-10-15T01:22:21", + 14439 + ], + [ + "2022-10-16T21:43:31", + 14458 + ], + [ + "2022-10-18T06:25:58", + 14494 + ], + [ + "2022-10-22T11:41:20", + 14625 + ], + [ + "2022-10-23T01:13:56", + 14628 + ], + [ + "2022-10-24T20:11:55", + 14662 + ], + [ + "2022-10-25T00:08:55", + 14662 + ], + [ + "2022-10-26T01:07:23", + 14689 + ], + [ + "2022-10-27T01:11:40", + 14705 + ], + [ + "2022-10-29T01:02:52", + 14760 + ], + [ + "2022-10-30T20:09:57", + 14782 + ], + [ + "2022-10-31T22:27:03", + 14796 + ], + [ + "2022-11-01T18:25:59", + 14829 + ], + [ + "2022-11-03T01:11:15", + 14863 + ], + [ + "2022-11-04T11:35:34", + 14895 + ], + [ + "2022-11-05T07:41:24", + 14938 + ], + [ + "2022-11-06T11:06:34", + 14949 + ], + [ + "2022-11-07T19:40:53", + 14967 + ], + [ + "2022-11-08T01:06:52", + 14967 + ], + [ + "2022-11-11T17:10:50", + 15074 + ], + [ + "2022-11-13T20:58:24", + 15097 + ], + [ + "2022-11-14T23:48:23", + 0 + ], + [ + "2022-11-15T07:38:22", + 15126 + ], + [ + "2022-11-17T09:11:40", + 15172 + ], + [ + "2022-11-19T22:14:34", + 15215 + ], + [ + "2022-11-21T23:47:48", + 15245 + ], + [ + "2022-11-22T01:14:59", + 15248 + ], + [ + "2022-11-23T23:28:30", + 15286 + ], + [ + "2022-11-26T01:00:47", + 15329 + ], + [ + "2022-11-28T01:02:53", + 15352 + ], + [ + "2022-12-07T07:19:55", + 15644 + ], + [ + "2022-12-18T20:23:59", + 15776 + ], + [ + "2022-12-19T18:26:59", + 15781 + ], + [ + "2022-12-20T16:08:58", + 15787 + ], + [ + "2022-12-21T23:23:24", + 15806 + ], + [ + "2022-12-22T22:59:06", + 15828 + ], + [ + "2022-12-24T20:01:35", + 15841 + ], + [ + "2022-12-25T21:13:52", + 15846 + ], + [ + "2022-12-26T19:30:31", + 15851 + ], + [ + "2022-12-27T23:56:39", + 15855 + ], + [ + "2022-12-29T20:55:31", + 15869 + ], + [ + "2022-12-30T20:56:36", + 15875 + ], + [ + "2022-12-31T08:10:29", + 15880 + ], + [ + "2023-01-01T23:58:03", + 15885 + ], + [ + "2023-01-02T23:32:43", + 15889 + ], + [ + "2023-01-04T01:14:45", + 15900 + ], + [ + "2023-01-05T00:40:47", + 15909 + ], + [ + "2023-01-06T15:27:19", + 15934 + ], + [ + "2023-01-07T23:05:20", + 15939 + ], + [ + "2023-01-09T23:13:18", + 15956 + ], + [ + "2023-01-10T22:19:22", + 15971 + ], + [ + "2023-01-11T20:38:34", + 15979 + ], + [ + "2023-01-12T19:14:41", + 15983 + ], + [ + "2023-01-14T22:19:17", + 15995 + ], + [ + "2023-01-15T05:54:49", + 16000 + ], + [ + "2023-01-16T01:07:20", + 16000 + ], + [ + "2023-01-18T01:10:41", + 16016 + ], + [ + "2023-01-19T01:11:47", + 16052 + ], + [ + "2023-01-20T01:07:56", + 16081 + ], + [ + "2023-01-21T01:11:30", + 16137 + ], + [ + "2023-01-22T23:52:22", + 16142 + ], + [ + "2023-01-24T01:13:09", + 16177 + ], + [ + "2023-01-25T01:09:15", + 16205 ], [ "2023-01-27T01:08:47", 16227 ], [ - "2023-01-28T23:00:24", - 16236 + "2023-01-28T23:00:24", + 16236 + ], + [ + "2023-01-29T11:12:53", + 16240 + ], + [ + "2023-01-31T09:09:55", + 16275 + ], + [ + "2023-02-04T01:08:11", + 16355 + ], + [ + "2023-02-05T19:16:16", + 16362 + ], + [ + "2023-02-06T01:06:21", + 16362 + ], + [ + "2023-02-07T01:06:44", + 16391 + ], + [ + "2023-02-08T19:33:17", + 16454 + ], + [ + "2023-02-16T01:07:41", + 16627 + ], + [ + "2023-02-17T20:09:45", + 16672 + ], + [ + "2023-02-19T16:48:31", + 16688 + ], + [ + "2023-02-22T01:09:24", + 16741 + ], + [ + "2023-02-25T18:11:10", + 16850 + ], + [ + "2023-02-26T01:20:44", + 16857 + ], + [ + "2023-02-27T01:05:31", + 16869 + ], + [ + "2023-02-28T01:12:07", + 16883 + ], + [ + "2023-03-01T01:11:53", + 16943 + ], + [ + "2023-03-02T01:11:37", + 16974 + ], + [ + "2023-03-04T19:06:27", + 17071 + ], + [ + "2023-03-05T21:22:00", + 17102 + ], + [ + "2023-03-06T18:58:36", + 17139 + ], + [ + "2023-03-07T22:04:26", + 17242 + ], + [ + "2023-03-11T18:55:05", + 17414 + ], + [ + "2023-03-13T01:08:17", + 17447 + ], + [ + "2023-03-16T01:14:43", + 17504 + ], + [ + "2023-03-25T20:41:27", + 17724 + ], + [ + "2023-03-26T18:35:58", + 17746 + ], + [ + "2023-03-27T19:04:51", + 17773 + ], + [ + "2023-03-28T14:20:40", + 17797 + ], + [ + "2023-03-29T01:10:08", + 17804 + ], + [ + "2023-03-30T01:06:23", + 17836 + ], + [ + "2023-04-01T16:38:16", + 17975 + ], + [ + "2023-04-02T18:16:54", + 17991 + ], + [ + "2023-04-03T20:17:29", + 18025 + ], + [ + "2023-04-04T01:00:44", + 18030 + ], + [ + "2023-04-05T01:02:44", + 18052 + ], + [ + "2023-04-06T01:02:10", + 18070 + ], + [ + "2023-04-10T19:39:37", + 18134 + ], + [ + "2023-04-11T18:04:56", + 18156 + ], + [ + "2023-04-12T19:58:02", + 18188 + ], + [ + "2023-04-15T13:28:28", + 18239 + ], + [ + "2023-04-16T20:56:34", + 18263 + ], + [ + "2023-04-20T09:00:09", + 18437 + ], + [ + "2023-04-22T18:08:18", + 18562 + ], + [ + "2023-04-23T08:46:30", + 18577 + ], + [ + "2023-04-24T10:35:05", + 18603 + ], + [ + "2023-04-25T13:22:38", + 18644 + ], + [ + "2023-04-26T01:05:21", + 18661 + ], + [ + "2023-04-29T09:13:18", + 18829 + ], + [ + "2023-04-30T23:37:21", + 18849 + ], + [ + "2023-05-01T12:30:40", + 18859 + ], + [ + "2023-05-02T01:03:19", + 18876 + ], + [ + "2023-05-12T22:08:47", + 19292 + ], + [ + "2023-05-13T20:23:06", + 19321 + ], + [ + "2023-05-14T19:54:23", + 19349 + ], + [ + "2023-05-17T23:06:02", + 19561 + ], + [ + "2023-05-18T18:05:13", + 19677 + ], + [ + "2023-05-19T18:27:46", + 19748 + ], + [ + "2023-05-20T06:58:27", + 19761 + ], + [ + "2023-05-21T17:54:05", + 19780 + ], + [ + "2023-05-22T19:05:24", + 19806 + ], + [ + "2023-05-23T01:07:57", + 19813 + ], + [ + "2023-05-24T01:14:32", + 19874 + ], + [ + "2023-05-26T01:11:00", + 19987 + ], + [ + "2023-05-27T17:04:12", + 20060 + ], + [ + "2023-05-28T17:03:24", + 20076 + ], + [ + "2023-05-29T11:13:08", + 20089 + ], + [ + "2023-05-31T23:48:39", + 20240 + ], + [ + "2023-06-01T01:25:18", + 20249 + ], + [ + "2023-06-02T01:10:33", + 20299 + ], + [ + "2023-06-03T09:59:50", + 20348 + ], + [ + "2023-06-04T01:13:43", + 20352 + ], + [ + "2023-06-05T01:08:28", + 20361 + ], + [ + "2023-06-07T01:10:00", + 20421 + ], + [ + "2023-06-08T05:19:18", + 20454 + ], + [ + "2023-06-11T18:48:09", + 20563 + ], + [ + "2023-06-12T01:16:15", + 20573 + ], + [ + "2023-06-13T01:11:33", + 20610 + ], + [ + "2023-06-17T01:09:24", + 20763 + ], + [ + "2023-06-21T05:26:13", + 20859 + ], + [ + "2023-06-23T01:12:21", + 20923 + ], + [ + "2023-06-24T01:13:03", + 20947 + ], + [ + "2023-06-25T01:19:08", + 20960 + ], + [ + "2023-07-02T01:17:57", + 21229 + ], + [ + "2023-07-05T04:19:03", + 21351 + ], + [ + "2023-07-06T01:13:59", + 21394 + ], + [ + "2023-07-07T01:22:59", + 21446 + ], + [ + "2023-07-09T01:17:28", + 21481 + ], + [ + "2023-07-10T12:35:57", + 21522 + ], + [ + "2023-07-11T18:04:48", + 21589 + ], + [ + "2023-07-13T01:16:23", + 21642 + ], + [ + "2023-07-14T18:55:34", + 21712 + ], + [ + "2023-07-15T14:49:24", + 21727 + ], + [ + "2023-07-17T01:18:56", + 21741 + ], + [ + "2023-07-23T01:13:49", + 21944 + ], + [ + "2023-07-24T12:19:15", + 21974 + ], + [ + "2023-07-25T10:15:45", + 22010 + ], + [ + "2023-07-26T21:02:52", + 22093 + ], + [ + "2023-08-03T19:41:39", + 22516 + ], + [ + "2023-08-06T01:17:07", + 22563 + ], + [ + "2023-08-07T14:09:58", + 22588 + ], + [ + "2023-08-09T21:27:06", + 22669 + ], + [ + "2023-08-10T00:37:45", + 22669 + ], + [ + "2023-08-11T00:59:39", + 22702 + ], + [ + "2023-08-14T01:07:10", + 22790 + ], + [ + "2023-08-20T10:19:30", + 23214 + ], + [ + "2023-08-21T01:02:38", + 23216 + ], + [ + "2023-08-22T05:14:32", + 23274 + ], + [ + "2023-08-23T01:09:12", + 23310 + ], + [ + "2023-08-24T08:23:46", + 23383 + ], + [ + "2023-08-25T01:09:33", + 23432 + ], + [ + "2023-08-26T15:48:29", + 23477 + ], + [ + "2023-09-01T01:00:53", + 23770 + ], + [ + "2023-09-02T06:53:40", + 23855 + ], + [ + "2023-09-03T17:23:10", + 23863 + ], + [ + "2023-09-04T01:14:42", + 23865 + ], + [ + "2023-09-06T09:29:05", + 23986 + ], + [ + "2023-09-08T01:01:21", + 24028 + ], + [ + "2023-09-17T18:42:04", + 24418 + ], + [ + "2023-09-18T07:24:56", + 24433 + ], + [ + "2023-09-19T01:04:12", + 24471 + ], + [ + "2023-09-20T15:31:08", + 24565 + ], + [ + "2023-09-21T01:10:04", + 24588 + ], + [ + "2023-09-22T16:54:09", + 24650 + ], + [ + "2023-09-24T01:09:47", + 24668 + ], + [ + "2023-09-26T01:03:52", + 24775 + ], + [ + "2023-09-28T01:03:35", + 24889 + ], + [ + "2023-10-02T10:16:34", + 25047 + ], + [ + "2023-10-11T01:02:27", + 25444 + ], + [ + "2023-10-12T07:12:13", + 25573 + ], + [ + "2023-10-15T18:35:06", + 25733 + ], + [ + "2023-10-16T01:12:02", + 25738 + ], + [ + "2023-10-17T01:19:48", + 25817 + ], + [ + "2023-10-18T09:54:25", + 25942 + ], + [ + "2023-10-19T05:13:12", + 26012 + ], + [ + "2023-10-20T21:26:06", + 26224 + ], + [ + "2023-10-21T07:20:54", + 26233 + ], + [ + "2023-10-22T21:40:43", + 26248 + ], + [ + "2023-10-24T01:08:57", + 26340 + ], + [ + "2023-10-25T03:48:19", + 26394 + ], + [ + "2023-10-28T17:16:00", + 26624 + ], + [ + "2023-10-29T10:04:35", + 26648 + ], + [ + "2023-10-30T01:06:23", + 26663 + ], + [ + "2023-10-31T01:15:37", + 26745 + ], + [ + "2023-11-01T12:58:49", + 26904 + ], + [ + "2023-11-03T22:34:05", + 27154 + ], + [ + "2023-11-04T17:14:00", + 27171 + ], + [ + "2023-11-05T18:48:33", + 27190 + ], + [ + "2023-11-06T22:30:41", + 27311 + ], + [ + "2023-11-07T22:42:00", + 27448 + ], + [ + "2023-11-08T22:22:32", + 27533 + ], + [ + "2023-11-09T22:42:59", + 27661 + ], + [ + "2023-11-10T22:40:09", + 27733 + ], + [ + "2023-11-11T22:37:19", + 27753 + ] + ], + "scala": [ + [ + "2021-07-26T20:10:04", + 641 + ], + [ + "2021-07-28T01:29:28", + 642 + ], + [ + "2021-07-29T01:25:08", + 642 + ], + [ + "2021-07-30T02:45:47", + 643 + ], + [ + "2021-07-31T02:55:52", + 644 + ], + [ + "2021-08-01T01:34:33", + 646 + ], + [ + "2021-08-02T01:25:51", + 647 + ], + [ + "2021-08-03T01:34:04", + 647 + ], + [ + "2021-08-04T01:25:42", + 648 + ], + [ + "2021-08-05T13:16:40", + 649 + ], + [ + "2021-08-06T10:08:44", + 649 + ], + [ + "2021-08-07T01:23:20", + 649 + ], + [ + "2021-08-08T17:46:20", + 652 + ], + [ + "2021-08-09T12:57:30", + 655 + ], + [ + "2021-08-10T18:15:58", + 657 + ], + [ + "2021-08-11T19:45:43", + 668 + ], + [ + "2021-08-12T16:45:06", + 680 + ], + [ + "2021-08-13T01:26:41", + 686 + ], + [ + "2021-08-14T08:26:41", + 687 + ], + [ + "2021-08-15T21:37:16", + 701 + ], + [ + "2021-08-17T01:22:18", + 702 + ], + [ + "2021-08-18T01:24:15", + 703 + ], + [ + "2021-08-19T22:44:18", + 707 + ], + [ + "2021-08-20T16:03:59", + 719 + ], + [ + "2021-08-21T12:36:04", + 723 + ], + [ + "2021-08-22T01:21:13", + 724 + ], + [ + "2021-08-23T20:34:23", + 737 + ], + [ + "2021-08-24T21:32:49", + 739 + ], + [ + "2021-08-28T19:11:50", + 743 + ], + [ + "2021-08-29T12:02:14", + 749 + ], + [ + "2021-08-31T03:01:11", + 751 + ], + [ + "2021-09-01T01:34:30", + 753 + ], + [ + "2021-09-02T11:26:37", + 754 + ], + [ + "2021-09-03T01:30:31", + 758 + ], + [ + "2021-09-04T13:35:27", + 760 + ], + [ + "2021-09-06T01:30:54", + 767 + ], + [ + "2021-09-07T01:30:29", + 768 + ], + [ + "2021-09-12T12:45:46", + 770 + ], + [ + "2021-09-15T03:11:38", + 773 + ], + [ + "2021-09-18T22:10:09", + 785 + ], + [ + "2021-09-19T15:32:31", + 790 + ], + [ + "2021-09-20T01:35:53", + 792 + ], + [ + "2021-09-21T17:53:24", + 794 + ], + [ + "2021-09-23T01:37:54", + 800 + ], + [ + "2021-09-24T03:14:34", + 802 + ], + [ + "2021-09-25T16:30:33", + 818 + ], + [ + "2021-09-26T12:23:03", + 820 + ], + [ + "2021-09-27T15:31:39", + 826 + ], + [ + "2021-09-29T01:26:48", + 828 + ], + [ + "2021-09-30T23:05:25", + 831 + ], + [ + "2021-10-01T16:05:31", + 832 + ], + [ + "2021-10-03T21:24:16", + 833 + ], + [ + "2021-10-05T01:32:48", + 835 + ], + [ + "2021-10-06T08:19:33", + 844 + ], + [ + "2021-10-07T19:01:06", + 848 + ], + [ + "2021-10-09T09:11:23", + 851 + ], + [ + "2021-10-10T16:38:57", + 855 + ], + [ + "2021-10-12T12:32:12", + 857 + ], + [ + "2021-10-13T01:33:36", + 858 + ], + [ + "2021-10-16T01:43:12", + 862 + ], + [ + "2021-10-17T12:27:08", + 869 + ], + [ + "2021-10-21T01:43:07", + 874 + ], + [ + "2021-10-24T15:47:49", + 880 + ], + [ + "2021-10-25T04:54:54", + 882 + ], + [ + "2021-10-26T19:08:21", + 891 + ], + [ + "2021-10-27T10:52:46", + 893 + ], + [ + "2021-10-29T05:01:38", + 895 + ], + [ + "2021-10-30T20:34:54", + 49 + ], + [ + "2021-10-31T18:17:07", + 968 + ], + [ + "2021-11-01T01:50:59", + 981 + ], + [ + "2021-11-02T11:56:56", + 1002 + ], + [ + "2021-11-03T01:34:05", + 1016 + ], + [ + "2021-11-04T22:06:35", + 1048 + ], + [ + "2021-11-07T22:48:14", + 1058 + ], + [ + "2021-11-08T16:38:12", + 1069 + ], + [ + "2021-11-09T14:05:16", + 1080 + ], + [ + "2021-11-11T23:43:38", + 1089 + ], + [ + "2021-11-12T07:23:40", + 1090 + ], + [ + "2021-11-13T03:49:42", + 1092 + ], + [ + "2021-11-14T20:38:46", + 1094 + ], + [ + "2021-11-15T21:50:19", + 1103 + ], + [ + "2021-11-17T13:49:27", + 1106 + ], + [ + "2021-11-18T12:57:03", + 1107 + ], + [ + "2021-11-19T01:41:21", + 1113 + ], + [ + "2021-11-21T18:45:36", + 1115 + ], + [ + "2021-11-22T21:51:21", + 1131 + ], + [ + "2021-11-24T01:32:35", + 1132 + ], + [ + "2021-11-25T01:36:17", + 1133 + ], + [ + "2021-11-26T01:28:24", + 1134 + ], + [ + "2021-11-27T01:29:49", + 1135 + ], + [ + "2021-11-29T19:53:22", + 1139 + ], + [ + "2021-12-01T21:53:10", + 1146 + ], + [ + "2021-12-02T22:38:42", + 1152 + ], + [ + "2021-12-03T07:25:47", + 1155 + ], + [ + "2021-12-04T10:20:40", + 1158 + ], + [ + "2021-12-05T01:37:50", + 1162 + ], + [ + "2021-12-06T01:34:54", + 1165 + ], + [ + "2021-12-07T19:17:16", + 1194 + ], + [ + "2021-12-08T11:50:21", + 1196 + ], + [ + "2021-12-09T08:24:35", + 1214 + ], + [ + "2021-12-11T10:08:27", + 1215 + ], + [ + "2021-12-12T01:37:49", + 1227 + ], + [ + "2021-12-14T01:36:23", + 1232 + ], + [ + "2021-12-15T01:38:21", + 1233 + ], + [ + "2021-12-16T01:40:15", + 1234 + ], + [ + "2021-12-17T01:41:18", + 1234 + ], + [ + "2021-12-18T12:07:04", + 1235 + ], + [ + "2021-12-21T13:52:15", + 1243 + ], + [ + "2021-12-23T13:53:28", + 1245 + ], + [ + "2021-12-26T01:43:59", + 1246 + ], + [ + "2021-12-29T20:36:25", + 1247 + ], + [ + "2021-12-31T01:38:18", + 1247 + ], + [ + "2022-01-01T01:37:58", + 1248 + ], + [ + "2022-01-03T22:58:05", + 1250 + ], + [ + "2022-01-09T14:02:41", + 1283 + ], + [ + "2022-01-11T01:36:44", + 1297 + ], + [ + "2022-01-12T01:35:34", + 1298 + ], + [ + "2022-01-13T09:24:45", + 1308 + ], + [ + "2022-01-14T01:38:08", + 1319 + ], + [ + "2022-01-15T11:07:48", + 1322 + ], + [ + "2022-01-16T01:40:08", + 1324 + ], + [ + "2022-01-17T12:08:17", + 1325 + ], + [ + "2022-01-18T04:25:59", + 1326 + ], + [ + "2022-01-22T22:01:45", + 1330 + ], + [ + "2022-01-23T19:48:17", + 1348 + ], + [ + "2022-01-24T20:09:52", + 1354 + ], + [ + "2022-01-25T07:19:01", + 1354 + ], + [ + "2022-01-26T01:45:09", + 1366 + ], + [ + "2022-01-28T01:33:25", + 1368 + ], + [ + "2022-01-29T20:09:19", + 1374 + ], + [ + "2022-01-30T17:15:32", + 1382 + ], + [ + "2022-01-31T13:01:19", + 1394 + ], + [ + "2022-02-01T07:00:15", + 1398 + ], + [ + "2022-02-02T23:09:44", + 1401 + ], + [ + "2022-02-03T10:37:04", + 1422 + ], + [ + "2022-02-05T23:23:53", + 1425 + ], + [ + "2022-02-06T17:27:14", + 1428 + ], + [ + "2022-02-07T07:41:03", + 1429 + ], + [ + "2022-02-09T12:02:49", + 1436 + ], + [ + "2022-02-10T01:38:28", + 1436 + ], + [ + "2022-02-13T17:21:12", + 1437 + ], + [ + "2022-02-14T01:37:05", + 1441 + ], + [ + "2022-02-16T01:41:49", + 1443 + ], + [ + "2022-02-18T21:34:22", + 1443 + ], + [ + "2022-02-20T20:39:40", + 1452 + ], + [ + "2022-02-21T21:26:40", + 1454 + ], + [ + "2022-02-25T15:39:13", + 1455 + ], + [ + "2022-02-27T01:44:50", + 1455 + ], + [ + "2022-02-28T01:51:49", + 1455 + ], + [ + "2022-03-02T23:33:51", + 1455 + ], + [ + "2022-03-03T01:50:14", + 1455 + ], + [ + "2022-03-04T05:18:37", + 1455 + ], + [ + "2022-03-06T01:44:30", + 1455 + ], + [ + "2022-03-08T11:13:31", + 1455 + ], + [ + "2022-03-09T07:35:11", + 1459 + ], + [ + "2022-03-10T01:51:49", + 1459 + ], + [ + "2022-03-11T01:51:30", + 1460 + ], + [ + "2022-03-12T01:42:04", + 1460 + ], + [ + "2022-03-13T19:08:51", + 1460 + ], + [ + "2022-03-14T15:10:17", + 1460 + ], + [ + "2022-03-15T01:49:51", + 1460 + ], + [ + "2022-03-16T01:45:07", + 1462 + ], + [ + "2022-03-17T12:36:48", + 1462 + ], + [ + "2022-03-19T16:59:24", + 1463 + ], + [ + "2022-03-20T11:59:05", + 1463 + ], + [ + "2022-03-21T01:44:24", + 1463 + ], + [ + "2022-03-22T01:55:14", + 1463 + ], + [ + "2022-03-23T01:55:28", + 1463 + ], + [ + "2022-03-24T01:48:26", + 1463 + ], + [ + "2022-03-26T22:36:41", + 1463 + ], + [ + "2022-03-27T20:21:20", + 1463 + ], + [ + "2022-03-30T01:54:07", + 1463 + ], + [ + "2022-03-31T19:42:14", + 1463 + ], + [ + "2022-04-01T15:16:50", + 1463 + ], + [ + "2022-04-02T01:51:52", + 1463 + ], + [ + "2022-04-04T03:28:40", + 1463 + ], + [ + "2022-04-06T04:08:13", + 1463 + ], + [ + "2022-04-07T01:53:15", + 1463 + ], + [ + "2022-04-09T01:50:38", + 1463 + ], + [ + "2022-04-10T14:05:52", + 1463 + ], + [ + "2022-04-11T17:59:19", + 1463 + ], + [ + "2022-04-18T19:21:22", + 1463 + ], + [ + "2022-04-22T17:35:15", + 1463 + ], + [ + "2022-04-23T08:58:43", + 1463 + ], + [ + "2022-04-24T16:22:52", + 1467 + ], + [ + "2022-04-26T12:16:27", + 1467 ], [ - "2023-01-29T11:12:53", - 16240 + "2022-04-28T02:47:35", + 1467 ], [ - "2023-01-31T09:09:55", - 16275 + "2022-04-29T02:28:21", + 1467 ], [ - "2023-02-04T01:08:11", - 16355 + "2022-04-30T15:55:37", + 1467 ], [ - "2023-02-05T19:16:16", - 16362 + "2022-05-02T02:22:46", + 1467 ], [ - "2023-02-06T01:06:21", - 16362 + "2022-05-03T15:10:47", + 1467 ], [ - "2023-02-07T01:06:44", - 16391 + "2022-05-04T02:21:38", + 1467 ], [ - "2023-02-08T19:33:17", - 16454 + "2022-05-05T02:29:20", + 1468 ], [ - "2023-02-16T01:07:41", - 16627 + "2022-05-06T01:57:12", + 1468 ], [ - "2023-02-17T20:09:45", - 16672 + "2022-05-07T15:43:47", + 1468 ], [ - "2023-02-19T16:48:31", - 16688 + "2022-05-08T09:22:07", + 1468 ], [ - "2023-02-22T01:09:24", - 16741 + "2022-05-11T18:46:39", + 1468 ], [ - "2023-02-25T18:11:10", - 16850 + "2022-05-14T10:19:10", + 1468 ], [ - "2023-02-26T01:20:44", - 16857 + "2022-05-15T18:35:14", + 1468 ], [ - "2023-02-27T01:05:31", - 16869 + "2022-05-17T02:16:25", + 1468 ], [ - "2023-02-28T01:12:07", - 16883 + "2022-05-20T02:14:29", + 1468 ], [ - "2023-03-01T01:11:53", - 16943 + "2022-05-21T01:55:42", + 1468 ], [ - "2023-03-02T01:11:37", - 16974 + "2022-05-22T02:10:42", + 1469 ], [ - "2023-03-04T19:06:27", - 17071 + "2022-05-24T11:16:46", + 1469 ], [ - "2023-03-05T21:22:00", - 17102 + "2022-05-25T02:18:32", + 1470 ], [ - "2023-03-06T18:58:36", - 17139 + "2022-05-27T02:15:18", + 1470 ], [ - "2023-03-07T22:04:26", - 17242 + "2022-05-28T02:22:34", + 1470 ], [ - "2023-03-11T18:55:05", - 17414 + "2022-05-30T02:21:03", + 1470 ], [ - "2023-03-13T01:08:17", - 17447 + "2022-05-31T19:33:59", + 1472 ], [ - "2023-03-16T01:14:43", - 17504 + "2022-06-01T02:31:42", + 1472 ], [ - "2023-03-25T20:41:27", - 17724 + "2022-06-02T02:27:43", + 1472 ], [ - "2023-03-26T18:35:58", - 17746 + "2022-06-03T01:55:13", + 1472 ], [ - "2023-03-27T19:04:51", - 17773 + "2022-06-08T20:16:03", + 1472 ], [ - "2023-03-28T14:20:40", - 17797 + "2022-06-09T13:28:16", + 1472 ], [ - "2023-03-29T01:10:08", - 17804 + "2022-06-10T02:21:45", + 1473 ], [ - "2023-03-30T01:06:23", - 17836 + "2022-06-11T02:20:43", + 1473 ], [ - "2023-04-01T16:38:16", - 17975 + "2022-06-12T13:23:39", + 1473 ], [ - "2023-04-02T18:16:54", - 17991 + "2022-06-14T02:30:00", + 1476 ], [ - "2023-04-03T20:17:29", - 18025 + "2022-06-15T20:20:02", + 1476 + ], + [ + "2022-06-17T02:17:40", + 1476 + ], + [ + "2022-06-19T07:40:43", + 1476 + ], + [ + "2022-06-22T23:37:06", + 1476 + ], + [ + "2022-06-23T09:06:53", + 1476 + ], + [ + "2022-06-24T02:16:36", + 1476 + ], + [ + "2022-06-25T02:27:04", + 1476 + ], + [ + "2022-06-26T16:16:05", + 1476 ] ], - "scala": [ + "security": [ [ - "2021-07-26T20:10:04", - 641 + "2022-09-10T23:57:56", + 910 ], [ - "2021-07-28T01:29:28", - 642 + "2022-09-11T17:27:20", + 910 ], [ - "2021-07-29T01:25:08", - 642 + "2022-09-12T17:31:29", + 950 ], [ - "2021-07-30T02:45:47", - 643 + "2022-09-15T12:40:02", + 1016 ], [ - "2021-07-31T02:55:52", - 644 + "2022-09-16T01:11:41", + 1028 ], [ - "2021-08-01T01:34:33", - 646 + "2022-09-17T01:12:07", + 1082 ], [ - "2021-08-02T01:25:51", - 647 + "2022-09-19T22:06:52", + 1121 ], [ - "2021-08-03T01:34:04", - 647 + "2022-09-20T01:15:00", + 1133 + ], + [ + "2022-09-21T18:40:27", + 1170 + ], + [ + "2022-09-22T16:43:34", + 1182 + ], + [ + "2022-09-25T01:14:04", + 1214 + ], + [ + "2022-09-26T01:16:57", + 1214 + ], + [ + "2022-09-27T20:49:14", + 1274 + ], + [ + "2022-09-30T01:39:04", + 1332 + ], + [ + "2022-10-01T17:39:25", + 1332 + ], + [ + "2022-10-02T12:03:53", + 1332 + ], + [ + "2022-10-03T08:03:32", + 1332 + ], + [ + "2022-10-04T01:20:50", + 1334 + ], + [ + "2022-10-05T01:21:27", + 1334 + ], + [ + "2022-10-08T23:24:13", + 1334 + ], + [ + "2022-10-10T01:35:49", + 1334 + ], + [ + "2022-10-11T01:16:06", + 1334 ], [ - "2021-08-04T01:25:42", - 648 + "2022-10-12T19:05:48", + 1334 ], [ - "2021-08-05T13:16:40", - 649 + "2022-10-13T01:19:16", + 1334 ], [ - "2021-08-06T10:08:44", - 649 + "2022-10-14T01:30:33", + 1338 ], [ - "2021-08-07T01:23:20", - 649 + "2022-10-15T01:22:21", + 1338 ], [ - "2021-08-08T17:46:20", - 652 + "2022-10-16T21:43:31", + 1338 ], [ - "2021-08-09T12:57:30", - 655 + "2022-10-18T06:25:58", + 1341 ], [ - "2021-08-10T18:15:58", - 657 + "2022-10-22T11:41:20", + 1343 ], [ - "2021-08-11T19:45:43", - 668 + "2022-10-23T01:13:56", + 1343 ], [ - "2021-08-12T16:45:06", - 680 + "2022-10-24T20:11:55", + 1343 ], [ - "2021-08-13T01:26:41", - 686 + "2022-10-25T00:08:55", + 1343 ], [ - "2021-08-14T08:26:41", - 687 + "2022-10-26T01:07:23", + 1343 ], [ - "2021-08-15T21:37:16", - 701 + "2022-10-27T01:11:40", + 1345 ], [ - "2021-08-17T01:22:18", - 702 + "2022-10-29T01:02:52", + 1350 ], [ - "2021-08-18T01:24:15", - 703 + "2022-10-30T20:09:57", + 1350 ], [ - "2021-08-19T22:44:18", - 707 + "2022-10-31T22:27:03", + 1350 ], [ - "2021-08-20T16:03:59", - 719 + "2022-11-01T18:25:59", + 1350 ], [ - "2021-08-21T12:36:04", - 723 + "2022-11-03T01:11:15", + 1350 ], [ - "2021-08-22T01:21:13", - 724 + "2022-11-04T11:35:34", + 1351 ], [ - "2021-08-23T20:34:23", - 737 + "2022-11-05T07:41:24", + 1351 ], [ - "2021-08-24T21:32:49", - 739 + "2022-11-06T11:06:34", + 1351 ], [ - "2021-08-28T19:11:50", - 743 + "2022-11-07T19:40:53", + 1353 ], [ - "2021-08-29T12:02:14", - 749 + "2022-11-08T01:06:52", + 1353 ], [ - "2021-08-31T03:01:11", - 751 + "2022-11-11T17:10:50", + 1396 ], [ - "2021-09-01T01:34:30", - 753 + "2022-11-13T20:58:24", + 1396 ], [ - "2021-09-02T11:26:37", - 754 + "2022-11-14T23:48:23", + 0 ], [ - "2021-09-03T01:30:31", - 758 + "2022-11-15T07:38:22", + 1396 ], [ - "2021-09-04T13:35:27", - 760 + "2022-11-17T09:11:40", + 1418 ], [ - "2021-09-06T01:30:54", - 767 + "2022-11-19T22:14:34", + 1446 ], [ - "2021-09-07T01:30:29", - 768 + "2022-11-21T23:47:48", + 1446 ], [ - "2021-09-12T12:45:46", - 770 + "2022-11-22T01:14:59", + 1446 ], [ - "2021-09-15T03:11:38", - 773 + "2022-11-23T23:28:30", + 1481 ], [ - "2021-09-18T22:10:09", - 785 + "2022-11-26T01:00:47", + 1493 ], [ - "2021-09-19T15:32:31", - 790 + "2022-11-28T01:02:53", + 1493 ], [ - "2021-09-20T01:35:53", - 792 + "2022-12-07T07:19:55", + 1544 ], [ - "2021-09-21T17:53:24", - 794 + "2022-12-18T20:23:59", + 1786 ], [ - "2021-09-23T01:37:54", - 800 + "2022-12-19T18:26:59", + 1790 ], [ - "2021-09-24T03:14:34", - 802 + "2022-12-20T16:08:58", + 1791 ], [ - "2021-09-25T16:30:33", - 818 + "2022-12-21T23:23:24", + 1797 ], [ - "2021-09-26T12:23:03", - 820 + "2022-12-22T22:59:06", + 1807 ], [ - "2021-09-27T15:31:39", - 826 + "2022-12-24T20:01:35", + 1833 ], [ - "2021-09-29T01:26:48", - 828 + "2022-12-25T21:13:52", + 1836 ], [ - "2021-09-30T23:05:25", - 831 + "2022-12-26T19:30:31", + 1837 ], [ - "2021-10-01T16:05:31", - 832 + "2022-12-27T23:56:39", + 1863 ], [ - "2021-10-03T21:24:16", - 833 + "2022-12-29T20:55:31", + 1874 ], [ - "2021-10-05T01:32:48", - 835 + "2022-12-30T20:56:36", + 1879 ], [ - "2021-10-06T08:19:33", - 844 + "2022-12-31T08:10:29", + 1880 ], [ - "2021-10-07T19:01:06", - 848 + "2023-01-01T23:58:03", + 1881 ], [ - "2021-10-09T09:11:23", - 851 + "2023-01-02T23:32:43", + 1895 ], [ - "2021-10-10T16:38:57", - 855 + "2023-01-04T01:14:45", + 1913 ], [ - "2021-10-12T12:32:12", - 857 + "2023-01-05T00:40:47", + 1927 ], [ - "2021-10-13T01:33:36", - 858 + "2023-01-06T15:27:19", + 1978 ], [ - "2021-10-16T01:43:12", - 862 + "2023-01-07T23:05:20", + 1981 ], [ - "2021-10-17T12:27:08", - 869 + "2023-01-09T23:13:18", + 2011 ], [ - "2021-10-21T01:43:07", - 874 + "2023-01-10T22:19:22", + 2013 ], [ - "2021-10-24T15:47:49", - 880 + "2023-01-11T20:38:34", + 2025 ], [ - "2021-10-25T04:54:54", - 882 + "2023-01-12T19:14:41", + 2043 ], [ - "2021-10-26T19:08:21", - 891 + "2023-01-14T22:19:17", + 2065 ], [ - "2021-10-27T10:52:46", - 893 + "2023-01-15T05:54:49", + 2065 ], [ - "2021-10-29T05:01:38", - 895 + "2023-01-16T01:07:20", + 2065 ], [ - "2021-10-30T20:34:54", - 49 + "2023-01-18T01:10:41", + 2115 ], [ - "2021-10-31T18:17:07", - 968 + "2023-01-19T01:11:47", + 2126 ], [ - "2021-11-01T01:50:59", - 981 + "2023-01-20T01:07:56", + 2141 ], [ - "2021-11-02T11:56:56", - 1002 + "2023-01-21T01:11:30", + 2185 ], [ - "2021-11-03T01:34:05", - 1016 + "2023-01-22T23:52:22", + 2239 ], [ - "2021-11-04T22:06:35", - 1048 + "2023-01-24T01:13:09", + 2259 ], [ - "2021-11-07T22:48:14", - 1058 + "2023-01-25T01:09:15", + 2307 ], [ - "2021-11-08T16:38:12", - 1069 + "2023-01-27T01:08:47", + 2371 ], [ - "2021-11-09T14:05:16", - 1080 + "2023-01-28T23:00:24", + 2410 ], [ - "2021-11-11T23:43:38", - 1089 + "2023-01-29T11:12:53", + 2412 ], [ - "2021-11-12T07:23:40", - 1090 + "2023-01-31T09:09:55", + 2460 ], [ - "2021-11-13T03:49:42", - 1092 + "2023-02-04T01:08:11", + 2592 ], [ - "2021-11-14T20:38:46", - 1094 + "2023-02-05T19:16:16", + 2598 ], [ - "2021-11-15T21:50:19", - 1103 + "2023-02-06T01:06:21", + 2602 ], [ - "2021-11-17T13:49:27", - 1106 + "2023-02-07T01:06:44", + 2624 ], [ - "2021-11-18T12:57:03", - 1107 + "2023-02-08T19:33:17", + 2692 ], [ - "2021-11-19T01:41:21", - 1113 + "2023-02-16T01:07:41", + 2895 ], [ - "2021-11-21T18:45:36", - 1115 + "2023-02-17T20:09:45", + 3000 ], [ - "2021-11-22T21:51:21", - 1131 + "2023-02-19T16:48:31", + 3024 ], [ - "2021-11-24T01:32:35", - 1132 + "2023-02-22T01:09:24", + 3124 ], [ - "2021-11-25T01:36:17", - 1133 + "2023-02-25T18:11:10", + 3244 ], [ - "2021-11-26T01:28:24", - 1134 + "2023-02-26T01:20:44", + 3248 ], [ - "2021-11-27T01:29:49", - 1135 + "2023-02-27T01:05:31", + 3260 ], [ - "2021-11-29T19:53:22", - 1139 + "2023-02-28T01:12:07", + 3298 ], [ - "2021-12-01T21:53:10", - 1146 + "2023-03-01T01:11:53", + 3326 ], [ - "2021-12-02T22:38:42", - 1152 + "2023-03-02T01:11:37", + 3392 ], [ - "2021-12-03T07:25:47", - 1155 + "2023-03-04T19:06:27", + 3503 ], [ - "2021-12-04T10:20:40", - 1158 + "2023-03-05T21:22:00", + 3525 ], [ - "2021-12-05T01:37:50", - 1162 + "2023-03-06T18:58:36", + 3593 ], [ - "2021-12-06T01:34:54", - 1165 + "2023-03-07T22:04:26", + 3779 ], [ - "2021-12-07T19:17:16", - 1194 + "2023-03-11T18:55:05", + 4299 ], [ - "2021-12-08T11:50:21", - 1196 + "2023-03-13T01:08:17", + 4311 ], [ - "2021-12-09T08:24:35", - 1214 + "2023-03-16T01:14:43", + 4799 ], [ - "2021-12-11T10:08:27", - 1215 + "2023-03-25T20:41:27", + 6141 ], [ - "2021-12-12T01:37:49", - 1227 + "2023-03-26T18:35:58", + 6163 ], [ - "2021-12-14T01:36:23", - 1232 + "2023-03-27T19:04:51", + 6385 ], [ - "2021-12-15T01:38:21", - 1233 + "2023-03-28T14:20:40", + 6485 ], [ - "2021-12-16T01:40:15", - 1234 + "2023-03-29T01:10:08", + 6501 ], [ - "2021-12-17T01:41:18", - 1234 + "2023-03-30T01:06:23", + 6603 ], [ - "2021-12-18T12:07:04", - 1235 + "2023-04-01T16:38:16", + 6901 ], [ - "2021-12-21T13:52:15", - 1243 + "2023-04-02T18:16:54", + 6915 ], [ - "2021-12-23T13:53:28", - 1245 + "2023-04-03T20:17:29", + 7036 ], [ - "2021-12-26T01:43:59", - 1246 + "2023-04-04T01:00:44", + 7042 ], [ - "2021-12-29T20:36:25", - 1247 + "2023-04-05T01:02:44", + 7145 ], [ - "2021-12-31T01:38:18", - 1247 + "2023-04-06T01:02:10", + 7195 ], [ - "2022-01-01T01:37:58", - 1248 + "2023-04-10T19:39:37", + 7314 ], [ - "2022-01-03T22:58:05", - 1250 + "2023-04-11T18:04:56", + 7402 ], [ - "2022-01-09T14:02:41", - 1283 + "2023-04-12T19:58:02", + 7465 ], [ - "2022-01-11T01:36:44", - 1297 + "2023-04-15T13:28:28", + 7605 ], [ - "2022-01-12T01:35:34", - 1298 + "2023-04-16T20:56:34", + 7625 ], [ - "2022-01-13T09:24:45", - 1308 + "2023-04-20T09:00:09", + 7811 ], [ - "2022-01-14T01:38:08", - 1319 + "2023-04-22T18:08:18", + 8000 ], [ - "2022-01-15T11:07:48", - 1322 + "2023-04-23T08:46:30", + 8010 ], [ - "2022-01-16T01:40:08", - 1324 + "2023-04-24T10:35:05", + 8037 ], [ - "2022-01-17T12:08:17", - 1325 + "2023-04-25T13:22:38", + 8121 ], [ - "2022-01-18T04:25:59", - 1326 + "2023-04-26T01:05:21", + 8143 ], [ - "2022-01-22T22:01:45", - 1330 + "2023-04-29T09:13:18", + 8313 ], [ - "2022-01-23T19:48:17", - 1348 + "2023-04-30T23:37:21", + 8320 ], [ - "2022-01-24T20:09:52", - 1354 + "2023-05-01T12:30:40", + 8328 ], [ - "2022-01-25T07:19:01", - 1354 + "2023-05-02T01:03:19", + 8338 ], [ - "2022-01-26T01:45:09", - 1366 + "2023-05-12T22:08:47", + 9112 ], [ - "2022-01-28T01:33:25", - 1368 + "2023-05-13T20:23:06", + 9125 ], [ - "2022-01-29T20:09:19", - 1374 + "2023-05-14T19:54:23", + 9139 ], [ - "2022-01-30T17:15:32", - 1382 + "2023-05-17T23:06:02", + 9367 ], [ - "2022-01-31T13:01:19", - 1394 + "2023-05-18T18:05:13", + 9391 ], [ - "2022-02-01T07:00:15", - 1398 + "2023-05-19T18:27:46", + 9423 ], [ - "2022-02-02T23:09:44", - 1401 + "2023-05-20T06:58:27", + 9425 ], [ - "2022-02-03T10:37:04", - 1422 + "2023-05-21T17:54:05", + 9425 ], [ - "2022-02-05T23:23:53", - 1425 + "2023-05-22T19:05:24", + 9629 ], [ - "2022-02-06T17:27:14", - 1428 + "2023-05-23T01:07:57", + 9666 ], [ - "2022-02-07T07:41:03", - 1429 + "2023-05-24T01:14:32", + 9920 ], [ - "2022-02-09T12:02:49", - 1436 + "2023-05-26T01:11:00", + 10646 ], [ - "2022-02-10T01:38:28", - 1436 + "2023-05-27T17:04:12", + 10996 ], [ - "2022-02-13T17:21:12", - 1437 + "2023-05-28T17:03:24", + 11028 ], [ - "2022-02-14T01:37:05", - 1441 + "2023-05-29T11:13:08", + 11127 ], [ - "2022-02-16T01:41:49", - 1443 + "2023-05-31T23:48:39", + 11861 ], [ - "2022-02-18T21:34:22", - 1443 + "2023-06-01T01:25:18", + 11923 ], [ - "2022-02-20T20:39:40", - 1452 + "2023-06-02T01:10:33", + 12363 ], [ - "2022-02-21T21:26:40", - 1454 + "2023-06-03T09:59:50", + 12567 ], [ - "2022-02-25T15:39:13", - 1455 + "2023-06-04T01:13:43", + 12589 ], [ - "2022-02-27T01:44:50", - 1455 + "2023-06-05T01:08:28", + 12635 ], [ - "2022-02-28T01:51:49", - 1455 + "2023-06-07T01:10:00", + 13067 ], [ - "2022-03-02T23:33:51", - 1455 + "2023-06-08T05:19:18", + 13248 ], [ - "2022-03-03T01:50:14", - 1455 + "2023-06-11T18:48:09", + 13693 ], [ - "2022-03-04T05:18:37", - 1455 + "2023-06-12T01:16:15", + 13734 ], [ - "2022-03-06T01:44:30", - 1455 + "2023-06-13T01:11:33", + 14118 ], [ - "2022-03-08T11:13:31", - 1455 + "2023-06-17T01:09:24", + 14849 ], [ - "2022-03-09T07:35:11", - 1459 + "2023-06-21T05:26:13", + 15511 ], [ - "2022-03-10T01:51:49", - 1459 + "2023-06-23T01:12:21", + 16060 ], [ - "2022-03-11T01:51:30", - 1460 + "2023-06-24T01:13:03", + 16321 ], [ - "2022-03-12T01:42:04", - 1460 + "2023-06-25T01:19:08", + 16342 ], [ - "2022-03-13T19:08:51", - 1460 + "2023-07-02T01:17:57", + 17810 ], [ - "2022-03-14T15:10:17", - 1460 + "2023-07-05T04:19:03", + 18325 ], [ - "2022-03-15T01:49:51", - 1460 + "2023-07-06T01:13:59", + 18553 ], [ - "2022-03-16T01:45:07", - 1462 + "2023-07-07T01:22:59", + 18849 ], [ - "2022-03-17T12:36:48", - 1462 + "2023-07-09T01:17:28", + 19004 ], [ - "2022-03-19T16:59:24", - 1463 + "2023-07-10T12:35:57", + 19221 ], [ - "2022-03-20T11:59:05", - 1463 + "2023-07-11T18:04:48", + 19473 ], [ - "2022-03-21T01:44:24", - 1463 + "2023-07-13T01:16:23", + 19652 ], [ - "2022-03-22T01:55:14", - 1463 + "2023-07-14T18:55:34", + 20018 ], [ - "2022-03-23T01:55:28", - 1463 + "2023-07-15T14:49:24", + 20096 ], [ - "2022-03-24T01:48:26", - 1463 + "2023-07-17T01:18:56", + 20204 ], [ - "2022-03-26T22:36:41", - 1463 + "2023-07-23T01:13:49", + 22007 ], [ - "2022-03-27T20:21:20", - 1463 + "2023-07-24T12:19:15", + 22303 ], [ - "2022-03-30T01:54:07", - 1463 + "2023-07-25T10:15:45", + 22544 ], [ - "2022-03-31T19:42:14", - 1463 + "2023-07-26T21:02:52", + 23002 ], [ - "2022-04-01T15:16:50", - 1463 + "2023-08-03T19:41:39", + 24694 ], [ - "2022-04-02T01:51:52", - 1463 + "2023-08-06T01:17:07", + 25077 ], [ - "2022-04-04T03:28:40", - 1463 + "2023-08-07T14:09:58", + 25238 ], [ - "2022-04-06T04:08:13", - 1463 + "2023-08-09T21:27:06", + 25801 ], [ - "2022-04-07T01:53:15", - 1463 + "2023-08-10T00:37:45", + 25801 ], [ - "2022-04-09T01:50:38", - 1463 + "2023-08-11T00:59:39", + 26161 ], [ - "2022-04-10T14:05:52", - 1463 + "2023-08-14T01:07:10", + 26568 ], [ - "2022-04-11T17:59:19", - 1463 + "2023-08-20T10:19:30", + 27914 ], [ - "2022-04-18T19:21:22", - 1463 + "2023-08-21T01:02:38", + 27946 ], [ - "2022-04-22T17:35:15", - 1463 + "2023-08-22T05:14:32", + 28178 ], [ - "2022-04-23T08:58:43", - 1463 + "2023-08-23T01:09:12", + 28464 ], [ - "2022-04-24T16:22:52", - 1467 + "2023-08-24T08:23:46", + 28752 ], [ - "2022-04-26T12:16:27", - 1467 + "2023-08-25T01:09:33", + 28903 ], [ - "2022-04-28T02:47:35", - 1467 + "2023-08-26T15:48:29", + 29097 ], [ - "2022-04-29T02:28:21", - 1467 + "2023-09-01T01:00:53", + 30104 ], [ - "2022-04-30T15:55:37", - 1467 + "2023-09-02T06:53:40", + 30326 ], [ - "2022-05-02T02:22:46", - 1467 + "2023-09-03T17:23:10", + 30357 ], [ - "2022-05-03T15:10:47", - 1467 + "2023-09-04T01:14:42", + 30426 ], [ - "2022-05-04T02:21:38", - 1467 + "2023-09-06T09:29:05", + 31090 ], [ - "2022-05-05T02:29:20", - 1468 + "2023-09-08T01:01:21", + 31490 ], [ - "2022-05-06T01:57:12", - 1468 + "2023-09-17T18:42:04", + 33935 ], [ - "2022-05-07T15:43:47", - 1468 + "2023-09-18T07:24:56", + 34059 ], [ - "2022-05-08T09:22:07", - 1468 + "2023-09-19T01:04:12", + 34469 ], [ - "2022-05-11T18:46:39", - 1468 + "2023-09-20T15:31:08", + 34993 ], [ - "2022-05-14T10:19:10", - 1468 + "2023-09-21T01:10:04", + 35052 ], [ - "2022-05-15T18:35:14", - 1468 + "2023-09-22T16:54:09", + 35652 ], [ - "2022-05-17T02:16:25", - 1468 + "2023-09-24T01:09:47", + 35745 ], [ - "2022-05-20T02:14:29", - 1468 + "2023-09-26T01:03:52", + 36238 ], [ - "2022-05-21T01:55:42", - 1468 + "2023-09-28T01:03:35", + 36751 ], [ - "2022-05-22T02:10:42", - 1469 + "2023-10-02T10:16:34", + 37526 ], [ - "2022-05-24T11:16:46", - 1469 + "2023-10-11T01:02:27", + 39891 ], [ - "2022-05-25T02:18:32", - 1470 + "2023-10-12T07:12:13", + 40333 ], [ - "2022-05-27T02:15:18", - 1470 + "2023-10-15T18:35:06", + 41124 ], [ - "2022-05-28T02:22:34", - 1470 + "2023-10-16T01:12:02", + 41163 ], [ - "2022-05-30T02:21:03", - 1470 + "2023-10-17T01:19:48", + 41551 ], [ - "2022-05-31T19:33:59", - 1472 + "2023-10-18T09:54:25", + 42189 ], [ - "2022-06-01T02:31:42", - 1472 + "2023-10-19T05:13:12", + 42467 ], [ - "2022-06-02T02:27:43", - 1472 + "2023-10-20T21:26:06", + 43137 ], [ - "2022-06-03T01:55:13", - 1472 + "2023-10-21T07:20:54", + 43164 ], [ - "2022-06-08T20:16:03", - 1472 + "2023-10-22T21:40:43", + 43301 ], [ - "2022-06-09T13:28:16", - 1472 + "2023-10-24T01:08:57", + 43715 ], [ - "2022-06-10T02:21:45", - 1473 + "2023-10-25T03:48:19", + 44141 ], [ - "2022-06-11T02:20:43", - 1473 + "2023-10-28T17:16:00", + 45079 ], [ - "2022-06-12T13:23:39", - 1473 + "2023-10-29T10:04:35", + 45112 ], [ - "2022-06-14T02:30:00", - 1476 + "2023-10-30T01:06:23", + 45142 ], [ - "2022-06-15T20:20:02", - 1476 + "2023-10-31T01:15:37", + 45421 ], [ - "2022-06-17T02:17:40", - 1476 + "2023-11-01T12:58:49", + 46003 ], [ - "2022-06-19T07:40:43", - 1476 + "2023-11-03T22:34:05", + 46781 ], [ - "2022-06-22T23:37:06", - 1476 + "2023-11-04T17:14:00", + 46834 ], [ - "2022-06-23T09:06:53", - 1476 + "2023-11-05T18:48:33", + 46945 ], [ - "2022-06-24T02:16:36", - 1476 + "2023-11-06T22:30:41", + 47248 ], [ - "2022-06-25T02:27:04", - 1476 + "2023-11-07T22:42:00", + 47602 ], [ - "2022-06-26T16:16:05", - 1476 - ] - ], - "security": [ + "2023-11-08T22:22:32", + 47973 [ - "2022-09-10T23:57:56", - 910 + "2023-11-09T22:42:59", + 48422 ], [ - "2022-09-11T17:27:20", - 910 + "2023-11-10T22:40:09", + 48924 ], [ - "2022-09-12T17:31:29", - 950 - ], + "2023-11-11T22:37:19", + 49011 + ] + ], + "swift": [ [ - "2022-09-15T12:40:02", - 1016 + "2021-07-26T20:10:04", + 520 ], [ - "2022-09-16T01:11:41", - 1028 + "2021-07-28T01:29:28", + 521 ], [ - "2022-09-17T01:12:07", - 1082 + "2021-07-29T01:25:08", + 521 ], [ - "2022-09-19T22:06:52", - 1121 + "2021-07-30T02:45:47", + 522 ], [ - "2022-09-20T01:15:00", - 1133 + "2021-07-31T02:55:52", + 523 ], [ - "2022-09-21T18:40:27", - 1170 + "2021-08-01T01:34:33", + 525 ], [ - "2022-09-22T16:43:34", - 1182 + "2021-08-02T01:25:51", + 526 ], [ - "2022-09-25T01:14:04", - 1214 + "2021-08-03T01:34:04", + 526 ], [ - "2022-09-26T01:16:57", - 1214 + "2021-08-04T01:25:42", + 527 ], [ - "2022-09-27T20:49:14", - 1274 + "2021-08-05T13:16:40", + 528 ], [ - "2022-09-30T01:39:04", - 1332 + "2021-08-06T10:08:44", + 528 ], [ - "2022-10-01T17:39:25", - 1332 + "2021-08-07T01:23:20", + 546 ], [ - "2022-10-02T12:03:53", - 1332 + "2021-08-08T17:46:20", + 549 ], [ - "2022-10-03T08:03:32", - 1332 + "2021-08-09T12:57:30", + 552 ], [ - "2022-10-04T01:20:50", - 1334 + "2021-08-10T18:15:58", + 554 ], [ - "2022-10-05T01:21:27", - 1334 + "2021-08-11T19:45:43", + 558 ], [ - "2022-10-08T23:24:13", - 1334 + "2021-08-12T16:45:06", + 570 ], [ - "2022-10-10T01:35:49", - 1334 + "2021-08-13T01:26:41", + 576 ], [ - "2022-10-11T01:16:06", - 1334 + "2021-08-14T08:26:41", + 577 ], [ - "2022-10-12T19:05:48", - 1334 + "2021-08-15T21:37:16", + 580 ], [ - "2022-10-13T01:19:16", - 1334 + "2021-08-17T01:22:18", + 591 ], [ - "2022-10-14T01:30:33", - 1338 + "2021-08-18T01:24:15", + 592 ], [ - "2022-10-15T01:22:21", - 1338 + "2021-08-19T22:44:18", + 596 ], [ - "2022-10-16T21:43:31", - 1338 + "2021-08-20T16:03:59", + 608 ], [ - "2022-10-18T06:25:58", - 1341 + "2021-08-21T12:36:04", + 612 ], [ - "2022-10-22T11:41:20", - 1343 + "2021-08-22T01:21:13", + 613 ], [ - "2022-10-23T01:13:56", - 1343 + "2021-08-23T20:34:23", + 617 ], [ - "2022-10-24T20:11:55", - 1343 + "2021-08-24T21:32:49", + 627 ], [ - "2022-10-25T00:08:55", - 1343 + "2021-08-28T19:11:50", + 627 ], [ - "2022-10-26T01:07:23", - 1343 + "2021-08-29T12:02:14", + 636 ], [ - "2022-10-27T01:11:40", - 1345 + "2021-08-31T03:01:11", + 641 ], [ - "2022-10-29T01:02:52", - 1350 + "2021-09-01T01:34:30", + 643 ], [ - "2022-10-30T20:09:57", - 1350 + "2021-09-02T11:26:37", + 650 ], [ - "2022-10-31T22:27:03", - 1350 + "2021-09-03T01:30:31", + 654 ], [ - "2022-11-01T18:25:59", - 1350 + "2021-09-04T13:35:27", + 656 ], [ - "2022-11-03T01:11:15", - 1350 + "2021-09-06T01:30:54", + 663 ], [ - "2022-11-04T11:35:34", - 1351 + "2021-09-07T01:30:29", + 664 ], [ - "2022-11-05T07:41:24", - 1351 + "2021-09-12T12:45:46", + 666 ], [ - "2022-11-06T11:06:34", - 1351 + "2021-09-15T03:11:38", + 675 ], [ - "2022-11-07T19:40:53", - 1353 + "2021-09-18T22:10:09", + 678 ], [ - "2022-11-08T01:06:52", - 1353 + "2021-09-19T15:32:31", + 689 ], [ - "2022-11-11T17:10:50", - 1396 + "2021-09-20T01:35:53", + 691 ], [ - "2022-11-13T20:58:24", - 1396 + "2021-09-21T17:53:24", + 693 ], [ - "2022-11-14T23:48:23", - 0 + "2021-09-23T01:37:54", + 708 ], [ - "2022-11-15T07:38:22", - 1396 + "2021-09-24T03:14:34", + 710 ], [ - "2022-11-17T09:11:40", - 1418 + "2021-09-25T16:30:33", + 714 ], [ - "2022-11-19T22:14:34", - 1446 + "2021-09-26T12:23:03", + 722 ], [ - "2022-11-21T23:47:48", - 1446 + "2021-09-27T15:31:39", + 728 ], [ - "2022-11-22T01:14:59", - 1446 + "2021-09-29T01:26:48", + 730 ], [ - "2022-11-23T23:28:30", - 1481 + "2021-09-30T23:05:25", + 733 ], [ - "2022-11-26T01:00:47", - 1493 + "2021-10-01T16:05:31", + 737 ], [ - "2022-11-28T01:02:53", - 1493 + "2021-10-03T21:24:16", + 738 ], [ - "2022-12-07T07:19:55", - 1544 + "2021-10-05T01:32:48", + 746 ], [ - "2022-12-18T20:23:59", - 1786 + "2021-10-06T08:19:33", + 749 ], [ - "2022-12-19T18:26:59", - 1790 + "2021-10-07T19:01:06", + 753 ], [ - "2022-12-20T16:08:58", - 1791 + "2021-10-09T09:11:23", + 762 ], [ - "2022-12-21T23:23:24", - 1797 + "2021-10-10T16:38:57", + 765 ], [ - "2022-12-22T22:59:06", - 1807 + "2021-10-12T12:32:12", + 770 ], [ - "2022-12-24T20:01:35", - 1833 + "2021-10-13T01:33:36", + 771 ], [ - "2022-12-25T21:13:52", - 1836 + "2021-10-16T01:43:12", + 775 ], [ - "2022-12-26T19:30:31", - 1837 + "2021-10-17T12:27:08", + 779 ], [ - "2022-12-27T23:56:39", - 1863 + "2021-10-21T01:43:07", + 787 ], [ - "2022-12-29T20:55:31", - 1874 + "2021-10-24T15:47:49", + 793 ], [ - "2022-12-30T20:56:36", - 1879 + "2021-10-25T04:54:54", + 798 ], [ - "2022-12-31T08:10:29", - 1880 + "2021-10-26T19:08:21", + 804 ], [ - "2023-01-01T23:58:03", - 1881 + "2021-10-27T10:52:46", + 806 ], [ - "2023-01-02T23:32:43", - 1895 + "2021-10-29T05:01:38", + 808 ], [ - "2023-01-04T01:14:45", - 1913 + "2021-10-30T20:34:54", + 46 ], [ - "2023-01-05T00:40:47", - 1927 + "2021-10-31T18:17:07", + 877 ], [ - "2023-01-06T15:27:19", - 1978 + "2021-11-01T01:50:59", + 890 ], [ - "2023-01-07T23:05:20", - 1981 + "2021-11-02T11:56:56", + 911 ], [ - "2023-01-09T23:13:18", - 2011 + "2021-11-03T01:34:05", + 925 ], [ - "2023-01-10T22:19:22", - 2013 + "2021-11-04T22:06:35", + 948 ], [ - "2023-01-11T20:38:34", - 2025 + "2021-11-07T22:48:14", + 958 ], [ - "2023-01-12T19:14:41", - 2043 + "2021-11-08T16:38:12", + 975 ], [ - "2023-01-14T22:19:17", - 2065 + "2021-11-09T14:05:16", + 983 ], [ - "2023-01-15T05:54:49", - 2065 + "2021-11-11T23:43:38", + 992 ], [ - "2023-01-16T01:07:20", - 2065 + "2021-11-12T07:23:40", + 993 ], [ - "2023-01-18T01:10:41", - 2115 + "2021-11-13T03:49:42", + 995 ], [ - "2023-01-19T01:11:47", - 2126 + "2021-11-14T20:38:46", + 997 ], [ - "2023-01-20T01:07:56", - 2141 + "2021-11-15T21:50:19", + 1006 ], [ - "2023-01-21T01:11:30", - 2185 + "2021-11-17T13:49:27", + 1009 ], [ - "2023-01-22T23:52:22", - 2239 + "2021-11-18T12:57:03", + 1010 ], [ - "2023-01-24T01:13:09", - 2259 + "2021-11-19T01:41:21", + 1016 ], [ - "2023-01-25T01:09:15", - 2307 + "2021-11-21T18:45:36", + 1018 ], [ - "2023-01-27T01:08:47", - 2371 + "2021-11-22T21:51:21", + 1034 ], [ - "2023-01-28T23:00:24", - 2410 + "2021-11-24T01:32:35", + 1035 ], [ - "2023-01-29T11:12:53", - 2412 + "2021-11-25T01:36:17", + 1036 ], [ - "2023-01-31T09:09:55", - 2460 + "2021-11-26T01:28:24", + 1037 ], [ - "2023-02-04T01:08:11", - 2592 + "2021-11-27T01:29:49", + 1038 ], [ - "2023-02-05T19:16:16", - 2598 + "2021-11-29T19:53:22", + 1042 ], [ - "2023-02-06T01:06:21", - 2602 + "2021-12-01T21:53:10", + 1049 ], [ - "2023-02-07T01:06:44", - 2624 + "2021-12-02T22:38:42", + 1052 ], [ - "2023-02-08T19:33:17", - 2692 + "2021-12-03T07:25:47", + 1055 ], [ - "2023-02-16T01:07:41", - 2895 + "2021-12-04T10:20:40", + 1058 ], [ - "2023-02-17T20:09:45", - 3000 + "2021-12-05T01:37:50", + 1062 ], [ - "2023-02-19T16:48:31", - 3024 + "2021-12-06T01:34:54", + 1065 ], [ - "2023-02-22T01:09:24", - 3124 + "2021-12-07T19:17:16", + 1094 ], [ - "2023-02-25T18:11:10", - 3244 + "2021-12-08T11:50:21", + 1096 ], [ - "2023-02-26T01:20:44", - 3248 + "2021-12-09T08:24:35", + 1113 ], [ - "2023-02-27T01:05:31", - 3260 + "2021-12-11T10:08:27", + 1114 ], [ - "2023-02-28T01:12:07", - 3298 + "2021-12-12T01:37:49", + 1123 ], [ - "2023-03-01T01:11:53", - 3326 + "2021-12-14T01:36:23", + 1128 ], [ - "2023-03-02T01:11:37", - 3392 + "2021-12-15T01:38:21", + 1129 ], [ - "2023-03-04T19:06:27", - 3503 + "2021-12-16T01:40:15", + 1132 ], [ - "2023-03-05T21:22:00", - 3525 + "2021-12-17T01:41:18", + 1132 ], [ - "2023-03-06T18:58:36", - 3593 + "2021-12-18T12:07:04", + 1135 ], [ - "2023-03-07T22:04:26", - 3779 + "2021-12-21T13:52:15", + 1175 ], [ - "2023-03-11T18:55:05", - 4299 + "2021-12-23T13:53:28", + 1239 ], [ - "2023-03-13T01:08:17", - 4311 + "2021-12-26T01:43:59", + 1240 ], [ - "2023-03-16T01:14:43", - 4799 + "2021-12-29T20:36:25", + 1265 ], [ - "2023-03-25T20:41:27", - 6141 + "2021-12-31T01:38:18", + 1265 ], [ - "2023-03-26T18:35:58", - 6163 + "2022-01-01T01:37:58", + 1266 ], [ - "2023-03-27T19:04:51", - 6385 + "2022-01-03T22:58:05", + 1274 ], [ - "2023-03-28T14:20:40", - 6485 + "2022-01-09T14:02:41", + 1321 ], [ - "2023-03-29T01:10:08", - 6501 + "2022-01-11T01:36:44", + 1335 ], [ - "2023-03-30T01:06:23", - 6603 + "2022-01-12T01:35:34", + 1336 ], [ - "2023-04-01T16:38:16", - 6901 + "2022-01-13T09:24:45", + 1346 ], [ - "2023-04-02T18:16:54", - 6915 + "2022-01-14T01:38:08", + 1357 ], [ - "2023-04-03T20:17:29", - 7036 - ] - ], - "swift": [ + "2022-01-15T11:07:48", + 1362 + ], [ - "2021-07-26T20:10:04", - 520 + "2022-01-16T01:40:08", + 1364 ], [ - "2021-07-28T01:29:28", - 521 + "2022-01-17T12:08:17", + 1365 ], [ - "2021-07-29T01:25:08", - 521 + "2022-01-18T04:25:59", + 1366 ], [ - "2021-07-30T02:45:47", - 522 + "2022-01-22T22:01:45", + 1370 ], [ - "2021-07-31T02:55:52", - 523 + "2022-01-23T19:48:17", + 1387 ], [ - "2021-08-01T01:34:33", - 525 + "2022-01-24T20:09:52", + 1402 ], [ - "2021-08-02T01:25:51", - 526 + "2022-01-25T07:19:01", + 1402 ], [ - "2021-08-03T01:34:04", - 526 + "2022-01-26T01:45:09", + 1407 ], [ - "2021-08-04T01:25:42", - 527 + "2022-01-28T01:33:25", + 1409 ], [ - "2021-08-05T13:16:40", - 528 + "2022-01-29T20:09:19", + 1415 ], [ - "2021-08-06T10:08:44", - 528 + "2022-01-30T17:15:32", + 1423 ], [ - "2021-08-07T01:23:20", - 546 + "2022-01-31T13:01:19", + 1434 ], [ - "2021-08-08T17:46:20", - 549 + "2022-02-01T07:00:15", + 1438 ], [ - "2021-08-09T12:57:30", - 552 + "2022-02-02T23:09:44", + 1441 ], [ - "2021-08-10T18:15:58", - 554 + "2022-02-03T10:37:04", + 1462 ], [ - "2021-08-11T19:45:43", - 558 + "2022-02-05T23:23:53", + 1465 ], [ - "2021-08-12T16:45:06", - 570 + "2022-02-06T17:27:14", + 1468 ], [ - "2021-08-13T01:26:41", - 576 + "2022-02-07T07:41:03", + 1469 ], [ - "2021-08-14T08:26:41", - 577 + "2022-02-09T12:02:49", + 1476 ], [ - "2021-08-15T21:37:16", - 580 + "2022-02-10T01:38:28", + 1476 ], [ - "2021-08-17T01:22:18", - 591 + "2022-02-13T17:21:12", + 1477 ], [ - "2021-08-18T01:24:15", - 592 + "2022-02-14T01:37:05", + 1481 ], [ - "2021-08-19T22:44:18", - 596 + "2022-02-16T01:41:49", + 1483 ], [ - "2021-08-20T16:03:59", - 608 + "2022-02-18T21:34:22", + 1484 ], [ - "2021-08-21T12:36:04", - 612 + "2022-02-20T20:39:40", + 1493 ], [ - "2021-08-22T01:21:13", - 613 + "2022-02-21T21:26:40", + 1495 ], [ - "2021-08-23T20:34:23", - 617 + "2022-02-25T15:39:13", + 1496 ], [ - "2021-08-24T21:32:49", - 627 + "2022-02-27T01:44:50", + 1496 ], [ - "2021-08-28T19:11:50", - 627 + "2022-02-28T01:51:49", + 1496 ], [ - "2021-08-29T12:02:14", - 636 + "2022-03-02T23:33:51", + 1496 ], [ - "2021-08-31T03:01:11", - 641 + "2022-03-03T01:50:14", + 1496 ], [ - "2021-09-01T01:34:30", - 643 + "2022-03-04T05:18:37", + 1496 ], [ - "2021-09-02T11:26:37", - 650 + "2022-03-06T01:44:30", + 1496 ], [ - "2021-09-03T01:30:31", - 654 + "2022-03-08T11:13:31", + 1496 ], [ - "2021-09-04T13:35:27", - 656 + "2022-03-09T07:35:11", + 1500 ], [ - "2021-09-06T01:30:54", - 663 + "2022-03-10T01:51:49", + 1500 ], [ - "2021-09-07T01:30:29", - 664 + "2022-03-11T01:51:30", + 1501 ], [ - "2021-09-12T12:45:46", - 666 + "2022-03-12T01:42:04", + 1501 ], [ - "2021-09-15T03:11:38", - 675 + "2022-03-13T19:08:51", + 1501 ], [ - "2021-09-18T22:10:09", - 678 + "2022-03-14T15:10:17", + 1501 ], [ - "2021-09-19T15:32:31", - 689 + "2022-03-15T01:49:51", + 1501 ], [ - "2021-09-20T01:35:53", - 691 + "2022-03-16T01:45:07", + 1501 ], [ - "2021-09-21T17:53:24", - 693 + "2022-03-17T12:36:48", + 1501 ], [ - "2021-09-23T01:37:54", - 708 + "2022-03-19T16:59:24", + 1501 ], [ - "2021-09-24T03:14:34", - 710 + "2022-03-20T11:59:05", + 1501 ], [ - "2021-09-25T16:30:33", - 714 + "2022-03-21T01:44:24", + 1501 ], [ - "2021-09-26T12:23:03", - 722 + "2022-03-22T01:55:14", + 1501 ], [ - "2021-09-27T15:31:39", - 728 + "2022-03-23T01:55:28", + 1501 ], [ - "2021-09-29T01:26:48", - 730 + "2022-03-24T01:48:26", + 1501 ], [ - "2021-09-30T23:05:25", - 733 + "2022-03-26T22:36:41", + 1501 ], [ - "2021-10-01T16:05:31", - 737 + "2022-03-27T20:21:20", + 1501 ], [ - "2021-10-03T21:24:16", - 738 + "2022-03-30T01:54:07", + 1501 ], [ - "2021-10-05T01:32:48", - 746 + "2022-03-31T19:42:14", + 1501 ], [ - "2021-10-06T08:19:33", - 749 + "2022-04-01T15:16:50", + 1501 ], [ - "2021-10-07T19:01:06", - 753 + "2022-04-02T01:51:52", + 1501 ], [ - "2021-10-09T09:11:23", - 762 + "2022-04-04T03:28:40", + 1501 ], [ - "2021-10-10T16:38:57", - 765 + "2022-04-06T04:08:13", + 1501 ], [ - "2021-10-12T12:32:12", - 770 + "2022-04-07T01:53:15", + 1508 ], [ - "2021-10-13T01:33:36", - 771 + "2022-04-09T01:50:38", + 1508 ], [ - "2021-10-16T01:43:12", - 775 + "2022-04-10T14:05:52", + 1516 ], [ - "2021-10-17T12:27:08", - 779 + "2022-04-11T17:59:19", + 1516 ], [ - "2021-10-21T01:43:07", - 787 + "2022-04-18T19:21:22", + 1516 ], [ - "2021-10-24T15:47:49", - 793 + "2022-04-22T17:35:15", + 1516 ], [ - "2021-10-25T04:54:54", - 798 + "2022-04-23T08:58:43", + 1516 ], [ - "2021-10-26T19:08:21", - 804 + "2022-04-24T16:22:52", + 1520 ], [ - "2021-10-27T10:52:46", - 806 + "2022-04-26T12:16:27", + 1520 ], [ - "2021-10-29T05:01:38", - 808 + "2022-04-28T02:47:35", + 1520 ], [ - "2021-10-30T20:34:54", - 46 + "2022-04-29T02:28:21", + 1520 ], [ - "2021-10-31T18:17:07", - 877 + "2022-04-30T15:55:37", + 1520 ], [ - "2021-11-01T01:50:59", - 890 + "2022-05-02T02:22:46", + 1520 ], [ - "2021-11-02T11:56:56", - 911 + "2022-05-03T15:10:47", + 1520 ], [ - "2021-11-03T01:34:05", - 925 + "2022-05-04T02:21:38", + 1520 ], [ - "2021-11-04T22:06:35", - 948 + "2022-05-05T02:29:20", + 1520 ], [ - "2021-11-07T22:48:14", - 958 + "2022-05-06T01:57:12", + 1520 ], [ - "2021-11-08T16:38:12", - 975 + "2022-05-07T15:43:47", + 1520 ], [ - "2021-11-09T14:05:16", - 983 + "2022-05-08T09:22:07", + 1520 ], [ - "2021-11-11T23:43:38", - 992 + "2022-05-11T18:46:39", + 1520 ], [ - "2021-11-12T07:23:40", - 993 + "2022-05-14T10:19:10", + 1520 ], [ - "2021-11-13T03:49:42", - 995 + "2022-05-15T18:35:14", + 1520 ], [ - "2021-11-14T20:38:46", - 997 + "2022-05-17T02:16:25", + 1520 ], [ - "2021-11-15T21:50:19", - 1006 + "2022-05-20T02:14:29", + 1520 ], [ - "2021-11-17T13:49:27", - 1009 + "2022-05-21T01:55:42", + 1521 ], [ - "2021-11-18T12:57:03", - 1010 + "2022-05-22T02:10:42", + 1522 ], [ - "2021-11-19T01:41:21", - 1016 + "2022-05-24T11:16:46", + 1523 ], [ - "2021-11-21T18:45:36", - 1018 + "2022-05-25T02:18:32", + 1523 ], [ - "2021-11-22T21:51:21", - 1034 + "2022-05-27T02:15:18", + 1545 ], [ - "2021-11-24T01:32:35", - 1035 + "2022-05-28T02:22:34", + 1553 ], [ - "2021-11-25T01:36:17", - 1036 + "2022-05-30T02:21:03", + 1553 ], [ - "2021-11-26T01:28:24", - 1037 + "2022-05-31T19:33:59", + 1583 ], [ - "2021-11-27T01:29:49", - 1038 + "2022-06-01T02:31:42", + 1583 ], [ - "2021-11-29T19:53:22", - 1042 + "2022-06-02T02:27:43", + 1599 ], [ - "2021-12-01T21:53:10", - 1049 + "2022-06-03T01:55:13", + 1623 ], [ - "2021-12-02T22:38:42", - 1052 + "2022-06-08T20:16:03", + 1737 ], [ - "2021-12-03T07:25:47", - 1055 + "2022-06-09T13:28:16", + 1746 ], [ - "2021-12-04T10:20:40", - 1058 + "2022-06-10T02:21:45", + 1746 ], [ - "2021-12-05T01:37:50", - 1062 + "2022-06-11T02:20:43", + 1756 ], [ - "2021-12-06T01:34:54", - 1065 + "2022-06-12T13:23:39", + 1756 ], [ - "2021-12-07T19:17:16", - 1094 + "2022-06-14T02:30:00", + 1761 ], [ - "2021-12-08T11:50:21", - 1096 + "2022-06-15T20:20:02", + 1768 ], [ - "2021-12-09T08:24:35", - 1113 + "2022-06-17T02:17:40", + 1787 ], [ - "2021-12-11T10:08:27", - 1114 + "2022-06-19T07:40:43", + 1792 ], [ - "2021-12-12T01:37:49", - 1123 + "2022-06-22T23:37:06", + 1809 ], [ - "2021-12-14T01:36:23", - 1128 + "2022-06-23T09:06:53", + 1811 ], [ - "2021-12-15T01:38:21", - 1129 + "2022-06-24T02:16:36", + 1814 ], [ - "2021-12-16T01:40:15", - 1132 + "2022-06-25T02:27:04", + 1817 ], [ - "2021-12-17T01:41:18", - 1132 + "2022-06-26T16:16:05", + 1817 ], [ - "2021-12-18T12:07:04", - 1135 + "2022-09-10T23:57:56", + 2390 ], [ - "2021-12-21T13:52:15", - 1175 + "2022-09-11T17:27:20", + 2390 ], [ - "2021-12-23T13:53:28", - 1239 + "2022-09-12T17:31:29", + 2390 ], [ - "2021-12-26T01:43:59", - 1240 + "2022-09-15T12:40:02", + 2399 ], [ - "2021-12-29T20:36:25", - 1265 + "2022-09-16T01:11:41", + 2399 ], [ - "2021-12-31T01:38:18", - 1265 + "2022-09-17T01:12:07", + 2407 ], [ - "2022-01-01T01:37:58", - 1266 + "2022-09-19T22:06:52", + 2423 ], [ - "2022-01-03T22:58:05", - 1274 + "2022-09-20T01:15:00", + 2423 ], [ - "2022-01-09T14:02:41", - 1321 + "2022-09-21T18:40:27", + 2440 ], [ - "2022-01-11T01:36:44", - 1335 + "2022-09-22T16:43:34", + 2440 ], [ - "2022-01-12T01:35:34", - 1336 + "2022-09-25T01:14:04", + 2442 ], [ - "2022-01-13T09:24:45", - 1346 + "2022-09-26T01:16:57", + 2442 ], [ - "2022-01-14T01:38:08", - 1357 + "2022-09-27T20:49:14", + 2447 ], [ - "2022-01-15T11:07:48", - 1362 + "2022-09-30T01:39:04", + 2467 ], [ - "2022-01-16T01:40:08", - 1364 + "2022-10-01T17:39:25", + 2482 ], [ - "2022-01-17T12:08:17", - 1365 + "2022-10-02T12:03:53", + 2482 ], [ - "2022-01-18T04:25:59", - 1366 + "2022-10-03T08:03:32", + 2482 ], [ - "2022-01-22T22:01:45", - 1370 + "2022-10-04T01:20:50", + 2487 ], [ - "2022-01-23T19:48:17", - 1387 + "2022-10-05T01:21:27", + 2516 ], [ - "2022-01-24T20:09:52", - 1402 + "2022-10-08T23:24:13", + 2540 ], [ - "2022-01-25T07:19:01", - 1402 + "2022-10-10T01:35:49", + 2540 ], [ - "2022-01-26T01:45:09", - 1407 + "2022-10-11T01:16:06", + 2551 ], [ - "2022-01-28T01:33:25", - 1409 + "2022-10-12T19:05:48", + 2574 ], [ - "2022-01-29T20:09:19", - 1415 + "2022-10-13T01:19:16", + 2574 ], [ - "2022-01-30T17:15:32", - 1423 + "2022-10-14T01:30:33", + 2591 ], [ - "2022-01-31T13:01:19", - 1434 + "2022-10-15T01:22:21", + 2591 ], [ - "2022-02-01T07:00:15", - 1438 + "2022-10-16T21:43:31", + 2591 ], [ - "2022-02-02T23:09:44", - 1441 + "2022-10-18T06:25:58", + 2596 ], [ - "2022-02-03T10:37:04", - 1462 + "2022-10-22T11:41:20", + 2627 ], [ - "2022-02-05T23:23:53", - 1465 + "2022-10-23T01:13:56", + 2627 ], [ - "2022-02-06T17:27:14", - 1468 + "2022-10-24T20:11:55", + 2627 ], [ - "2022-02-07T07:41:03", - 1469 + "2022-10-25T00:08:55", + 2627 ], [ - "2022-02-09T12:02:49", - 1476 + "2022-10-26T01:07:23", + 2627 ], [ - "2022-02-10T01:38:28", - 1476 + "2022-10-27T01:11:40", + 2627 ], [ - "2022-02-13T17:21:12", - 1477 + "2022-10-29T01:02:52", + 2652 ], [ - "2022-02-14T01:37:05", - 1481 + "2022-10-30T20:09:57", + 2652 ], [ - "2022-02-16T01:41:49", - 1483 + "2022-10-31T22:27:03", + 2663 ], [ - "2022-02-18T21:34:22", - 1484 + "2022-11-01T18:25:59", + 2687 ], [ - "2022-02-20T20:39:40", - 1493 + "2022-11-03T01:11:15", + 2696 ], [ - "2022-02-21T21:26:40", - 1495 + "2022-11-04T11:35:34", + 2703 ], [ - "2022-02-25T15:39:13", - 1496 + "2022-11-05T07:41:24", + 2705 ], [ - "2022-02-27T01:44:50", - 1496 + "2022-11-06T11:06:34", + 2705 ], [ - "2022-02-28T01:51:49", - 1496 + "2022-11-07T19:40:53", + 2706 ], [ - "2022-03-02T23:33:51", - 1496 + "2022-11-08T01:06:52", + 2706 ], [ - "2022-03-03T01:50:14", - 1496 + "2022-11-11T17:10:50", + 2722 ], [ - "2022-03-04T05:18:37", - 1496 + "2022-11-13T20:58:24", + 2723 ], [ - "2022-03-06T01:44:30", - 1496 + "2022-11-14T23:48:23", + 0 ], [ - "2022-03-08T11:13:31", - 1496 + "2022-11-15T07:38:22", + 2732 ], [ - "2022-03-09T07:35:11", - 1500 + "2022-11-17T09:11:40", + 2749 ], [ - "2022-03-10T01:51:49", - 1500 + "2022-11-19T22:14:34", + 2752 ], [ - "2022-03-11T01:51:30", - 1501 + "2022-11-21T23:47:48", + 2756 ], [ - "2022-03-12T01:42:04", - 1501 + "2022-11-22T01:14:59", + 2756 ], [ - "2022-03-13T19:08:51", - 1501 + "2022-11-23T23:28:30", + 2761 ], [ - "2022-03-14T15:10:17", - 1501 + "2022-11-26T01:00:47", + 2762 ], [ - "2022-03-15T01:49:51", - 1501 + "2022-11-28T01:02:53", + 2762 ], [ - "2022-03-16T01:45:07", - 1501 + "2022-12-07T07:19:55", + 2792 ], [ - "2022-03-17T12:36:48", - 1501 + "2022-12-18T20:23:59", + 2884 ], [ - "2022-03-19T16:59:24", - 1501 + "2022-12-19T18:26:59", + 2907 ], [ - "2022-03-20T11:59:05", - 1501 + "2022-12-20T16:08:58", + 2920 ], [ - "2022-03-21T01:44:24", - 1501 + "2022-12-21T23:23:24", + 2994 ], [ - "2022-03-22T01:55:14", - 1501 + "2022-12-22T22:59:06", + 2995 ], [ - "2022-03-23T01:55:28", - 1501 + "2022-12-24T20:01:35", + 3008 ], [ - "2022-03-24T01:48:26", - 1501 + "2022-12-25T21:13:52", + 3008 ], [ - "2022-03-26T22:36:41", - 1501 + "2022-12-26T19:30:31", + 3008 ], [ - "2022-03-27T20:21:20", - 1501 + "2022-12-27T23:56:39", + 3008 ], [ - "2022-03-30T01:54:07", - 1501 + "2022-12-29T20:55:31", + 3008 ], [ - "2022-03-31T19:42:14", - 1501 + "2022-12-30T20:56:36", + 3008 ], [ - "2022-04-01T15:16:50", - 1501 + "2022-12-31T08:10:29", + 3008 ], [ - "2022-04-02T01:51:52", - 1501 + "2023-01-01T23:58:03", + 3008 ], [ - "2022-04-04T03:28:40", - 1501 + "2023-01-02T23:32:43", + 3008 ], [ - "2022-04-06T04:08:13", - 1501 + "2023-01-04T01:14:45", + 3026 ], [ - "2022-04-07T01:53:15", - 1508 + "2023-01-05T00:40:47", + 3031 ], [ - "2022-04-09T01:50:38", - 1508 + "2023-01-06T15:27:19", + 3068 ], [ - "2022-04-10T14:05:52", - 1516 + "2023-01-07T23:05:20", + 3078 ], [ - "2022-04-11T17:59:19", - 1516 + "2023-01-09T23:13:18", + 3082 ], [ - "2022-04-18T19:21:22", - 1516 + "2023-01-10T22:19:22", + 3086 ], [ - "2022-04-22T17:35:15", - 1516 + "2023-01-11T20:38:34", + 3090 ], [ - "2022-04-23T08:58:43", - 1516 + "2023-01-12T19:14:41", + 3090 ], [ - "2022-04-24T16:22:52", - 1520 + "2023-01-14T22:19:17", + 3094 ], [ - "2022-04-26T12:16:27", - 1520 + "2023-01-15T05:54:49", + 3094 ], [ - "2022-04-28T02:47:35", - 1520 + "2023-01-16T01:07:20", + 3094 ], [ - "2022-04-29T02:28:21", - 1520 + "2023-01-18T01:10:41", + 3105 ], [ - "2022-04-30T15:55:37", - 1520 + "2023-01-19T01:11:47", + 3112 ], [ - "2022-05-02T02:22:46", - 1520 + "2023-01-20T01:07:56", + 3115 ], [ - "2022-05-03T15:10:47", - 1520 + "2023-01-21T01:11:30", + 3119 ], [ - "2022-05-04T02:21:38", - 1520 + "2023-01-22T23:52:22", + 3119 ], [ - "2022-05-05T02:29:20", - 1520 + "2023-01-24T01:13:09", + 3120 ], [ - "2022-05-06T01:57:12", - 1520 + "2023-01-25T01:09:15", + 3123 ], [ - "2022-05-07T15:43:47", - 1520 + "2023-01-27T01:08:47", + 3127 ], [ - "2022-05-08T09:22:07", - 1520 + "2023-01-28T23:00:24", + 3128 ], [ - "2022-05-11T18:46:39", - 1520 + "2023-01-29T11:12:53", + 3128 ], [ - "2022-05-14T10:19:10", - 1520 + "2023-01-31T09:09:55", + 3128 ], [ - "2022-05-15T18:35:14", - 1520 + "2023-02-04T01:08:11", + 3133 ], [ - "2022-05-17T02:16:25", - 1520 + "2023-02-05T19:16:16", + 3133 ], [ - "2022-05-20T02:14:29", - 1520 + "2023-02-06T01:06:21", + 3133 ], [ - "2022-05-21T01:55:42", - 1521 + "2023-02-07T01:06:44", + 3133 ], [ - "2022-05-22T02:10:42", - 1522 + "2023-02-08T19:33:17", + 3133 ], [ - "2022-05-24T11:16:46", - 1523 + "2023-02-16T01:07:41", + 3161 ], [ - "2022-05-25T02:18:32", - 1523 + "2023-02-17T20:09:45", + 3166 ], [ - "2022-05-27T02:15:18", - 1545 + "2023-02-19T16:48:31", + 3172 ], [ - "2022-05-28T02:22:34", - 1553 + "2023-02-22T01:09:24", + 3178 ], [ - "2022-05-30T02:21:03", - 1553 + "2023-02-25T18:11:10", + 3184 ], [ - "2022-05-31T19:33:59", - 1583 + "2023-02-26T01:20:44", + 3188 ], [ - "2022-06-01T02:31:42", - 1583 + "2023-02-27T01:05:31", + 3192 ], [ - "2022-06-02T02:27:43", - 1599 + "2023-02-28T01:12:07", + 3196 ], [ - "2022-06-03T01:55:13", - 1623 + "2023-03-01T01:11:53", + 3199 ], [ - "2022-06-08T20:16:03", - 1737 + "2023-03-02T01:11:37", + 3204 ], [ - "2022-06-09T13:28:16", - 1746 + "2023-03-04T19:06:27", + 3216 ], [ - "2022-06-10T02:21:45", - 1746 + "2023-03-05T21:22:00", + 3236 ], [ - "2022-06-11T02:20:43", - 1756 + "2023-03-06T18:58:36", + 3242 ], [ - "2022-06-12T13:23:39", - 1756 + "2023-03-07T22:04:26", + 3255 ], [ - "2022-06-14T02:30:00", - 1761 + "2023-03-11T18:55:05", + 3294 ], [ - "2022-06-15T20:20:02", - 1768 + "2023-03-13T01:08:17", + 3296 ], [ - "2022-06-17T02:17:40", - 1787 + "2023-03-16T01:14:43", + 3318 ], [ - "2022-06-19T07:40:43", - 1792 + "2023-03-25T20:41:27", + 3366 ], [ - "2022-06-22T23:37:06", - 1809 + "2023-03-26T18:35:58", + 3384 ], [ - "2022-06-23T09:06:53", - 1811 + "2023-03-27T19:04:51", + 3391 ], [ - "2022-06-24T02:16:36", - 1814 + "2023-03-28T14:20:40", + 3407 ], [ - "2022-06-25T02:27:04", - 1817 + "2023-03-29T01:10:08", + 3409 ], [ - "2022-06-26T16:16:05", - 1817 + "2023-03-30T01:06:23", + 3416 ], [ - "2022-09-10T23:57:56", - 2390 + "2023-04-01T16:38:16", + 3441 ], [ - "2022-09-11T17:27:20", - 2390 + "2023-04-02T18:16:54", + 3453 ], [ - "2022-09-12T17:31:29", - 2390 + "2023-04-03T20:17:29", + 3468 ], [ - "2022-09-15T12:40:02", - 2399 + "2023-04-04T01:00:44", + 3471 ], [ - "2022-09-16T01:11:41", - 2399 + "2023-04-05T01:02:44", + 3476 ], [ - "2022-09-17T01:12:07", - 2407 + "2023-04-06T01:02:10", + 3481 ], [ - "2022-09-19T22:06:52", - 2423 + "2023-04-10T19:39:37", + 3499 ], [ - "2022-09-20T01:15:00", - 2423 + "2023-04-11T18:04:56", + 3511 ], [ - "2022-09-21T18:40:27", - 2440 + "2023-04-12T19:58:02", + 3521 ], [ - "2022-09-22T16:43:34", - 2440 + "2023-04-15T13:28:28", + 3530 ], [ - "2022-09-25T01:14:04", - 2442 + "2023-04-16T20:56:34", + 3546 ], [ - "2022-09-26T01:16:57", - 2442 + "2023-04-20T09:00:09", + 3565 ], [ - "2022-09-27T20:49:14", - 2447 + "2023-04-22T18:08:18", + 3588 ], [ - "2022-09-30T01:39:04", - 2467 + "2023-04-23T08:46:30", + 3596 ], [ - "2022-10-01T17:39:25", - 2482 + "2023-04-24T10:35:05", + 3603 ], [ - "2022-10-02T12:03:53", - 2482 + "2023-04-25T13:22:38", + 3610 ], [ - "2022-10-03T08:03:32", - 2482 + "2023-04-26T01:05:21", + 3612 ], [ - "2022-10-04T01:20:50", - 2487 + "2023-04-29T09:13:18", + 3631 ], [ - "2022-10-05T01:21:27", - 2516 + "2023-04-30T23:37:21", + 3637 ], [ - "2022-10-08T23:24:13", - 2540 + "2023-05-01T12:30:40", + 3643 ], [ - "2022-10-10T01:35:49", - 2540 + "2023-05-02T01:03:19", + 3648 ], [ - "2022-10-11T01:16:06", - 2551 + "2023-05-12T22:08:47", + 3684 ], [ - "2022-10-12T19:05:48", - 2574 + "2023-05-13T20:23:06", + 3698 ], [ - "2022-10-13T01:19:16", - 2574 + "2023-05-14T19:54:23", + 3710 ], [ - "2022-10-14T01:30:33", - 2591 + "2023-05-17T23:06:02", + 3724 ], [ - "2022-10-15T01:22:21", - 2591 + "2023-05-18T18:05:13", + 3734 ], [ - "2022-10-16T21:43:31", - 2591 + "2023-05-19T18:27:46", + 3747 ], [ - "2022-10-18T06:25:58", - 2596 + "2023-05-20T06:58:27", + 3750 ], [ - "2022-10-22T11:41:20", - 2627 + "2023-05-21T17:54:05", + 3750 ], [ - "2022-10-23T01:13:56", - 2627 + "2023-05-22T19:05:24", + 3752 ], [ - "2022-10-24T20:11:55", - 2627 + "2023-05-23T01:07:57", + 3754 ], [ - "2022-10-25T00:08:55", - 2627 + "2023-05-24T01:14:32", + 3770 ], [ - "2022-10-26T01:07:23", - 2627 + "2023-05-26T01:11:00", + 3778 ], [ - "2022-10-27T01:11:40", - 2627 + "2023-05-27T17:04:12", + 3797 ], [ - "2022-10-29T01:02:52", - 2652 + "2023-05-28T17:03:24", + 3801 ], [ - "2022-10-30T20:09:57", - 2652 + "2023-05-29T11:13:08", + 3804 ], [ - "2022-10-31T22:27:03", - 2663 + "2023-05-31T23:48:39", + 3831 ], [ - "2022-11-01T18:25:59", - 2687 + "2023-06-01T01:25:18", + 3834 ], [ - "2022-11-03T01:11:15", - 2696 + "2023-06-02T01:10:33", + 3841 ], [ - "2022-11-04T11:35:34", - 2703 + "2023-06-03T09:59:50", + 3851 ], [ - "2022-11-05T07:41:24", - 2705 + "2023-06-04T01:13:43", + 3853 ], [ - "2022-11-06T11:06:34", - 2705 + "2023-06-05T01:08:28", + 3855 ], [ - "2022-11-07T19:40:53", - 2706 + "2023-06-07T01:10:00", + 3867 ], [ - "2022-11-08T01:06:52", - 2706 + "2023-06-08T05:19:18", + 3879 ], [ - "2022-11-11T17:10:50", - 2722 + "2023-06-11T18:48:09", + 3900 ], [ - "2022-11-13T20:58:24", - 2723 + "2023-06-12T01:16:15", + 3903 ], [ - "2022-11-14T23:48:23", - 0 + "2023-06-13T01:11:33", + 3911 ], [ - "2022-11-15T07:38:22", - 2732 + "2023-06-17T01:09:24", + 3962 ], [ - "2022-11-17T09:11:40", - 2749 + "2023-06-21T05:26:13", + 3980 ], [ - "2022-11-19T22:14:34", - 2752 + "2023-06-23T01:12:21", + 4003 ], [ - "2022-11-21T23:47:48", - 2756 + "2023-06-24T01:13:03", + 4006 ], [ - "2022-11-22T01:14:59", - 2756 + "2023-06-25T01:19:08", + 4008 ], [ - "2022-11-23T23:28:30", - 2761 + "2023-07-02T01:17:57", + 4066 ], [ - "2022-11-26T01:00:47", - 2762 + "2023-07-05T04:19:03", + 4077 ], [ - "2022-11-28T01:02:53", - 2762 + "2023-07-06T01:13:59", + 4086 ], [ - "2022-12-07T07:19:55", - 2792 + "2023-07-07T01:22:59", + 4089 ], [ - "2022-12-18T20:23:59", - 2884 + "2023-07-09T01:17:28", + 4094 ], [ - "2022-12-19T18:26:59", - 2907 + "2023-07-10T12:35:57", + 4104 ], [ - "2022-12-20T16:08:58", - 2920 + "2023-07-11T18:04:48", + 4111 ], [ - "2022-12-21T23:23:24", - 2994 + "2023-07-13T01:16:23", + 4128 ], [ - "2022-12-22T22:59:06", - 2995 + "2023-07-14T18:55:34", + 4149 ], [ - "2022-12-24T20:01:35", - 3008 + "2023-07-15T14:49:24", + 4153 ], [ - "2022-12-25T21:13:52", - 3008 + "2023-07-17T01:18:56", + 4155 ], [ - "2022-12-26T19:30:31", - 3008 + "2023-07-23T01:13:49", + 4179 ], [ - "2022-12-27T23:56:39", - 3008 + "2023-07-24T12:19:15", + 4179 ], [ - "2022-12-29T20:55:31", - 3008 + "2023-07-25T10:15:45", + 4183 ], [ - "2022-12-30T20:56:36", - 3008 + "2023-07-26T21:02:52", + 4186 ], [ - "2022-12-31T08:10:29", - 3008 + "2023-08-03T19:41:39", + 4223 ], [ - "2023-01-01T23:58:03", - 3008 + "2023-08-06T01:17:07", + 4225 ], [ - "2023-01-02T23:32:43", - 3008 + "2023-08-07T14:09:58", + 4225 ], [ - "2023-01-04T01:14:45", - 3026 + "2023-08-09T21:27:06", + 4226 ], [ - "2023-01-05T00:40:47", - 3031 + "2023-08-10T00:37:45", + 4226 ], [ - "2023-01-06T15:27:19", - 3068 + "2023-08-11T00:59:39", + 4233 ], [ - "2023-01-07T23:05:20", - 3078 + "2023-08-14T01:07:10", + 4236 ], [ - "2023-01-09T23:13:18", - 3082 + "2023-08-20T10:19:30", + 4239 ], [ - "2023-01-10T22:19:22", - 3086 + "2023-08-21T01:02:38", + 4239 ], [ - "2023-01-11T20:38:34", - 3090 + "2023-08-22T05:14:32", + 4241 ], [ - "2023-01-12T19:14:41", - 3090 + "2023-08-23T01:09:12", + 4241 ], [ - "2023-01-14T22:19:17", - 3094 + "2023-08-24T08:23:46", + 4241 ], [ - "2023-01-15T05:54:49", - 3094 + "2023-08-25T01:09:33", + 4241 ], [ - "2023-01-16T01:07:20", - 3094 + "2023-08-26T15:48:29", + 4243 ], [ - "2023-01-18T01:10:41", - 3105 + "2023-09-01T01:00:53", + 4260 ], [ - "2023-01-19T01:11:47", - 3112 + "2023-09-02T06:53:40", + 4260 ], [ - "2023-01-20T01:07:56", - 3115 + "2023-09-03T17:23:10", + 4260 ], [ - "2023-01-21T01:11:30", - 3119 + "2023-09-04T01:14:42", + 4260 ], [ - "2023-01-22T23:52:22", - 3119 + "2023-09-06T09:29:05", + 4260 ], [ - "2023-01-24T01:13:09", - 3120 + "2023-09-08T01:01:21", + 4262 ], [ - "2023-01-25T01:09:15", - 3123 + "2023-09-17T18:42:04", + 4289 ], [ - "2023-01-27T01:08:47", - 3127 + "2023-09-18T07:24:56", + 4290 ], [ - "2023-01-28T23:00:24", - 3128 + "2023-09-19T01:04:12", + 4292 ], [ - "2023-01-29T11:12:53", - 3128 + "2023-09-20T15:31:08", + 4299 ], [ - "2023-01-31T09:09:55", - 3128 + "2023-09-21T01:10:04", + 4299 ], [ - "2023-02-04T01:08:11", - 3133 + "2023-09-22T16:54:09", + 4308 ], [ - "2023-02-05T19:16:16", - 3133 + "2023-09-24T01:09:47", + 4315 ], [ - "2023-02-06T01:06:21", - 3133 + "2023-09-26T01:03:52", + 4316 ], [ - "2023-02-07T01:06:44", - 3133 + "2023-09-28T01:03:35", + 4322 ], [ - "2023-02-08T19:33:17", - 3133 + "2023-10-02T10:16:34", + 4330 ], [ - "2023-02-16T01:07:41", - 3161 + "2023-10-11T01:02:27", + 4363 ], [ - "2023-02-17T20:09:45", - 3166 + "2023-10-12T07:12:13", + 4364 ], [ - "2023-02-19T16:48:31", - 3172 + "2023-10-15T18:35:06", + 4368 ], [ - "2023-02-22T01:09:24", - 3178 + "2023-10-16T01:12:02", + 4368 ], [ - "2023-02-25T18:11:10", - 3184 + "2023-10-17T01:19:48", + 4377 ], [ - "2023-02-26T01:20:44", - 3188 + "2023-10-18T09:54:25", + 4389 ], [ - "2023-02-27T01:05:31", - 3192 + "2023-10-19T05:13:12", + 4392 ], [ - "2023-02-28T01:12:07", - 3196 + "2023-10-20T21:26:06", + 4397 ], [ - "2023-03-01T01:11:53", - 3199 + "2023-10-21T07:20:54", + 4397 ], [ - "2023-03-02T01:11:37", - 3204 + "2023-10-22T21:40:43", + 4397 ], [ - "2023-03-04T19:06:27", - 3216 + "2023-10-24T01:08:57", + 4399 ], [ - "2023-03-05T21:22:00", - 3236 + "2023-10-25T03:48:19", + 4399 ], [ - "2023-03-06T18:58:36", - 3242 + "2023-10-28T17:16:00", + 4407 ], [ - "2023-03-07T22:04:26", - 3255 + "2023-10-29T10:04:35", + 4410 ], [ - "2023-03-11T18:55:05", - 3294 + "2023-10-30T01:06:23", + 4410 ], [ - "2023-03-13T01:08:17", - 3296 + "2023-10-31T01:15:37", + 4412 ], [ - "2023-03-16T01:14:43", - 3318 + "2023-11-01T12:58:49", + 4414 ], [ - "2023-03-25T20:41:27", - 3366 + "2023-11-03T22:34:05", + 4423 ], - [ - "2023-03-26T18:35:58", - 3384 + [ + "2023-11-04T17:14:00", + 4423 ], [ - "2023-03-27T19:04:51", - 3391 + "2023-11-05T18:48:33", + 4423 ], [ - "2023-03-28T14:20:40", - 3407 + "2023-11-06T22:30:41", + 4434 ], [ - "2023-03-29T01:10:08", - 3409 + "2023-11-07T22:42:00", + 4434 ], [ - "2023-03-30T01:06:23", - 3416 + "2023-11-08T22:22:32", + 4435 ], [ - "2023-04-01T16:38:16", - 3441 + "2023-11-09T22:42:59", + 4436 ], [ - "2023-04-02T18:16:54", - 3453 + "2023-11-10T22:40:09", + 4438 ], [ - "2023-04-03T20:17:29", - 3468 + "2023-11-11T22:37:19", + 4438 ] ], "terraform": [ @@ -22305,6 +29838,486 @@ [ "2023-04-03T20:17:29", 210857 + ], + [ + "2023-04-04T01:00:44", + 211077 + ], + [ + "2023-04-05T01:02:44", + 211860 + ], + [ + "2023-04-06T01:02:10", + 212706 + ], + [ + "2023-04-10T19:39:37", + 215002 + ], + [ + "2023-04-11T18:04:56", + 215713 + ], + [ + "2023-04-12T19:58:02", + 216448 + ], + [ + "2023-04-15T13:28:28", + 218029 + ], + [ + "2023-04-16T20:56:34", + 218309 + ], + [ + "2023-04-20T09:00:09", + 220912 + ], + [ + "2023-04-22T18:08:18", + 222287 + ], + [ + "2023-04-23T08:46:30", + 222481 + ], + [ + "2023-04-24T10:35:05", + 222845 + ], + [ + "2023-04-25T13:22:38", + 223694 + ], + [ + "2023-04-26T01:05:21", + 224072 + ], + [ + "2023-04-29T09:13:18", + 226607 + ], + [ + "2023-04-30T23:37:21", + 226993 + ], + [ + "2023-05-01T12:30:40", + 227171 + ], + [ + "2023-05-02T01:03:19", + 227425 + ], + [ + "2023-05-12T22:08:47", + 235311 + ], + [ + "2023-05-13T20:23:06", + 235593 + ], + [ + "2023-05-14T19:54:23", + 235814 + ], + [ + "2023-05-17T23:06:02", + 238459 + ], + [ + "2023-05-18T18:05:13", + 239156 + ], + [ + "2023-05-19T18:27:46", + 239948 + ], + [ + "2023-05-20T06:58:27", + 240232 + ], + [ + "2023-05-21T17:54:05", + 240531 + ], + [ + "2023-05-22T19:05:24", + 241277 + ], + [ + "2023-05-23T01:07:57", + 241474 + ], + [ + "2023-05-24T01:14:32", + 242491 + ], + [ + "2023-05-26T01:11:00", + 244365 + ], + [ + "2023-05-27T17:04:12", + 245380 + ], + [ + "2023-05-28T17:03:24", + 245717 + ], + [ + "2023-05-29T11:13:08", + 245977 + ], + [ + "2023-05-31T23:48:39", + 248209 + ], + [ + "2023-06-01T01:25:18", + 248323 + ], + [ + "2023-06-02T01:10:33", + 249165 + ], + [ + "2023-06-03T09:59:50", + 249997 + ], + [ + "2023-06-04T01:13:43", + 250124 + ], + [ + "2023-06-05T01:08:28", + 250347 + ], + [ + "2023-06-07T01:10:00", + 252116 + ], + [ + "2023-06-08T05:19:18", + 253143 + ], + [ + "2023-06-11T18:48:09", + 254925 + ], + [ + "2023-06-12T01:16:15", + 255039 + ], + [ + "2023-06-13T01:11:33", + 255828 + ], + [ + "2023-06-17T01:09:24", + 259200 + ], + [ + "2023-06-21T05:26:13", + 261514 + ], + [ + "2023-06-23T01:12:21", + 262906 + ], + [ + "2023-06-24T01:13:03", + 263681 + ], + [ + "2023-06-25T01:19:08", + 263966 + ], + [ + "2023-07-02T01:17:57", + 269312 + ], + [ + "2023-07-05T04:19:03", + 271231 + ], + [ + "2023-07-06T01:13:59", + 271949 + ], + [ + "2023-07-07T01:22:59", + 272589 + ], + [ + "2023-07-09T01:17:28", + 273517 + ], + [ + "2023-07-10T12:35:57", + 274119 + ], + [ + "2023-07-11T18:04:48", + 275604 + ], + [ + "2023-07-13T01:16:23", + 276730 + ], + [ + "2023-07-14T18:55:34", + 278381 + ], + [ + "2023-07-15T14:49:24", + 278757 + ], + [ + "2023-07-17T01:18:56", + 279222 + ], + [ + "2023-07-23T01:13:49", + 283641 + ], + [ + "2023-07-24T12:19:15", + 284276 + ], + [ + "2023-07-25T10:15:45", + 285012 + ], + [ + "2023-07-26T21:02:52", + 286603 + ], + [ + "2023-08-03T19:41:39", + 293065 + ], + [ + "2023-08-06T01:17:07", + 294397 + ], + [ + "2023-08-07T14:09:58", + 295222 + ], + [ + "2023-08-09T21:27:06", + 297362 + ], + [ + "2023-08-10T00:37:45", + 297390 + ], + [ + "2023-08-11T00:59:39", + 298497 + ], + [ + "2023-08-14T01:07:10", + 300013 + ], + [ + "2023-08-20T10:19:30", + 305045 + ], + [ + "2023-08-21T01:02:38", + 305268 + ], + [ + "2023-08-22T05:14:32", + 306758 + ], + [ + "2023-08-23T01:09:12", + 308254 + ], + [ + "2023-08-24T08:23:46", + 309482 + ], + [ + "2023-08-25T01:09:33", + 310523 + ], + [ + "2023-08-26T15:48:29", + 311849 + ], + [ + "2023-09-01T01:00:53", + 316309 + ], + [ + "2023-09-02T06:53:40", + 317253 + ], + [ + "2023-09-03T17:23:10", + 317780 + ], + [ + "2023-09-04T01:14:42", + 317897 + ], + [ + "2023-09-06T09:29:05", + 320170 + ], + [ + "2023-09-08T01:01:21", + 322306 + ], + [ + "2023-09-17T18:42:04", + 330011 + ], + [ + "2023-09-18T07:24:56", + 330303 + ], + [ + "2023-09-19T01:04:12", + 331132 + ], + [ + "2023-09-20T15:31:08", + 332654 + ], + [ + "2023-09-21T01:10:04", + 332996 + ], + [ + "2023-09-22T16:54:09", + 334481 + ], + [ + "2023-09-24T01:09:47", + 335135 + ], + [ + "2023-09-26T01:03:52", + 336343 + ], + [ + "2023-09-28T01:03:35", + 338157 + ], + [ + "2023-10-02T10:16:34", + 340745 + ], + [ + "2023-10-11T01:02:27", + 348180 + ], + [ + "2023-10-12T07:12:13", + 349436 + ], + [ + "2023-10-15T18:35:06", + 352227 + ], + [ + "2023-10-16T01:12:02", + 352384 + ], + [ + "2023-10-17T01:19:48", + 353660 + ], + [ + "2023-10-18T09:54:25", + 354988 + ], + [ + "2023-10-19T05:13:12", + 356593 + ], + [ + "2023-10-20T21:26:06", + 358807 + ], + [ + "2023-10-21T07:20:54", + 359045 + ], + [ + "2023-10-22T21:40:43", + 359535 + ], + [ + "2023-10-24T01:08:57", + 360946 + ], + [ + "2023-10-25T03:48:19", + 362345 + ], + [ + "2023-10-28T17:16:00", + 365712 + ], + [ + "2023-10-29T10:04:35", + 366047 + ], + [ + "2023-10-30T01:06:23", + 366225 + ], + [ + "2023-10-31T01:15:37", + 367236 + ], + [ + "2023-11-01T12:58:49", + 368601 + ], + [ + "2023-11-03T22:34:05", + 370696 + ], + [ + "2023-11-04T17:14:00", + 370913 + ], + [ + "2023-11-05T18:48:33", + 371240 + ], + [ + "2023-11-06T22:30:41", + 372241 + ], + [ + "2023-11-07T22:42:00", + 373359 + ], + [ + "2023-11-08T22:22:32", + 374500 + ], + [ + "2023-11-09T22:42:59", + 375621 + ], + [ + "2023-11-10T22:40:09", + 376630 + ], + [ + "2023-11-11T22:37:19", + 376998 ] ] } \ No newline at end of file diff --git a/.automation/generated/linter-helps.json b/.automation/generated/linter-helps.json index 0b17dbc54d4..81ad475f412 100644 --- a/.automation/generated/linter-helps.json +++ b/.automation/generated/linter-helps.json @@ -25,7 +25,7 @@ "", "Documents:", "", - " https://github.com/rhysd/actionlint/tree/main/docs", + " https://github.com/rhysd/actionlint/tree/v1.7.1/docs", "", "Flags:", " -color", @@ -61,111 +61,89 @@ " [-f {brief,full,md,json,codeclimate,quiet,pep8,sarif}]", " [--sarif-file SARIF_FILE] [-q]", " [--profile {min,basic,moderate,safety,shared,production}]", - " [-p] [--progressive] [--project-dir PROJECT_DIR]", - " [-r RULESDIR] [-R] [-s] [--write [WRITE_LIST]]", - " [--show-relpath] [-t TAGS] [-v] [-x SKIP_LIST]", - " [--generate-ignore] [-w WARN_LIST]", + " [-p] [--project-dir PROJECT_DIR] [-r RULESDIR] [-R] [-s]", + " [--fix [WRITE_LIST]] [--show-relpath] [-t TAGS] [-v]", + " [-x SKIP_LIST] [--generate-ignore] [-w WARN_LIST]", " [--enable-list ENABLE_LIST] [--nocolor] [--force-color]", - " [--exclude EXCLUDE_PATHS] [-c CONFIG_FILE]", - " [-i IGNORE_FILE] [--offline] [--version]", + " [--exclude EXCLUDE_PATHS [EXCLUDE_PATHS ...]]", + " [-c CONFIG_FILE] [-i IGNORE_FILE] [--offline] [--version]", " [lintables ...]", "", "positional arguments:", - " lintables One or more files or paths. When missing it will", - " enable auto-detection mode.", + " lintables One or more files or paths. When missing it will enable auto-detection mode.", "", "options:", " -h, --help show this help message and exit", " -P, --list-profiles List all profiles, no formatting options available.", - " -L, --list-rules List all the rules. For listing rules only the", - " following formats for argument -f are supported:", - " {brief, full, md} with 'brief' as default.", - " -T, --list-tags List all the tags and the rules they cover. Increase", - " the verbosity level with `-v` to include 'opt-in' tag", - " and its rules.", + " -L, --list-rules List all the rules. For listing rules only the following formats for argument -f are supported: {brief, full, md} with 'brief' as default.", + " -T, --list-tags List all the tags and the rules they cover. Increase the verbosity level with `-v` to include 'opt-in' tag and its rules.", " -f {brief,full,md,json,codeclimate,quiet,pep8,sarif}, --format {brief,full,md,json,codeclimate,quiet,pep8,sarif}", - " stdout formatting, json being an alias for", - " codeclimate. (default: None)", + " stdout formatting, json being an alias for codeclimate. (default: None)", " --sarif-file SARIF_FILE", " SARIF output file", " -q quieter, reduce verbosity, can be specified twice.", " --profile {min,basic,moderate,safety,shared,production}", " Specify which rules profile to be used.", " -p, --parseable parseable output, same as '-f pep8'", - " --progressive Return success if number of violations compared with", - " previous git commit has not increased. This feature", - " works only in git repositories.", " --project-dir PROJECT_DIR", - " Location of project/repository, autodetected based on", - " location of configuration file.", + " Location of project/repository, autodetected based on location of configuration file.", " -r RULESDIR, --rules-dir RULESDIR", - " Specify custom rule directories. Add -R to keep using", - " embedded rules from /venvs/ansible-", - " lint/lib/python3.11/site-packages/ansiblelint/rules", + " Specify custom rule directories. Add -R to keep using embedded rules from /venvs/ansible-lint/lib/python3.12/site-packages/ansiblelint/rules", " -R Keep default rules when using -r", - " -s, --strict Return non-zero exit code on warnings as well as", - " errors", - " --write [WRITE_LIST] Allow ansible-lint to reformat YAML files and run rule", - " transforms (Reformatting YAML files standardizes", - " spacing, quotes, etc. A rule transform can fix or", - " simplify fixing issues identified by that rule). You", - " can limit the effective rule transforms (the", - " 'write_list') by passing a keywords 'all' or 'none' or", - " a comma separated list of rule ids or rule tags. YAML", - " reformatting happens whenever '--write' or '--write='", - " is used. '--write' and '--write=all' are equivalent:", - " they allow all transforms to run. The effective list", - " of transforms comes from 'write_list' in the config", - " file, followed whatever '--write' args are provided on", - " the commandline. '--write=none' resets the list of", - " transforms to allow reformatting YAML without running", - " any of the transforms (ie '--write=none,rule-id' will", - " ignore write_list in the config file and only run the", - " rule-id transform).", + " -s, --strict Return non-zero exit code on warnings as well as errors", + " --fix [WRITE_LIST] Allow ansible-lint to perform auto-fixes, including YAML reformatting. You can limit the effective rule transforms (the 'write_list') by passing a keywords 'all' or 'none' or a comma separated list of rule ids or rule tags. YAML reformatting happens whenever '--fix' or '--fix=' is used. '--fix' and '--fix=all' are equivalent: they allow all transforms to run. Presence of --fix in command overrides config file value.", " --show-relpath Display path relative to CWD", " -t TAGS, --tags TAGS only check rules whose id/tags match these values", " -v Increase verbosity level (-vv for more)", " -x SKIP_LIST, --skip-list SKIP_LIST", - " only check rules whose id/tags do not match these", - " values. e.g: --skip-list=name,run-once", - " --generate-ignore Generate a text file '.ansible-lint-ignore' that", - " ignores all found violations. Each line contains", - " filename and rule id separated by a space.", + " only check rules whose id/tags do not match these values. e.g: --skip-list=name,run-once", + " --generate-ignore Generate a text file '.ansible-lint-ignore' that ignores all found violations. Each line contains filename and rule id separated by a space.", " -w WARN_LIST, --warn-list WARN_LIST", - " only warn about these rules, unless overridden in", - " config file. Current version default value is:", - " experimental, jinja[spacing]", + " only warn about these rules, unless overridden in config file. Current version default value is: experimental, jinja[spacing], fqcn[deep]", " --enable-list ENABLE_LIST", " activate optional rules by their tag name", " --nocolor disable colored output, same as NO_COLOR=1", " --force-color Force colored output, same as FORCE_COLOR=1", - " --exclude EXCLUDE_PATHS", - " path to directories or files to skip. This option is", - " repeatable.", + " --exclude EXCLUDE_PATHS [EXCLUDE_PATHS ...]", + " path to directories or files to skip. This option is repeatable.", " -c CONFIG_FILE, --config-file CONFIG_FILE", - " Specify configuration file to use. By default it will", - " look for '.ansible-lint' or '.config/ansible-lint.yml'", + " Specify configuration file to use. By default it will look for '.ansible-lint', '.config/ansible-lint.yml', or '.config/ansible-lint.yaml'", " -i IGNORE_FILE, --ignore-file IGNORE_FILE", - " Specify ignore file to use. By default it will look", - " for '.ansible-lint-ignore' or '.config/ansible-lint-", - " ignore.txt'", - " --offline Disable installation of requirements.yml and schema", - " refreshing", - " --version" + " Specify ignore file to use. By default it will look for '.ansible-lint-ignore' or '.config/ansible-lint-ignore.txt'", + " --offline Disable installation of requirements.yml and schema refreshing", + " --version", + "", + "The following environment variables are also recognized but there is no guarantee that they will work in future versions:", + "", + "ANSIBLE_LINT_CUSTOM_RULESDIR: Used for adding another folder into the lookup path for new rules.", + "", + "ANSIBLE_LINT_IGNORE_FILE: Define it to override the name of the default ignore file `.ansible-lint-ignore`", + "", + "ANSIBLE_LINT_WRITE_TMP: Tells linter to dump fixes into different temp files instead of overriding original. Used internally for testing.", + "", + "ANSIBLE_LINT_SKIP_SCHEMA_UPDATE: Tells ansible-lint to skip schema refresh.", + "", + "ANSIBLE_LINT_NODEPS: Avoids installing content dependencies and avoids performing checks that would fail when modules are not installed. Far less violations will be reported." ], "arm-ttk": [ - "\u001b[31;1mTest-AzTemplate: \u001b[0m", - "\u001b[31;1m\u001b[36;1mLine |\u001b[0m", - "\u001b[31;1m\u001b[36;1m\u001b[36;1m 2 | \u001b[0m $TAZ_V = (Test-AzTemplate \u001b[36;1m-help\u001b[0m);\u001b[0m", - "\u001b[31;1m\u001b[36;1m\u001b[36;1m\u001b[0m\u001b[36;1m\u001b[0m\u001b[36;1m | \u001b[31;1m ~~~~~\u001b[0m", - "\u001b[31;1m\u001b[36;1m\u001b[36;1m\u001b[0m\u001b[36;1m\u001b[0m\u001b[36;1m\u001b[31;1m\u001b[31;1m\u001b[36;1m | \u001b[31;1mA parameter cannot be found that matches parameter name 'help'.\u001b[0m" + "", + "cmdlet Import-Module at command pipeline position 1", + "Supply values for the following parameters:", + "Name[0]:", + "Import-Module: Cannot process command because of one or more missing mandatory parameters: Name.", + "Test-AzTemplate: ", + "Line |", + " 2 | $TAZ_V = (Test-AzTemplate -help);", + " | ~~~~~~~~~~~~~~~", + " | The term 'Test-AzTemplate' is not recognized as a name of a cmdlet, function, script file, or executable program.", + "Check the spelling of the name, or if a path was included, verify that the path is correct and try again." ], "bandit": [ "usage: bandit [-h] [-r] [-a {file,vuln}] [-n CONTEXT_LINES] [-c CONFIG_FILE]", " [-p PROFILE] [-t TESTS] [-s SKIPS]", " [-l | --severity-level {all,low,medium,high}]", " [-i | --confidence-level {all,low,medium,high}]", - " [-f {csv,custom,html,json,sarif,screen,txt,xml,yaml}]", + " [-f {csv,custom,html,json,sarif,sarif,screen,txt,xml,yaml}]", " [--msg-template MSG_TEMPLATE] [-o [OUTPUT_FILE]] [-v] [-d] [-q]", " [--ignore-nosec] [-x EXCLUDED_PATHS] [-b BASELINE]", " [--ini INI_PATH] [--exit-zero] [--version]", @@ -207,7 +185,7 @@ " higher. \"all\" and \"low\" are likely to produce the same", " results, but it is possible for rules to be undefined", " which will not be listed in \"low\".", - " -f {csv,custom,html,json,sarif,screen,txt,xml,yaml}, --format {csv,custom,html,json,sarif,screen,txt,xml,yaml}", + " -f {csv,custom,html,json,sarif,sarif,screen,txt,xml,yaml}, --format {csv,custom,html,json,sarif,sarif,screen,txt,xml,yaml}", " specify output format", " --msg-template MSG_TEMPLATE", " specify output message template (only usable with", @@ -336,7 +314,7 @@ " B703 django_mark_safe" ], "bash-exec": [ - "GNU bash, version 5.2.15(1)-release-(x86_64-alpine-linux-musl)", + "GNU bash, version 5.2.26(1)-release-(x86_64-alpine-linux-musl)", "Usage: bash [GNU long option] [option] ...", " bash [GNU long option] [option] script-file ...", "GNU long options:", @@ -367,7 +345,7 @@ "General help using GNU software: " ], "bicep_linter": [ - "Bicep CLI version 0.15.31 (3ba6e06a8d)", + "Bicep CLI version 0.28.1 (ba1e9f8c1e)", "", "Usage:", " bicep build [options] ", @@ -377,10 +355,11 @@ " The input file", "", " Options:", - " --outdir Saves the output at the specified directory.", - " --outfile Saves the output as the specified file path.", - " --stdout Prints the output to stdout.", - " --no-restore Builds the bicep file without restoring external modules.", + " --outdir Saves the output at the specified directory.", + " --outfile Saves the output as the specified file path.", + " --stdout Prints the output to stdout.", + " --no-restore Builds the bicep file without restoring external modules.", + " --diagnostics-format Sets the format with which diagnostics are displayed. Valid values are ( Default | Sarif ).", "", " Examples:", " bicep build file.bicep", @@ -388,8 +367,9 @@ " bicep build file.bicep --outdir dir1", " bicep build file.bicep --outfile file.json", " bicep build file.bicep --no-restore", + " bicep build file.bicep --diagnostics-format sarif", "", - " bicep format [options] ", + " bicep format [options] ", " Formats a .bicep file.", "", " Arguments:", @@ -400,16 +380,16 @@ " --outfile Saves the output as the specified file path.", " --stdout Prints the output to stdout.", " --newline Set newline char. Valid values are ( Auto | LF | CRLF | CR ).", - " --indentKind Set indentation kind. Valid values are ( Space | Tab ).", - " --indentSize Number of spaces to indent with (Only valid with --indentKind set to Space).", - " --insertFinalNewline Insert a final newline.", + " --indent-kind Set indentation kind. Valid values are ( Space | Tab ).", + " --indent-size Number of spaces to indent with (Only valid with --indentKind set to Space).", + " --insert-final-newline Insert a final newline.", "", " Examples:", " bicep format file.bicep", " bicep format file.bicep --stdout", " bicep format file.bicep --outdir dir1", " bicep format file.bicep --outfile file.json", - " bicep format file.bicep --indentKind Tab", + " bicep format file.bicep --indent-kind Tab", "", " bicep decompile [options] ", " Attempts to decompile a template .json file to .bicep.", @@ -421,7 +401,7 @@ " --outdir Saves the output at the specified directory.", " --outfile Saves the output as the specified file path.", " --stdout Prints the output to stdout.", - " --force Allows overwriting the output file if it exists (applies only to 'bicep decompile').", + " --force Allows overwriting the output file if it exists (applies only to 'bicep decompile' or 'bicep decompile-params').", "", " Examples:", " bicep decompile file.json", @@ -430,8 +410,44 @@ " bicep decompile file.json --force", " bicep decompile file.json --outfile file.bicep", "", + " bicep lint [options] ", + " Lints a .bicep file.", + "", + " Arguments:", + " The input file", + "", + " Options:", + " --no-restore Skips restoring external modules.", + " --diagnostics-format Sets the format with which diagnostics are displayed. Valid values are ( Default | Sarif ).", + "", + " Examples:", + " bicep lint file.bicep", + " bicep lint file.bicep --no-restore", + " bicep lint file.bicep --diagnostics-format sarif", + "", + " bicep decompile-params [options] ", + " Attempts to decompile a parameters .json file to .bicepparam.", + "", + " Arguments:", + " The input file", + "", + " Options:", + " --outdir Saves the output at the specified directory.", + " --outfile Saves the output as the specified file path.", + " --stdout Prints the output to stdout.", + " --force Allows overwriting the output file if it exists (applies only to 'bicep decompile' or 'bicep decompile-params').", + " --bicep-file Path to the bicep template file that will be referenced in the using declaration", + "", + " Examples:", + " bicep decompile-params file.json", + " bicep decompile-params file.json --bicep-file ./dir/main.bicep", + " bicep decompile-params file.json --stdout", + " bicep decompile-params file.json --outdir dir1", + " bicep decompile-params file.json --force", + " bicep decompile-params file.json --outfile file.bicepparam", + "", " bicep generate-params [options] ", - " Builds .parameters.json file from the given bicep file, updates if there is an existing parameters.json file.", + " Builds parameters file from the given bicep file, updates if there is an existing parameters file.", "", " Arguments:", " The input file", @@ -441,6 +457,8 @@ " --outdir Saves the output at the specified directory.", " --outfile Saves the output as the specified file path.", " --stdout Prints the output to stdout.", + " --output-format Selects the output format {json, bicepparam}", + " --include-params Selects which parameters to include into output {requiredonly, all}", "", " Examples:", " bicep generate-params file.bicep", @@ -448,7 +466,7 @@ " bicep generate-params file.bicep --stdout", " bicep generate-params file.bicep --outdir dir1", " bicep generate-params file.bicep --outfile file.parameters.json", - "", + " bicep generate-params file.bicep --output-format bicepparam --include-params all", "", " bicep publish --target ", " Publishes the .bicep file to the module registry.", @@ -458,12 +476,15 @@ " The module reference", "", " Options:", - " --documentationUri Module documentation uri", + " --documentation-uri Module documentation uri", + " --with-source [Experimental] Publish source code with the module", + " --force Overwrite existing published module or file", "", " Examples:", " bicep publish file.bicep --target br:example.azurecr.io/hello/world:v1", - " bicep publish file.json --target br:example.azurecr.io/hello/world:v1", - " bicep publish file.json --target br:example.azurecr.io/hello/world:v1 --documentationUri https://github.com/hello-world/README.md", + " bicep publish file.bicep --target br:example.azurecr.io/hello/world:v1 --force", + " bicep publish file.bicep --target br:example.azurecr.io/hello/world:v1 --documentation-uri https://github.com/hello-world/README.md --with-source", + " bicep publish file.json --target br:example.azurecr.io/hello/world:v1 --documentation-uri https://github.com/hello-world/README.md", "", " bicep restore ", " Restores external modules from the specified Bicep file to the local module cache.", @@ -471,33 +492,32 @@ " Arguments:", " The input file", "", - " bicep [options]", + " bicep [options]", " Options:", " --version -v Shows bicep version information", " --help -h Shows this usage information", " --license Prints license information", " --third-party-notices Prints third-party notices", "", - "", " bicep build-params ", - " Builds .bicepparam file.", + " Builds a .json file from a .bicepparam file.", "", " Arguments:", " The input Bicepparam file", "", " Options:", - " --bicep-file Verifies if the bicep file reference in the params file using declaration matches the specified file path.", - " --outfile-params Saves the param output as the specified file path.", - " --outfile-bicep Saves the bicep output as the specified file path.", - " --stdout Prints the output to stdout.", - " --no-restore Builds the bicep file without restoring external modules.", + " --bicep-file Verifies if the specified bicep file path matches the one provided in the params file using declaration", + " --outfile Saves the param output json as the specified file path.", + " --stdout Prints the param and bicep json output to stdout.", + " --no-restore Builds the bicep file (referenced in using declaration) without restoring external modules.", + " --diagnostics-format Sets the format with which diagnostics are displayed. Valid values are ( Default | Sarif ).", "", " Examples:", " bicep build-params params.bicepparam", " bicep build-params params.bicepparam --stdout", - " bicep build-params params.bicepparam --outfile-params otherParams.json --outfile-bicep otherMain.json", + " bicep build-params params.bicepparam --outfile otherParams.json", " bicep build-params params.bicepparam --no-restore", - "", + " bicep build-params params.bicepparam --diagnostics-format sarif", "" ], "black": [ @@ -509,20 +529,21 @@ " -c, --code TEXT Format the code passed in as a string.", " -l, --line-length INTEGER How many characters per line to allow.", " [default: 88]", - " -t, --target-version [py33|py34|py35|py36|py37|py38|py39|py310|py311]", + " -t, --target-version [py33|py34|py35|py36|py37|py38|py39|py310|py311|py312|py313]", " Python versions that should be supported by", - " Black's output. By default, Black will try", - " to infer this from the project metadata in", - " pyproject.toml. If this does not yield", - " conclusive results, Black will use per-file", - " auto-detection.", + " Black's output. You should include all", + " versions that your code supports. By", + " default, Black will infer target versions", + " from the project metadata in pyproject.toml.", + " If this does not yield conclusive results,", + " Black will use per-file auto-detection.", " --pyi Format all input files like typing stubs", - " regardless of file extension (useful when", - " piping source on standard input).", + " regardless of file extension. This is useful", + " when piping source on standard input.", " --ipynb Format all input files like Jupyter", - " Notebooks regardless of file extension", - " (useful when piping source on standard", - " input).", + " Notebooks regardless of file extension. This", + " is useful when piping source on standard", + " input.", " --python-cell-magics TEXT When processing Jupyter Notebooks, add the", " given magic to the list of known python-", " magics (capture, prun, pypy, python,", @@ -537,69 +558,110 @@ " --preview Enable potentially disruptive style changes", " that may be added to Black's main", " functionality in the next major release.", + " --unstable Enable potentially disruptive style changes", + " that have known bugs or are not currently", + " expected to make it into the stable style", + " Black's next major release. Implies", + " --preview.", + " --enable-unstable-feature [hex_codes_in_unicode_sequences|string_processing|hug_parens_with_braces_and_square_brackets|unify_docstring_detection|no_normalize_fmt_skip_whitespace|wrap_long_dict_values_in_parens|multiline_string_handling|typed_params_trailing_comma|is_simple_lookup_for_doublestar_expression|docstring_check_for_newline|remove_redundant_guard_parens|parens_for_long_if_clauses_in_case_block]", + " Enable specific features included in the", + " `--unstable` style. Requires `--preview`. No", + " compatibility guarantees are provided on the", + " behavior or existence of any unstable", + " features.", " --check Don't write the files back, just return the", " status. Return code 0 means nothing would", " change. Return code 1 means some files would", " be reformatted. Return code 123 means there", " was an internal error.", " --diff Don't write the files back, just output a", - " diff for each file on stdout.", - " --color / --no-color Show colored diff. Only applies when", - " `--diff` is given.", - " --fast / --safe If --fast given, skip temporary sanity", - " checks. [default: --safe]", + " diff to indicate what changes Black would've", + " made. They are printed to stdout so", + " capturing them is simple.", + " --color / --no-color Show (or do not show) colored diff. Only", + " applies when --diff is given.", + " --line-ranges START-END When specified, Black will try its best to", + " only format these lines. This option can be", + " specified multiple times, and a union of the", + " lines will be formatted. Each range must be", + " specified as two integers connected by a", + " `-`: `-`. The `` and", + " `` integer indices are 1-based and", + " inclusive on both ends.", + " --fast / --safe By default, Black performs an AST safety", + " check after formatting your code. The --fast", + " flag turns off this check and the --safe", + " flag explicitly enables it. [default:", + " --safe]", " --required-version TEXT Require a specific version of Black to be", - " running (useful for unifying results across", - " many environments e.g. with a pyproject.toml", - " file). It can be either a major version", - " number or an exact version.", - " --include TEXT A regular expression that matches files and", - " directories that should be included on", - " recursive searches. An empty value means all", - " files are included regardless of the name.", - " Use forward slashes for directories on all", - " platforms (Windows, too). Exclusions are", - " calculated first, inclusions later.", - " [default: (\\.pyi?|\\.ipynb)$]", + " running. This is useful for ensuring that", + " all contributors to your project are using", + " the same version, because different versions", + " of Black may format code a little", + " differently. This option can be set in a", + " configuration file for consistent results", + " across environments.", " --exclude TEXT A regular expression that matches files and", " directories that should be excluded on", " recursive searches. An empty value means no", " paths are excluded. Use forward slashes for", " directories on all platforms (Windows, too).", - " Exclusions are calculated first, inclusions", - " later. [default: /(\\.direnv|\\.eggs|\\.git|\\.h", - " g|\\.mypy_cache|\\.nox|\\.tox|\\.venv|venv|\\.svn", - " |\\.ipynb_checkpoints|_build|buck-", - " out|build|dist|__pypackages__)/]", + " By default, Black also ignores all paths", + " listed in .gitignore. Changing this value", + " will override all default exclusions.", + " [default: /(\\.direnv|\\.eggs|\\.git|\\.hg|\\.ipy", + " nb_checkpoints|\\.mypy_cache|\\.nox|\\.pytest_c", + " ache|\\.ruff_cache|\\.tox|\\.svn|\\.venv|\\.vscod", + " e|__pypackages__|_build|buck-", + " out|build|dist|venv)/]", " --extend-exclude TEXT Like --exclude, but adds additional files", - " and directories on top of the excluded ones.", - " (Useful if you simply want to add to the", - " default)", + " and directories on top of the default values", + " instead of overriding them.", " --force-exclude TEXT Like --exclude, but files and directories", " matching this regex will be excluded even", " when they are passed explicitly as", - " arguments.", + " arguments. This is useful when invoking", + " Black programmatically on changed files,", + " such as in a pre-commit hook or editor", + " plugin.", " --stdin-filename TEXT The name of the file when passing it through", " stdin. Useful to make sure Black will", - " respect --force-exclude option on some", + " respect the --force-exclude option on some", " editors that rely on using stdin.", - " -W, --workers INTEGER RANGE Number of parallel workers [default: number", - " of CPUs in the system] [x>=1]", - " -q, --quiet Don't emit non-error messages to stderr.", - " Errors are still emitted; silence those with", - " 2>/dev/null.", - " -v, --verbose Also emit messages to stderr about files", - " that were not changed or were ignored due to", - " exclusion patterns.", + " --include TEXT A regular expression that matches files and", + " directories that should be included on", + " recursive searches. An empty value means all", + " files are included regardless of the name.", + " Use forward slashes for directories on all", + " platforms (Windows, too). Overrides all", + " exclusions, including from .gitignore and", + " command line options. [default:", + " (\\.pyi?|\\.ipynb)$]", + " -W, --workers INTEGER RANGE When Black formats multiple files, it may", + " use a process pool to speed up formatting.", + " This option controls the number of parallel", + " workers. This can also be specified via the", + " BLACK_NUM_WORKERS environment variable.", + " Defaults to the number of CPUs in the", + " system. [x>=1]", + " -q, --quiet Stop emitting all non-critical output. Error", + " messages will still be emitted (which can", + " silenced by 2>/dev/null).", + " -v, --verbose Emit messages about files that were not", + " changed or were ignored due to exclusion", + " patterns. If Black is using a configuration", + " file, a message detailing which one it is", + " using will be emitted.", " --version Show the version and exit.", - " --config FILE Read configuration from FILE path.", + " --config FILE Read configuration options from a", + " configuration file.", " -h, --help Show this message and exit." ], "cfn-lint": [ "usage:", "Basic: cfn-lint test.yaml", "Ignore a rule: cfn-lint -i E3012 -- test.yaml", - "Configure a rule: cfn-lint -x E3012:strict=false -t test.yaml", + "Configure a rule: cfn-lint -x E3012:strict=true -t test.yaml", "Lint all yaml files in a folder: cfn-lint dir/**/*.yaml", "", "CloudFormation Linter", @@ -631,7 +693,7 @@ " Include experimental rules", " -x CONFIGURE_RULES [CONFIGURE_RULES ...], --configure-rule CONFIGURE_RULES [CONFIGURE_RULES ...]", " Provide configuration for a rule. Format", - " RuleId:key=value. Example: E3012:strict=false", + " RuleId:key=value. Example: E3012:strict=true", " --config-file CONFIG_FILE", " Specify the cfnlintrc file to use", " -z CUSTOM_RULES, --custom-rules CUSTOM_RULES", @@ -679,23 +741,22 @@ " --list-rules List registered rules" ], "checkov": [ - "usage: checkov [-h] [-v] [--support] [-d DIRECTORY] [--add-check] [-f FILE]", - " [--skip-path SKIP_PATH]", + "usage: checkov [-h] [-v] [--support] [-d DIRECTORY] [--add-check]", + " [-f FILE [FILE ...]] [--skip-path SKIP_PATH]", " [--external-checks-dir EXTERNAL_CHECKS_DIR]", " [--external-checks-git EXTERNAL_CHECKS_GIT] [-l]", - " [-o {cli,cyclonedx,cyclonedx_json,json,junitxml,github_failed_only,gitlab_sast,sarif,csv}]", + " [-o {cli,csv,cyclonedx,cyclonedx_json,json,junitxml,github_failed_only,gitlab_sast,sarif,spdx}]", " [--output-file-path OUTPUT_FILE_PATH] [--output-bc-ids]", " [--include-all-checkov-policies] [--quiet] [--compact]", - " [--framework {ansible,argo_workflows,arm,azure_pipelines,bicep,bitbucket_pipelines,circleci_pipelines,cloudformation,dockerfile,github_configuration,github_actions,gitlab_configuration,gitlab_ci,bitbucket_configuration,helm,json,yaml,kubernetes,kustomize,openapi,sca_package,sca_image,secrets,serverless,terraform,terraform_json,terraform_plan,3d_policy,all} [{ansible,argo_workflows,arm,azure_pipelines,bicep,bitbucket_pipelines,circleci_pipelines,cloudformation,dockerfile,github_configuration,github_actions,gitlab_configuration,gitlab_ci,bitbucket_configuration,helm,json,yaml,kubernetes,kustomize,openapi,sca_package,sca_image,secrets,serverless,terraform,terraform_json,terraform_plan,3d_policy,all} ...]]", - " [--skip-framework {ansible,argo_workflows,arm,azure_pipelines,bicep,bitbucket_pipelines,circleci_pipelines,cloudformation,dockerfile,github_configuration,github_actions,gitlab_configuration,gitlab_ci,bitbucket_configuration,helm,json,yaml,kubernetes,kustomize,openapi,sca_package,sca_image,secrets,serverless,terraform,terraform_json,terraform_plan,3d_policy} [{ansible,argo_workflows,arm,azure_pipelines,bicep,bitbucket_pipelines,circleci_pipelines,cloudformation,dockerfile,github_configuration,github_actions,gitlab_configuration,gitlab_ci,bitbucket_configuration,helm,json,yaml,kubernetes,kustomize,openapi,sca_package,sca_image,secrets,serverless,terraform,terraform_json,terraform_plan,3d_policy} ...]]", + " [--framework FRAMEWORK [FRAMEWORK ...]]", + " [--skip-framework SKIP_FRAMEWORK [SKIP_FRAMEWORK ...]]", " [-c CHECK] [--skip-check SKIP_CHECK]", " [--run-all-external-checks] [-s] [--soft-fail-on SOFT_FAIL_ON]", " [--hard-fail-on HARD_FAIL_ON] [--bc-api-key BC_API_KEY]", - " [--prisma-api-url PRISMA_API_URL] [--docker-image DOCKER_IMAGE]", + " [--prisma-api-url PRISMA_API_URL] [--skip-results-upload]", + " [--docker-image DOCKER_IMAGE]", " [--dockerfile-path DOCKERFILE_PATH] [--repo-id REPO_ID]", " [-b BRANCH] [--skip-download] [--use-enforcement-rules]", - " [--no-guide] [--skip-suppressions] [--skip-policy-download]", - " [--skip-fixes]", " [--download-external-modules DOWNLOAD_EXTERNAL_MODULES]", " [--var-file VAR_FILE]", " [--external-modules-download-path EXTERNAL_MODULES_DOWNLOAD_PATH]", @@ -707,6 +768,7 @@ " [--output-baseline-as-skipped]", " [--skip-cve-package SKIP_CVE_PACKAGE]", " [--policy-metadata-filter POLICY_METADATA_FILTER]", + " [--policy-metadata-filter-exception POLICY_METADATA_FILTER_EXCEPTION]", " [--secrets-scan-file-type SECRETS_SCAN_FILE_TYPE]", " [--enable-secret-scan-all-files]", " [--block-list-secret-scan BLOCK_LIST_SECRET_SCAN]", @@ -727,7 +789,8 @@ " IaC root directory (can not be used together with", " --file).", " --add-check Generate a new check via CLI prompt", - " -f FILE, --file FILE File to scan (can not be used together with", + " -f FILE [FILE ...], --file FILE [FILE ...]", + " File to scan (can not be used together with", " --directory). With this option, Checkov will attempt", " to filter the runners based on the file type. For", " example, if you specify a \".tf\" file, only the", @@ -743,13 +806,20 @@ " specified multiple times.", " --external-checks-dir EXTERNAL_CHECKS_DIR", " Directory for custom checks to be loaded. Can be", - " repeated", + " repeated. Note that this will run Python code from the", + " specified directory, so only use this option with", + " trusted directories.", " --external-checks-git EXTERNAL_CHECKS_GIT", - " Github url of external checks to be added. you can", - " specify a subdirectory after a double-slash //. cannot", - " be used together with --external-checks-dir", + " GitHub url of external checks to be added. You can", + " specify a subdirectory after a double-slash //.It is", + " ossible to use ?ref=tags/tagName or", + " ?ref=heads/branchName or ?ref=commit_id and cannot be", + " used together with --external-checks-dir. Note that", + " this will run Python code from the specified", + " directory, so only use this option with trusted", + " repositories.", " -l, --list List checks", - " -o {cli,cyclonedx,cyclonedx_json,json,junitxml,github_failed_only,gitlab_sast,sarif,csv}, --output {cli,cyclonedx,cyclonedx_json,json,junitxml,github_failed_only,gitlab_sast,sarif,csv}", + " -o {cli,csv,cyclonedx,cyclonedx_json,json,junitxml,github_failed_only,gitlab_sast,sarif,spdx}, --output {cli,csv,cyclonedx,cyclonedx_json,json,junitxml,github_failed_only,gitlab_sast,sarif,spdx}", " Report output format. Add multiple outputs by using", " the flag multiple times (-o sarif -o cli)", " --output-file-path OUTPUT_FILE_PATH", @@ -763,28 +833,55 @@ " platform", " --include-all-checkov-policies", " When running with an API key, Checkov will omit any", - " policies that do not exist in the Bridgecrew or Prisma", - " Cloud platform, except for local custom policies", - " loaded with the --external-check flags. Use this key", - " to include policies that only exist in Checkov in the", - " scan. Note that this will make the local CLI results", - " different from the results you see in the platform.", - " Has no effect if you are not using an API key. Use the", + " policies that do not exist in Prisma Cloud platform,", + " except for local custom policies loaded with the", + " --external-check flags. Use this key to include", + " policies that only exist in Checkov in the scan. Note", + " that this will make the local CLI results different", + " from the results you see in the platform. Has no", + " effect if you are not using an API key. Use the", " --check option to explicitly include checks by ID even", " if they are not in the platform, without using this", " flag.", " --quiet in case of CLI output, display only failed checks.", " Also disables progress bars", " --compact in case of CLI output, do not display code blocks", - " --framework {ansible,argo_workflows,arm,azure_pipelines,bicep,bitbucket_pipelines,circleci_pipelines,cloudformation,dockerfile,github_configuration,github_actions,gitlab_configuration,gitlab_ci,bitbucket_configuration,helm,json,yaml,kubernetes,kustomize,openapi,sca_package,sca_image,secrets,serverless,terraform,terraform_json,terraform_plan,3d_policy,all} [{ansible,argo_workflows,arm,azure_pipelines,bicep,bitbucket_pipelines,circleci_pipelines,cloudformation,dockerfile,github_configuration,github_actions,gitlab_configuration,gitlab_ci,bitbucket_configuration,helm,json,yaml,kubernetes,kustomize,openapi,sca_package,sca_image,secrets,serverless,terraform,terraform_json,terraform_plan,3d_policy,all} ...]", - " Filter scan to run only on specific infrastructure", - " code frameworks [env var: CKV_FRAMEWORK]", - " --skip-framework {ansible,argo_workflows,arm,azure_pipelines,bicep,bitbucket_pipelines,circleci_pipelines,cloudformation,dockerfile,github_configuration,github_actions,gitlab_configuration,gitlab_ci,bitbucket_configuration,helm,json,yaml,kubernetes,kustomize,openapi,sca_package,sca_image,secrets,serverless,terraform,terraform_json,terraform_plan,3d_policy} [{ansible,argo_workflows,arm,azure_pipelines,bicep,bitbucket_pipelines,circleci_pipelines,cloudformation,dockerfile,github_configuration,github_actions,gitlab_configuration,gitlab_ci,bitbucket_configuration,helm,json,yaml,kubernetes,kustomize,openapi,sca_package,sca_image,secrets,serverless,terraform,terraform_json,terraform_plan,3d_policy} ...]", + " --framework FRAMEWORK [FRAMEWORK ...]", + " Filter scan to run only on specific infrastructure as", + " code frameworks. Defaults to all frameworks. If you", + " explicitly include 'all' as a value, then all other", + " values are ignored. Enter as a comma-separated list or", + " repeat the flag multiple times. For example,", + " --framework terraform,sca_package or --framework", + " terraform --framework sca_package. Possible values:", + " all, ansible, argo_workflows, arm, azure_pipelines,", + " bicep, bitbucket_pipelines, cdk, circleci_pipelines,", + " cloudformation, dockerfile, github_configuration,", + " github_actions, gitlab_configuration, gitlab_ci,", + " bitbucket_configuration, helm, json, yaml, kubernetes,", + " kustomize, openapi, sca_package, sca_image, secrets,", + " serverless, terraform, terraform_json, terraform_plan,", + " sast, sast_python, sast_java, sast_javascript,", + " sast_typescript, sast_golang, 3d_policy [env var:", + " CKV_FRAMEWORK]", + " --skip-framework SKIP_FRAMEWORK [SKIP_FRAMEWORK ...]", " Filter scan to skip specific infrastructure as code", - " frameworks.This will be included automatically for", + " frameworks. This will be included automatically for", " some frameworks if system dependencies are missing.", - " Add multiple frameworks using spaces. For example,", - " --skip-framework terraform sca_package.", + " Enter as a comma-separated list or repeat the flag", + " multiple times. For example, --skip-framework", + " terraform,sca_package or --skip-framework terraform", + " --skip-framework sca_package. Cannot include values", + " that are also included in --framework. Possible", + " values: ansible, argo_workflows, arm, azure_pipelines,", + " bicep, bitbucket_pipelines, cdk, circleci_pipelines,", + " cloudformation, dockerfile, github_configuration,", + " github_actions, gitlab_configuration, gitlab_ci,", + " bitbucket_configuration, helm, json, yaml, kubernetes,", + " kustomize, openapi, sca_package, sca_image, secrets,", + " serverless, terraform, terraform_json, terraform_plan,", + " sast, sast_python, sast_java, sast_javascript,", + " sast_typescript, sast_golang, 3d_policy", " -c CHECK, --check CHECK", " Checks to run; any other checks will be skipped. Enter", " one or more items separated by commas. Each item may", @@ -869,17 +966,23 @@ " --bc-api-key to be a Prisma Cloud Access Key in the", " following format: :: [env", " var: PRISMA_API_URL]", + " --skip-results-upload", + " Do not upload scan results to the platform to view in", + " the console. Results are only available locally. If", + " you use the --support flag, logs will still get", + " uploaded.", " --docker-image DOCKER_IMAGE, --image DOCKER_IMAGE", " Scan docker images by name or ID. Only works with", " --bc-api-key flag", " --dockerfile-path DOCKERFILE_PATH", " Path to the Dockerfile of the scanned docker image", " --repo-id REPO_ID Identity string of the repository, with form", - " /", + " /. Required when using the", + " platform integration (API key).", " -b BRANCH, --branch BRANCH", " Selected branch of the persisted repository. Only has", " effect when using the --bc-api-key flag", - " --skip-download Do not download any data from Bridgecrew. This will", + " --skip-download Do not download any data from Prisma Cloud. This will", " omit doc links, severities, etc., as well as custom", " policies and suppressions if using an API token. Note:", " it will prevent BC platform IDs from being available", @@ -904,12 +1007,6 @@ " applying the --check list and then the --skip-check", " list (as described above under --check) still applies", " here. Requires a BC or PC platform API key.", - " --no-guide Deprecated - use --skip-download", - " --skip-suppressions Deprecated - use --skip-download", - " --skip-policy-download", - " Deprecated - use --skip-download", - " --skip-fixes Do not download fixed resource templates from", - " Bridgecrew. Only has effect when using the API key.", " --download-external-modules DOWNLOAD_EXTERNAL_MODULES", " download external terraform modules from public git", " repositories and terraform registry [env var:", @@ -919,7 +1016,7 @@ " es/variables.html#variable-definitions-tfvars-", " files).Currently only supported for source Terraform", " (.tf file), and Helm chart scans.Requires using", - " --directory, not --file.", + " --directory, not --file. [env var: CKV_VAR_FILE]", " --external-modules-download-path EXTERNAL_MODULES_DOWNLOAD_PATH", " set the path for the download external terraform", " modules [env var: EXTERNAL_MODULES_DIR]", @@ -961,10 +1058,22 @@ " argument multiple times to skip multiple packages", " --policy-metadata-filter POLICY_METADATA_FILTER", " comma separated key:value string to filter policies", - " based on Prisma Cloud policy metadata. See https://pri", - " sma.pan.dev/api/cloud/cspm/policy#operation/get-", - " policy-filters-and-options for information on allowed", - " filters. Format: policy.label=test,cloud.type=aws", + " based on Prisma Cloud policy metadata. When used with", + " --policy-metadata-filter-exception, the exceptions", + " override any policies selected asa result of the", + " --policy-metadata-filter flag.See https://prisma.pan.d", + " ev/api/cloud/cspm/policy#operation/get-policy-filters-", + " and-options for information on allowed filters.", + " Format: policy.label=test,cloud.type=aws", + " --policy-metadata-filter-exception POLICY_METADATA_FILTER_EXCEPTION", + " comma separated key:value string to exclude filtered", + " policies based on Prisma Cloud policy metadata. When", + " used with --policy-metadata-filter, the exceptions", + " override any policies selected asa result of the", + " --policy-metadata-filter flag.See https://prisma.pan.d", + " ev/api/cloud/cspm/policy#operation/get-policy-filters-", + " and-options for information on allowed filters.", + " Format: policy.label=test,cloud.type=aws", " --secrets-scan-file-type SECRETS_SCAN_FILE_TYPE", " not in use [env var: CKV_SECRETS_SCAN_FILE_TYPE]", " --enable-secret-scan-all-files", @@ -981,7 +1090,8 @@ " exclude extra resources (resources without violations)", " from report output [env var:", " CKV_SKIP_RESOURCES_WITHOUT_VIOLATIONS]", - " --deep-analysis Enable combine tf graph and rf plan graph", + " --deep-analysis Combine the TF Plan and TF graphs to make connections", + " not available in either", " --no-fail-on-crash Return exit code 0 instead of 2 [env var:", " CKV_NO_FAIL_ON_CRASH]", " --mask MASK List of : OR only.", @@ -1003,13 +1113,12 @@ " receive enhanced guidelines using", " CKV_OPENAI_MAX_FINDINGS [env var: CKV_OPENAI_API_KEY]", "", - "Args that start with '--' (eg. -v) can also be set in a config file", - "(/.checkov.yaml or /.checkov.yml or /root/.checkov.yaml or /root/.checkov.yml", - "or specified via --config-file). The config file uses YAML syntax and must", - "represent a YAML 'mapping' (for details, see", - "http://learn.getgrav.org/advanced/yaml). If an arg is specified in more than", - "one place, then commandline values override environment variables which", - "override config file values which override defaults." + "Args that start with '--' can also be set in a config file (/.checkov.yaml or", + "/.checkov.yml or /root/.checkov.yaml or /root/.checkov.yml or specified via", + "--config-file). The config file uses YAML syntax and must represent a YAML", + "'mapping' (for details, see http://learn.getgrav.org/advanced/yaml). In", + "general, command-line values override environment variables which override", + "config file values which override defaults." ], "checkstyle": [ "Usage: java [options] [args...]", @@ -1035,16 +1144,21 @@ " and ZIP archives to search for class files.", " -p ", " --module-path ...", - " A : separated list of directories, each directory", - " is a directory of modules.", + " A : separated list of elements, each element is a file path", + " to a module or a directory containing modules. Each module is either", + " a modular JAR or an exploded-module directory.", " --upgrade-module-path ...", - " A : separated list of directories, each directory", - " is a directory of modules that replace upgradeable", - " modules in the runtime image", + " A : separated list of elements, each element is a file path", + " to a module or a directory containing modules to replace", + " upgradeable modules in the runtime image. Each module is either", + " a modular JAR or an exploded-module directory.", " --add-modules [,...]", " root modules to resolve in addition to the initial module.", " can also be ALL-DEFAULT, ALL-SYSTEM,", " ALL-MODULE-PATH.", + " --enable-native-access [,...]", + " modules that are permitted to perform restricted native operations.", + " can also be ALL-UNNAMED.", " --list-modules", " list observable modules and exit", " -d ", @@ -1060,7 +1174,7 @@ " -D=", " set a system property", " -verbose:[class|module|gc|jni]", - " enable verbose output", + " enable verbose output for the given subsystem", " -version print product version to the error stream and exit", " --version print product version to the output stream and exit", " -showversion print product version to the error stream and continue", @@ -1100,7 +1214,7 @@ " See the SplashScreen API documentation for more information", " @argument files", " one or more argument files containing options", - " -disable-@files", + " --disable-@files", " prevent further argument file expansion", " --enable-preview", " allow classes to depend on preview features of this release", @@ -1109,7 +1223,7 @@ "" ], "chktex": [ - "ChkTeX v1.7.6 - Copyright 1995-96 Jens T. Berger Thielemann.", + "ChkTeX v1.7.8 - Copyright 1995-96 Jens T. Berger Thielemann.", "Compiled with POSIX extended regex support.", "ChkTeX comes with ABSOLUTELY NO WARRANTY; details on this and", "distribution conditions in the GNU General Public License file.", @@ -1120,7 +1234,7 @@ "Press Ctrl-D to terminate stdin input.", "", "", - " Usage of ChkTeX v1.7.6", + " Usage of ChkTeX v1.7.8", " ~~~~~~~~~~~~~~~~~~~~~~", "", " Template", @@ -1137,8 +1251,11 @@ " -h --help : This text.", " -i --license : Show distribution information", " -l --localrc : Read local .chktexrc formatted file.", - " -d --debug : Debug information. Give it a number.", + " -d --debug : Debug information. A bit field with 5 bits.", + " Each bit shows a different type of information.", " -r --reset : Reset settings to default.", + " -S --set : Read it's argument as if from chktexrc.", + " e.g., -S TabSize=8 will override the TabSize.", "", "Muting warning messages:", "~~~~~~~~~~~~~~~~~~~~~~~~", @@ -1146,7 +1263,7 @@ " -e --erroron : Makes msg # given an error and turns it on.", " -m --msgon : Makes msg # given a message and turns it on.", " -n --nowarn : Mutes msg # given.", - " -L --nolinesupp: Disables per-line suppressions.", + " -L --nolinesupp: Disables per-line and per-file suppressions.", "", "Output control flags:", "~~~~~~~~~~~~~~~~~~~~~", @@ -1166,7 +1283,7 @@ " -x --wipeverb : Ignore contents of `\\verb' commands.", " -g --globalrc : Read global .chktexrc file.", " -I --inputfiles: Execute \\input statements.", - " -H --headererr : Show errors found in front of \\begin{document}", + " -H --headererr : Show errors found before \\begin{document}", "", "Miscellaneous switches:", "~~~~~~~~~~~~~~~~~~~~~~~", @@ -1181,37 +1298,141 @@ "Any of the above arguments can be made permanent by setting them in the", "chktexrc file (~/.chktexrc)." ], + "clang-format": [ + "OVERVIEW: A tool to format C/C++/Java/JavaScript/JSON/Objective-C/Protobuf/C# code.", + "", + "If no arguments are specified, it formats the code from standard input", + "and writes the result to the standard output.", + "If s are given, it reformats the files. If -i is specified", + "together with s, the files are edited in-place. Otherwise, the", + "result is written to the standard output.", + "", + "USAGE: clang-format [options] [ ...]", + "", + "OPTIONS:", + "", + "Clang-format options:", + "", + " --Werror - If set, changes formatting warnings to errors", + " --Wno-error= - If set don't error out on the specified warning type.", + " =unknown - If set, unknown format options are only warned about.", + " This can be used to enable formatting, even if the", + " configuration contains unknown (newer) options.", + " Use with caution, as this might lead to dramatically", + " differing format depending on an option being", + " supported or not.", + " --assume-filename= - Set filename used to determine the language and to find", + " .clang-format file.", + " Only used when reading from stdin.", + " If this is not passed, the .clang-format file is searched", + " relative to the current working directory when reading stdin.", + " Unrecognized filenames are treated as C++.", + " supported:", + " CSharp: .cs", + " Java: .java", + " JavaScript: .mjs .js .ts", + " Json: .json", + " Objective-C: .m .mm", + " Proto: .proto .protodevel", + " TableGen: .td", + " TextProto: .textpb .pb.txt .textproto .asciipb", + " Verilog: .sv .svh .v .vh", + " --cursor= - The position of the cursor when invoking", + " clang-format from an editor integration", + " --dry-run - If set, do not actually make the formatting changes", + " --dump-config - Dump configuration options to stdout and exit.", + " Can be used with -style option.", + " --fallback-style= - The name of the predefined style used as a", + " fallback in case clang-format is invoked with", + " -style=file, but can not find the .clang-format", + " file to use. Defaults to 'LLVM'.", + " Use -fallback-style=none to skip formatting.", + " --ferror-limit= - Set the maximum number of clang-format errors to emit", + " before stopping (0 = no limit).", + " Used only with --dry-run or -n", + " --files= - A file containing a list of files to process, one per line.", + " -i - Inplace edit s, if specified.", + " --length= - Format a range of this length (in bytes).", + " Multiple ranges can be formatted by specifying", + " several -offset and -length pairs.", + " When only a single -offset is specified without", + " -length, clang-format will format up to the end", + " of the file.", + " Can only be used with one input file.", + " --lines= - : - format a range of", + " lines (both 1-based).", + " Multiple ranges can be formatted by specifying", + " several -lines arguments.", + " Can't be used with -offset and -length.", + " Can only be used with one input file.", + " -n - Alias for --dry-run", + " --offset= - Format a range starting at this byte offset.", + " Multiple ranges can be formatted by specifying", + " several -offset and -length pairs.", + " Can only be used with one input file.", + " --output-replacements-xml - Output replacements as XML.", + " --qualifier-alignment= - If set, overrides the qualifier alignment style", + " determined by the QualifierAlignment style flag", + " --sort-includes - If set, overrides the include sorting behavior", + " determined by the SortIncludes style flag", + " --style= - Set coding style. can be:", + " 1. A preset: LLVM, GNU, Google, Chromium, Microsoft,", + " Mozilla, WebKit.", + " 2. 'file' to load style configuration from a", + " .clang-format file in one of the parent directories", + " of the source file (for stdin, see --assume-filename).", + " If no .clang-format file is found, falls back to", + " --fallback-style.", + " --style=file is the default.", + " 3. 'file:' to explicitly specify", + " the configuration file.", + " 4. \"{key: value, ...}\" to set specific parameters, e.g.:", + " --style=\"{BasedOnStyle: llvm, IndentWidth: 8}\"", + " --verbose - If set, shows the list of processed files", + "", + "Generic Options:", + "", + " --help - Display available options (--help-hidden for more)", + " --help-list - Display list of available options (--help-list-hidden for more)", + " --version - Display the version of this program" + ], "clippy": [ "Checks a package to catch common mistakes and improve your Rust code.", "", "Usage:", - " cargo clippy [options] [--] [...]", + " cargo clippy [OPTIONS] [--] [...]", "", "Common options:", " --no-deps Run Clippy only on the given crate, without linting the dependencies", - " --fix Automatically apply lint suggestions. This flag implies `--no-deps`", + " --fix Automatically apply lint suggestions. This flag implies --no-deps and --all-targets", " -h, --help Print this message", " -V, --version Print version info and exit", - " --explain LINT Print the documentation for a given lint", + " --explain [LINT] Print the documentation for a given lint", "", - "Other options are the same as `cargo check`.", + "See all options with cargo check --help.", "", - "To allow or deny a lint from the command line you can use `cargo clippy --`", - "with:", + "Allowing / Denying lints", "", - " -W --warn OPT Set lint warnings", - " -A --allow OPT Set lint allowed", - " -D --deny OPT Set lint denied", - " -F --forbid OPT Set lint forbidden", + "To allow or deny a lint from the command line you can use cargo clippy -- with:", "", - "You can use tool lints to allow or deny lints from your code, eg.:", + " -W / --warn [LINT] Set lint warnings", + " -A / --allow [LINT] Set lint allowed", + " -D / --deny [LINT] Set lint denied", + " -F / --forbid [LINT] Set lint forbidden", + "", + "You can use tool lints to allow or deny lints from your code, e.g.:", "", " #[allow(clippy::needless_lifetimes)]", + "", + "Manifest Options:", + " --manifest-path Path to Cargo.toml", + " --frozen Require Cargo.lock and cache are up to date", + " --locked Require Cargo.lock is up to date", + " --offline Run without accessing the network", "" ], "clj-kondo": [ - "clj-kondo v2023.03.17", - "", + "clj-kondo v2024.05.24", "", "Options:", "", @@ -1232,8 +1453,7 @@ " using `--cache-dir`. If `--cache-dir` is not set, cache is resolved using the", " nearest `.clj-kondo` directory in the current and parent directories.", "", - " --config : config may be a file or an EDN expression. See", - " https://cljdoc.org/d/clj-kondo/clj-kondo/2023.03.17/doc/configuration", + " --config : extra config that is merged. May be a file or an EDN expression. See https://github.com/clj-kondo/clj-kondo/blob/master/doc/config.md.", "", " --config-dir : use this config directory instead of auto-detected", " .clj-kondo dir.", @@ -1252,6 +1472,29 @@ " --debug: print debug information.", "" ], + "cljstyle": [ + "Usage: cljstyle [options] [args...]", + "", + "Commands:", + " find Find files which would be processed.", + " check Check source files and print a diff for errors.", + " fix Edit source files to fix formatting errors.", + " pipe Fixes formatting errors from stdin and pipes the results to stdout.", + " config Show config used for a given path.", + " migrate Migrate legacy configuration files.", + " version Print program version information.", + "", + "Options:", + " --ignore PATTERN Ignore files matching the given pattern. May be set multiple times.", + " --timeout SEC 300 Maximum time to allow the process to run for.", + " --timeout-trace Dump thread stack traces when the tool times out.", + " --stats FILE Write formatting stats to the named file. The extension controls the format and may be either 'edn' or 'tsv'.", + " --report Print stats report at the end of a run.", + " --report-timing Print detailed rule timings at the end of a run.", + " --no-color Don't output ANSI color codes.", + " -v, --verbose Print detailed debugging output.", + " -h, --help Show help and usage information." + ], "coffeelint": [ "Usage: coffeelint [options] source [...]", "", @@ -1501,11 +1744,16 @@ "", "Options:", " --check Check that files are formatted. Will not write any changes.", + " --loglevel Specify the log level - Debug, Information (default), Warning, Error, None [default: Information]", " --no-cache Bypass the cache to determine if a file needs to be formatted.", + " --no-msbuild-check Bypass the check to determine if a csproj files references a different version of CSharpier.MsBuild.", + " --include-generated Include files generated by the SDK and files that begin with comments", " --fast Skip comparing syntax tree of formatted file to original file to validate changes.", " --skip-write Skip writing changes. Generally used for testing to ensure csharpier doesn't throw any errors or cause syntax tree validation failures.", " --write-stdout Write the results of formatting any files to stdout.", - " --pipe-multiple-files Keep csharpier running so that multiples files can be piped to it via stdin", + " --pipe-multiple-files Keep csharpier running so that multiples files can be piped to it via stdin.", + " --server Run CSharpier as a server so that multiple files may be formatted.", + " --server-port Specify the port that CSharpier should start on. Defaults to a random unused port.", " --config-path Path to the CSharpier configuration file", " --version Show version information", " -?, -h, --help Show help and usage information", @@ -1559,23 +1807,111 @@ "For more information, see https://www.dartlang.org/tools/analyzer.", "" ], + "detekt": [ + "Usage: detekt [options]", + " Options:", + " --all-rules", + " Activates all available (even unstable) rules.", + " Default: false", + " --auto-correct, -ac", + " Allow rules to auto correct code if they support it. The default rule", + " sets do NOT support auto correcting and won't change any line in the", + " users code base. However custom rules can be written to support auto", + " correcting. The additional 'formatting' rule set, added with", + " '--plugins', does support it and needs this flag.", + " Default: false", + " --base-path, -bp", + " Specifies a directory as the base path.Currently it impacts all file", + " paths in the formatted reports. File paths in console output and txt", + " report are not affected and remain as absolute paths.", + " --baseline, -b", + " If a baseline xml file is passed in, only new code smells not in the", + " baseline are printed in the console.", + " --build-upon-default-config", + " Preconfigures detekt with a bunch of rules and some opinionated defaults", + " for you. Allows additional provided configurations to override the", + " defaults.", + " Default: false", + " --classpath, -cp", + " EXPERIMENTAL: Paths where to find user class files and depending jar", + " files. Used for type resolution.", + " --config, -c", + " Path to the config file (path/to/config.yml). Multiple configuration", + " files can be specified with ',' or ';' as separator.", + " --config-resource, -cr", + " Path to the config resource on detekt's classpath (path/to/config.yml).", + " --create-baseline, -cb", + " Treats current analysis findings as a smell baseline for future detekt", + " runs.", + " Default: false", + " --debug", + " Prints extra information about configurations and extensions.", + " Default: false", + " --disable-default-rulesets, -dd", + " Disables default rule sets.", + " Default: false", + " --excludes, -ex", + " Globbing patterns describing paths to exclude from the analysis.", + " --generate-config, -gc", + " Export default config. Path can be specified with --config option", + " (default path: default-detekt-config.yml)", + " Default: false", + " --help, -h", + " Shows the usage.", + " --includes, -in", + " Globbing patterns describing paths to include in the analysis. Useful in", + " combination with 'excludes' patterns.", + " --input, -i", + " Input paths to analyze. Multiple paths are separated by comma. If not", + " specified the current working directory is used.", + " --jdk-home", + " EXPERIMENTAL: Use a custom JDK home directory to include into the", + " classpath", + " --jvm-target", + " EXPERIMENTAL: Target version of the generated JVM bytecode that was", + " generated during compilation and is now being used for type resolution", + " (1.8, 9, 10, ..., 20)", + " Default: 1.8", + " --language-version", + " EXPERIMENTAL: Compatibility mode for Kotlin language version X.Y,", + " reports errors for all language features that came out later", + " Possible Values: [1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9, 2.0, 2.1]", + " --max-issues", + " Return exit code 0 only when found issues count does not exceed", + " specified issues count.", + " --parallel", + " Enables parallel compilation and analysis of source files. Do some", + " benchmarks first before enabling this flag. Heuristics show performance", + " benefits starting from 2000 lines of Kotlin code.", + " Default: false", + " --plugins, -p", + " Extra paths to plugin jars separated by ',' or ';'.", + " --report, -r", + " Generates a report for given 'report-id' and stores it on given 'path'.", + " Entry should consist of: [report-id:path]. Available 'report-id' values:", + " 'txt', 'xml', 'html', 'md', 'sarif'. These can also be used in", + " combination with each other e.g. '-r txt:reports/detekt.txt -r", + " xml:reports/detekt.xml'", + " --version", + " Prints the detekt CLI version.", + " Default: false", + "" + ], "devskim": [ - "Microsoft DevSkim Command Line Interface 0.7.104+bd34d6c82b", + "devskim 1.0.33+9dba5c6c1f", + "\u00a9 Microsoft Corporation. All rights reserved.", "", - "Usage: devskim [options] [command]", + " analyze Analyze source code using DevSkim", "", - "Options:", - " -?|-h|--help Show help information", - " -v|--version Show version information", + " fix Apply fixes from a Sarif", "", - "Commands:", - " analyze Analyze source code", - " catalogue Create csv file catalogue of rules", - " pack Pack rules into a single file", - " test Run tests for rules", - " verify Verify integrity and syntax of rules", + " verify Verify rule validity", "", - "Use \"devskim [command] --help\" for more information about a command.", + " suppress Suppress issues identified in a DevSkim Sarif", + "", + " help Display more information on a specific command.", + "", + " version Display version information.", "" ], "djlint": [ @@ -1584,30 +1920,63 @@ " djLint \u00b7 HTML template linter and formatter.", "", "Options:", - " --version Show the version and exit.", - " -e, --extension TEXT File extension to check [default: html]", - " -i, --ignore TEXT Codes to ignore. ex: \"H014,H017\"", - " --reformat Reformat the file(s).", - " --check Check formatting on the file(s).", - " --indent INTEGER Indent spacing. [default: 4]", - " --quiet Do not print diff when reformatting.", - " --profile TEXT Enable defaults by template language. ops: django,", - " jinja, nunjucks, handlebars, golang, angular, html", - " [default: html]", - " --require-pragma Only format or lint files that starts with a", - " comment with the text 'djlint:on'", - " --lint Lint for common issues. [default option]", - " --use-gitignore Use .gitignore file to extend excludes.", - " --warn Return errors as warnings.", - " --preserve-leading-space Attempt to preserve leading space on text.", - " --preserve-blank-lines Attempt to preserve blank lines.", - " --format-css Also format contents of + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/assets/icons/linters/secretlint.png b/docs/assets/icons/linters/secretlint.png new file mode 100644 index 00000000000..f24343ddc5e Binary files /dev/null and b/docs/assets/icons/linters/secretlint.png differ diff --git a/docs/assets/icons/linters/semgrep.png b/docs/assets/icons/linters/semgrep.png new file mode 100644 index 00000000000..6f09bd3936e Binary files /dev/null and b/docs/assets/icons/linters/semgrep.png differ diff --git a/docs/assets/icons/linters/semgrep.svg b/docs/assets/icons/linters/semgrep.svg new file mode 100644 index 00000000000..e7ba2c338ec --- /dev/null +++ b/docs/assets/icons/linters/semgrep.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/docs/assets/icons/linters/shellcheck.png b/docs/assets/icons/linters/shellcheck.png new file mode 100644 index 00000000000..d433f4a6c2e Binary files /dev/null and b/docs/assets/icons/linters/shellcheck.png differ diff --git a/docs/assets/icons/linters/syft.png b/docs/assets/icons/linters/syft.png new file mode 100644 index 00000000000..6eae4ff1425 Binary files /dev/null and b/docs/assets/icons/linters/syft.png differ diff --git a/docs/assets/icons/linters/terragrunt.png b/docs/assets/icons/linters/terragrunt.png new file mode 100644 index 00000000000..dd799086ccc Binary files /dev/null and b/docs/assets/icons/linters/terragrunt.png differ diff --git a/docs/assets/icons/linters/terrascan.png b/docs/assets/icons/linters/terrascan.png new file mode 100644 index 00000000000..a9ad7027061 Binary files /dev/null and b/docs/assets/icons/linters/terrascan.png differ diff --git a/docs/assets/icons/linters/tflint.png b/docs/assets/icons/linters/tflint.png new file mode 100644 index 00000000000..2f544af11cc Binary files /dev/null and b/docs/assets/icons/linters/tflint.png differ diff --git a/docs/assets/icons/linters/trivy-sbom.png b/docs/assets/icons/linters/trivy-sbom.png new file mode 100644 index 00000000000..d171b06314d Binary files /dev/null and b/docs/assets/icons/linters/trivy-sbom.png differ diff --git a/docs/assets/icons/linters/trivy-sbom.svg b/docs/assets/icons/linters/trivy-sbom.svg new file mode 100644 index 00000000000..48f326c8d6c --- /dev/null +++ b/docs/assets/icons/linters/trivy-sbom.svg @@ -0,0 +1,149 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/assets/icons/linters/trivy.png b/docs/assets/icons/linters/trivy.png new file mode 100644 index 00000000000..d171b06314d Binary files /dev/null and b/docs/assets/icons/linters/trivy.png differ diff --git a/docs/assets/icons/linters/trivy.svg b/docs/assets/icons/linters/trivy.svg new file mode 100644 index 00000000000..48f326c8d6c --- /dev/null +++ b/docs/assets/icons/linters/trivy.svg @@ -0,0 +1,149 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/assets/icons/linters/trufflehog.png b/docs/assets/icons/linters/trufflehog.png new file mode 100644 index 00000000000..a5626caa203 Binary files /dev/null and b/docs/assets/icons/linters/trufflehog.png differ diff --git a/docs/assets/icons/perl.ico b/docs/assets/icons/perl.ico index faa117eee15..a9d6b59f501 100644 Binary files a/docs/assets/icons/perl.ico and b/docs/assets/icons/perl.ico differ diff --git a/docs/assets/icons/perl.png b/docs/assets/icons/perl.png index 5530e6e1f5a..312ebceba12 100644 Binary files a/docs/assets/icons/perl.png and b/docs/assets/icons/perl.png differ diff --git a/docs/assets/icons/php.ico b/docs/assets/icons/php.ico index f095b7f75b5..0f4a2fd70de 100644 Binary files a/docs/assets/icons/php.ico and b/docs/assets/icons/php.ico differ diff --git a/docs/assets/icons/php.png b/docs/assets/icons/php.png new file mode 100644 index 00000000000..ee03dd52dd0 Binary files /dev/null and b/docs/assets/icons/php.png differ diff --git a/docs/assets/icons/r.ico b/docs/assets/icons/r.ico index 3e00498f3ba..e70e0a71ae8 100644 Binary files a/docs/assets/icons/r.ico and b/docs/assets/icons/r.ico differ diff --git a/docs/assets/icons/r.png b/docs/assets/icons/r.png index e9e06d7a8a3..bcbd6df404e 100644 Binary files a/docs/assets/icons/r.png and b/docs/assets/icons/r.png differ diff --git a/docs/assets/icons/raku.ico b/docs/assets/icons/raku.ico index 1ca36d23c51..8103cf1bf91 100644 Binary files a/docs/assets/icons/raku.ico and b/docs/assets/icons/raku.ico differ diff --git a/docs/assets/icons/raku.png b/docs/assets/icons/raku.png index b97bc16758e..a239a747064 100644 Binary files a/docs/assets/icons/raku.png and b/docs/assets/icons/raku.png differ diff --git a/docs/assets/icons/salesforce.ico b/docs/assets/icons/salesforce.ico index a15a8f348b8..5e454cd4388 100644 Binary files a/docs/assets/icons/salesforce.ico and b/docs/assets/icons/salesforce.ico differ diff --git a/docs/assets/icons/salesforce.png b/docs/assets/icons/salesforce.png new file mode 100644 index 00000000000..c2b65205f11 Binary files /dev/null and b/docs/assets/icons/salesforce.png differ diff --git a/docs/assets/icons/scala.ico b/docs/assets/icons/scala.ico index 8c40f32b075..e4683452544 100644 Binary files a/docs/assets/icons/scala.ico and b/docs/assets/icons/scala.ico differ diff --git a/docs/assets/icons/scala.png b/docs/assets/icons/scala.png new file mode 100644 index 00000000000..a3aa3ee5531 Binary files /dev/null and b/docs/assets/icons/scala.png differ diff --git a/docs/assets/icons/sublime.ico b/docs/assets/icons/sublime.ico index 7a4a0faa31a..69ba6dce405 100644 Binary files a/docs/assets/icons/sublime.ico and b/docs/assets/icons/sublime.ico differ diff --git a/docs/assets/icons/sublime.png b/docs/assets/icons/sublime.png index b911bd6be27..f6be02b3002 100644 Binary files a/docs/assets/icons/sublime.png and b/docs/assets/icons/sublime.png differ diff --git a/docs/assets/icons/swift.ico b/docs/assets/icons/swift.ico new file mode 100644 index 00000000000..7605a339718 Binary files /dev/null and b/docs/assets/icons/swift.ico differ diff --git a/docs/assets/icons/swift.png b/docs/assets/icons/swift.png new file mode 100644 index 00000000000..544f617aa4d Binary files /dev/null and b/docs/assets/icons/swift.png differ diff --git a/docs/assets/icons/tekton.ico b/docs/assets/icons/tekton.ico index e84d75b3480..7e4f3d6488a 100644 Binary files a/docs/assets/icons/tekton.ico and b/docs/assets/icons/tekton.ico differ diff --git a/docs/assets/icons/tekton.png b/docs/assets/icons/tekton.png index 86fa43c9d30..2fc25f0c7bd 100644 Binary files a/docs/assets/icons/tekton.png and b/docs/assets/icons/tekton.png differ diff --git a/docs/assets/images/BitbucketCommentReporter.png b/docs/assets/images/BitbucketCommentReporter.png new file mode 100644 index 00000000000..a2d716b5937 Binary files /dev/null and b/docs/assets/images/BitbucketCommentReporter.png differ diff --git a/docs/assets/images/MarkdownSummaryReporter_1.png b/docs/assets/images/MarkdownSummaryReporter_1.png new file mode 100644 index 00000000000..d411a68a9d4 Binary files /dev/null and b/docs/assets/images/MarkdownSummaryReporter_1.png differ diff --git a/docs/assets/images/MarkdownSummaryReporter_2.png b/docs/assets/images/MarkdownSummaryReporter_2.png new file mode 100644 index 00000000000..55c66a0dbe7 Binary files /dev/null and b/docs/assets/images/MarkdownSummaryReporter_2.png differ diff --git a/docs/assets/images/megalinter-banner.png b/docs/assets/images/megalinter-banner.png index 203f042ac80..f22073045ea 100644 Binary files a/docs/assets/images/megalinter-banner.png and b/docs/assets/images/megalinter-banner.png differ diff --git a/docs/assets/images/r2devops-link.jpg b/docs/assets/images/r2devops-link.jpg new file mode 100644 index 00000000000..a9140d26523 Binary files /dev/null and b/docs/assets/images/r2devops-link.jpg differ diff --git a/docs/assets/images/r2devops-logo.jpg b/docs/assets/images/r2devops-logo.jpg new file mode 100644 index 00000000000..804f3f9593e Binary files /dev/null and b/docs/assets/images/r2devops-logo.jpg differ diff --git a/docs/assets/images/r2devops.svg b/docs/assets/images/r2devops.svg new file mode 100644 index 00000000000..9e522067689 --- /dev/null +++ b/docs/assets/images/r2devops.svg @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/config-activation.md b/docs/config-activation.md new file mode 100644 index 00000000000..40de947aee6 --- /dev/null +++ b/docs/config-activation.md @@ -0,0 +1,44 @@ +--- +title: Configure activation and deactivation of linters within MegaLinter +description: You can enable, disable, make not blocking, allow a minimum number of errors... +--- + + + + +# Activation and deactivation + +MegaLinter have all linters enabled by default, but allows to enable only some, or disable only some + +- If `ENABLE` isn't set, all descriptors are activated by default. If set, all linters of listed descriptors will be activated by default +- If `ENABLE_LINTERS` is set, only listed linters will be processed +- If `DISABLE` is set, the linters in the listed descriptors will be skipped +- If `DISABLE_LINTERS` is set, the listed linters will be skipped +- If `DISABLE_ERRORS_LINTERS` is set, the listed linters will be run, but if errors are found, they will be considered as non blocking + +Examples: + +- Run all javascript and groovy linters except STANDARD javascript linter. DevSkim errors will be non-blocking + +```yaml +ENABLE: JAVASCRIPT,GROOVY +DISABLE_LINTERS: JAVASCRIPT_STANDARD +DISABLE_ERRORS_LINTERS: REPOSITORY_DEVSKIM +``` + +- Run all linters except PHP linters (PHP_BUILTIN, PHP_PHPCS, PHP_PHPSTAN, PHP_PSALM) + +```yaml +DISABLE: PHP +``` + +- Run all linters except PHP_PHPSTAN and PHP_PSALM linters + +```yaml +DISABLE_LINTERS: + - PHP_PHPSTAN + - PHP_PSALM +``` + + + diff --git a/docs/config-apply-fixes.md b/docs/config-apply-fixes.md new file mode 100644 index 00000000000..dbbb4cf0d66 --- /dev/null +++ b/docs/config-apply-fixes.md @@ -0,0 +1,46 @@ +--- +title: Configure auto-fixing of issues by MegaLinter +description: Use MegaLinter to auto apply corrections on your repository files +--- + + + + +# Apply fixes + +Mega-linter is able to apply fixes provided by linters. To use this capability, you need 3 **env variables** defined at top level + +- **APPLY_FIXES**: `all` to apply fixes of all linters, or a list of linter keys (ex: `JAVASCRIPT_ES`,`MARKDOWN_MARKDOWNLINT`) + +Only for GitHub Action Workflow file if you use it: + +- **APPLY_FIXES_EVENT**: `all`, `push`, `pull_request`, `none` _(use none in case of use of [Updated sources reporter](reporters/UpdatedSourcesReporter.md))_ +- **APPLY_FIXES_MODE**: `commit` to create a new commit and push it on the same branch, or `pull_request` to create a new PR targeting the branch. + +## Apply fixes issues + +You may see **github permission errors**, or workflows not run on the new commit. + +To solve these issues, you can apply one of the following solutions. + +- Method 1: The most secured + - [Create Fine Grained Personal Access Token](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token#creating-a-fine-grained-personal-access-token), scoped only on your repository and then copy the PAT value + - [Define environment secret variable](https://docs.github.com/en/actions/security-guides/encrypted-secrets#creating-encrypted-secrets-for-an-environment) named **PAT** on your repository, and paste the PAT value + - Update your Github Actions Workflow to add the environment name + +- Method 2: Easier, but any contributor with write access can see your Personal Access Token + - [Create Classic Personal Access Token](https://docs.github.com/en/free-pro-team@latest/github/authenticating-to-github/creating-a-personal-access-token#creating-a-token), then copy the PAT value + - [Define secret variable](https://docs.github.com/en/free-pro-team@latest/actions/reference/encrypted-secrets#creating-encrypted-secrets-for-a-repository) named **PAT** on your repository, and paste the PAT value + +## Notes + +- You can use [**Updated sources reporter**](reporters/UpdatedSourcesReporter.md) if you don't want fixes to be automatically applied on git branch, but **download them in a zipped file** and manually **extract them in your project** +- If used, **APPLY_FIXES_EVENT** and **APPLY_FIXES_MODE** can not be defined in `.mega-linter.yml`config file, they must be set as environment variables +- If you use **APPLY_FIXES**, add the following line in your `.gitignore file` + +```shell +megalinter-reports/ +``` + + + diff --git a/docs/config-cli-lint-mode.md b/docs/config-cli-lint-mode.md new file mode 100644 index 00000000000..ab3b5b293f9 --- /dev/null +++ b/docs/config-cli-lint-mode.md @@ -0,0 +1,29 @@ +--- +title: Override the way linters are called by MegaLinter +description: Cli lint mode can be list_of_files, project or files +--- + + + + +# CLI lint mode + +Each linter is pre-configured to use a default lint mode, which are visible in the MegaLinter documentation ([example](https://megalinter.io/latest/descriptors/repository_trivy/#how-the-linting-is-performed)). The possible values are: + +- `list_of_files`: The linter is called only once, and passed a list of all the files to be processed +- `project`: The linter is called only once, from the root folder of the repository, and it scans for the files to process, as no file names are provided it +- `file`: The linter is called once per file, which hurts performance + +You can override the CLI_LINT_MODE by using a configuration variable for each linter (see [linters documentation](https://megalinter.io/supported-linters/)). + +- Linters that default to the `file` lint mode cannot be overridden to use the `list_of_files` lint mode +- Linters that default to the `project` lint mode cannot be overridden to use either the `list_of_files` or `file` lint modes. + +Allowing `file` or `list_of_files` to be overridden to `project` is mostly for workarounds. For example, some linters have a problem finding their config file when the current folder isn't the repository's root folder. + +Special considerations: + +- Linters that are configured to use the `project` lint mode ignore variables like `FILTER_REGEX_INCLUDE` and `FILTER_REGEX_EXCLUDE`, as they are not passed a list of files to lint. For those linters, you must check their documentation to see if a linter can be configured to ignore specific files. For example, the [Secretlint](https://megalinter.io/latest/descriptors/repository_secretlint/) linter ignore files listed in `~/.secretlintignore` by default, or it can be configured to instead ignore files listed in `~/.gitignore` by setting `REPOSITORY_SECRETLINT_ARGUMENTS` to `--secretlintignore .gitignore.`. + + + diff --git a/docs/config-file.md b/docs/config-file.md new file mode 100644 index 00000000000..748ec280706 --- /dev/null +++ b/docs/config-file.md @@ -0,0 +1,25 @@ +--- +title: MegaLinter configuration file +description: Use config file with auto-completion to customize MegaLinter behaviour +--- + + + + +# .mega-linter.yml file + +MegaLinter configuration variables are defined in a **.mega-linter.yml** file at the root of the repository or with **environment variables**. +You can see an example config file in this repo: [**.mega-linter.yml**](https://github.com/oxsecurity/megalinter/blob/main/.mega-linter.yml) + +Configuration is assisted with autocompletion and validation in most commonly used IDEs, thanks to [JSON schema](https://megalinter.io/json-schemas/configuration.html) stored on [schemastore.org](https://www.schemastore.org/) + +- VSCode: You need a VSCode extension like [Red Hat YAML](https://marketplace.visualstudio.com/items?itemName=redhat.vscode-yaml) +- IDEA family: Auto-completion natively supported + +You can also define variables as environment variables. +- In case a variable exists in both ENV and `.mega-linter.yml` file, priority is given to ENV variable. + +![Assisted configuration](https://github.com/oxsecurity/megalinter/raw/main/docs/assets/images/assisted-configuration.gif) + + + diff --git a/docs/config-filtering.md b/docs/config-filtering.md new file mode 100644 index 00000000000..80d48a1df1b --- /dev/null +++ b/docs/config-filtering.md @@ -0,0 +1,23 @@ +--- +title: Configure filtering of files analyzed by MegaLinter +description: Exclude files from linting +--- + + + + +# Filter linted files + +If you need to lint only a folder or exclude some files from linting, you can use optional environment parameters `FILTER_REGEX_INCLUDE` and `FILTER_REGEX_EXCLUDE` +You can apply filters to a single linter by defining variable `_FILTER_REGEX_INCLUDE` and `_FILTER_REGEX_EXCLUDE` + +Examples: + +- Lint only src folder: `FILTER_REGEX_INCLUDE: (src/)` +- Don't lint files inside test and example folders: `FILTER_REGEX_EXCLUDE: (test/|examples/)` +- Don't lint javascript files inside test folder: `FILTER_REGEX_EXCLUDE: (test/.*\.js)` + +Warning: not applicable with linters using CLI lint mode `project` ([see details](config-cli-lint-mode.md)) + + + diff --git a/docs/config-linters.md b/docs/config-linters.md new file mode 100644 index 00000000000..8066c31b9b2 --- /dev/null +++ b/docs/config-linters.md @@ -0,0 +1,14 @@ +--- +title: Linter scoped variables +description: Every linters has its own variables that can be customized +--- + + + + +# Linter specific variables + +See variables related to a single linter behavior in [linters documentations](supported-linters.md) + + + diff --git a/docs/config-postcommands.md b/docs/config-postcommands.md new file mode 100644 index 00000000000..64f04953331 --- /dev/null +++ b/docs/config-postcommands.md @@ -0,0 +1,23 @@ +--- +title: Configure custom commands to run after linters +description: Customize your MegaLinter run by running commands after linters are run +--- + + + + +# Post-commands + +MegaLinter can run custom commands after running linters (for example, running additional tests) + +Example in `.mega-linter.yml` config file + +```yaml +POST_COMMANDS: + - command: npm run test + cwd: "workspace" # Will be run at the root of the workspace (usually your repository root) + continue_if_failed: False # Will stop the process if command is failed (return code > 0) +``` + + + diff --git a/docs/config-precommands.md b/docs/config-precommands.md new file mode 100644 index 00000000000..e915bcea261 --- /dev/null +++ b/docs/config-precommands.md @@ -0,0 +1,28 @@ +--- +title: Configure custom commands to run before linters +description: Customize your MegaLinter run by installing linters extensions with npm, pip, or even raw bash before linters are run +--- + + + + +# Pre-commands + +MegaLinter can run custom commands before running linters (for example, installing an plugin required by one of the linters you use) + +Example in `.mega-linter.yml` config file + +```yaml +PRE_COMMANDS: + - command: npm install eslint-plugin-whatever + cwd: "root" # Will be run at the root of MegaLinter docker image + secured_env: true # True by default, but if defined to false, no global variable will be hidden (for example if you need GITHUB_TOKEN) + - command: echo "pre-test command has been called" + cwd: "workspace" # Will be run at the root of the workspace (usually your repository root) + continue_if_failed: False # Will stop the process if command is failed (return code > 0) + - command: pip install flake8-cognitive-complexity + venv: flake8 # Will be run within flake8 python virtualenv. There is one virtualenv per python-based linter, with the same name +``` + + + diff --git a/docs/config-variables-security.md b/docs/config-variables-security.md new file mode 100644 index 00000000000..c663ed0a5bf --- /dev/null +++ b/docs/config-variables-security.md @@ -0,0 +1,86 @@ +--- +title: Configure environment variables security with MegaLinter +description: Hide from linter executables the environment variables that can contain secrets +--- + + + + +# Environment variables security + +## Secured env variables + +MegaLinter runs on a docker image and calls the linters via command line to gather their results. + +If you run it from your **CI/CD pipelines**, the docker image may have **access to your environment variables, that can contain secrets** defined in CI/CD variables. + +As it can be complicated to **trust** the authors of all the open-source linters, **MegaLinter removes variables from the environment used to call linters**. + +Thanks to this feature, you only need to [**trust MegaLinter and its internal python dependencies**](https://github.com/oxsecurity/megalinter/blob/main/megalinter/setup.py), but there is **no need to trust all the linters that are used** ! + +You can add secured variables to the default list using configuration property **SECURED_ENV_VARIABLES** in .mega-linter.yml or in an environment variable (priority is given to ENV variables above `.mega-linter.yml` property). + +Values can be: + +- String (ex: `MY_SECRET_VAR`) +- Regular Expression (ex: `(MY.*VAR)`) + +Environment variables are secured for each command line called (linters, plugins, sarif formatter...) except for [PRE_COMMANDS](config-precommands.md) , ONLY if you define `secured_env: false` in the command. + +## Secured configuration examples + +- Example of adding extra secured variables `.mega-linter.yml`: + +```yaml +SECURED_ENV_VARIABLES: + - MY_SECRET_TOKEN + - ANOTHER_VAR_CONTAINING_SENSITIVE_DATA + - OX_API_KEY + - (MY.*VAR) # Regex format +``` + +- Example of adding extra secured variables in CI variables, so they can not be overridden in .mega-linter.yml: + +```shell +SECURED_ENV_VARIABLES=MY_SECRET_TOKEN,ANOTHER_VAR_CONTAINING_SENSITIVE_DATA,OX_API_KEY +``` + +## Default secured variables + +If you override SECURED_ENV_VARIABLES_DEFAULT, it replaces the default list, so it's better to only define SECURED_ENV_VARIABLES to add them to the default list ! + +SECURED_ENV_VARIABLES_DEFAULT contains: + +- GITHUB_TOKEN +- PAT +- SYSTEM_ACCESSTOKEN +- GIT_AUTHORIZATION_BEARER +- CI_JOB_TOKEN +- GITLAB_ACCESS_TOKEN_MEGALINTER +- GITLAB_CUSTOM_CERTIFICATE +- WEBHOOK_REPORTER_BEARER_TOKEN +- NODE_TOKEN +- NPM_TOKEN +- DOCKER_USERNAME +- DOCKER_PASSWORD +- CODECOV_TOKEN +- GCR_USERNAME +- GCR_PASSWORD +- SMTP_PASSWORD +- CI_SFDX_HARDIS_GITLAB_TOKEN +- (SFDX_CLIENT_ID_.*) +- (SFDX_CLIENT_KEY_.*) + +## Unhide variables for linters + +You can configure exceptions for a specific linter by defining **(linter-key)_UNSECURED_ENV_VARIABLES**. + +Variable names in this list won't be hidden to the linter commands. + +```yaml +TERRAFORM_TFLINT_UNSECURED_ENV_VARIABLES: + - GITHUB_TOKEN # Can contain string only, not regex +``` + + + diff --git a/docs/config-variables.md b/docs/config-variables.md new file mode 100644 index 00000000000..46b3053c051 --- /dev/null +++ b/docs/config-variables.md @@ -0,0 +1,61 @@ +--- +title: All Megalinter configuration common variables +description: List of common variables that you can use to customize MegaLinter behaviour +--- + + + + +# Common variables + +| **ENV VAR** | **Default Value** | **Notes** | +|-------------------------------------------------------------------|-----------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| **ADDITIONAL_EXCLUDED_DIRECTORIES** | \[\] | List of additional excluded directory basenames. they're excluded at any nested level. | +| [**APPLY_FIXES**](config-apply-fixes.md) | `none` | Activates formatting and autofix [(more info)](config-apply-fixes.md) | +| **CLEAR_REPORT_FOLDER** | `false` | Flag to clear files from report folder (usually megalinter-reports) before starting the linting process | +| **CONFIG_PROPERTIES_TO_APPEND** | \[\] | List of configuration properties to append their values (instead of replacing them) in case of using EXTENDS. | +| **DEFAULT_BRANCH** | `HEAD` | Deprecated: The name of the repository's default branch. | +| **DEFAULT_WORKSPACE** | `/tmp/lint` | The location containing files to lint if you are running locally. | +| **DISABLE_ERRORS** | `false` | Flag to have the linter complete with exit code 0 even if errors were detected. | +| [**DISABLE**](config-activation.md) | | List of disabled descriptors keys [(more info)](config-activation.md) | +| [**DISABLE_LINTERS**](config-activation.md) | | List of disabled linters keys [(more info)](config-activation.md) | +| [**DISABLE_ERRORS_LINTERS**](config-activation.md) | | List of enabled but not blocking linters keys [(more info)](config-activation.md) | +| [**ENABLE**](config-activation.md) | | List of enabled descriptors keys [(more info)](config-activation.md) | +| [**ENABLE_LINTERS**](config-activation.md) | | List of enabled linters keys [(more info)](config-activation.md) | +| **EXCLUDED_DIRECTORIES** | \[…many values…\] | List of excluded directory basenames. they're excluded at any nested level. | +| **EXTENDS** | | Base `mega-linter.yml` config file(s) to extend local configuration from. Can be a single URL or a list of `.mega-linter.yml` config files URLs. Later files take precedence. | +| **FAIL_IF_MISSING_LINTER_IN_FLAVOR** | `false` | If set to `true`, MegaLinter fails if a linter is missing in the selected flavor | +| **FAIL_IF_UPDATED_SOURCES** | `false` | If set to `true`, MegaLinter fails if a linter or formatter has autofixed sources, even if there are no errors | +| [**FILTER_REGEX_EXCLUDE**](config-filtering.md) | `none` | Regular expression defining which files will be excluded from linting [(more info)](config-filtering.md) .ex: `.*src/test.*`) | +| [**FILTER_REGEX_INCLUDE**](config-filtering.md) | `all` | Regular expression defining which files will be processed by linters [(more info)](config-filtering.md) .ex: `.*src/.*`) | +| **FLAVOR_SUGGESTIONS** | `true` | Provides suggestions about different MegaLinter flavors to use to improve runtime performances | +| **FORMATTERS_DISABLE_ERRORS** | `true` | Formatter errors will be reported as errors (and not warnings) if this variable is set to `false` | +| **GIT_AUTHORIZATION_BEARER** | | If set, calls git with **`Authorization: Bearer`+value** | +| **GITHUB_WORKSPACE** | | Base directory for `REPORT_OUTPUT_FOLDER`, for user-defined linter rules location, for location of linted files if `DEFAULT_WORKSPACE` isn't set | +| **IGNORE_GENERATED_FILES** | `false` | If set to `true`, MegaLinter will skip files containing `@generated` marker but without `@not-generated` marker (more info at [https://generated.at](https://generated.at/)) | +| **IGNORE_GITIGNORED_FILES** | `true` | If set to `true`, MegaLinter will skip files ignored by git using `.gitignore` file | +| **JAVASCRIPT_DEFAULT_STYLE** | `standard` | Javascript default style to check/apply. `standard`,`prettier` | +| **LINTER_RULES_PATH** | `.github/linters` | Directory for all linter configuration rules.
Can be a local folder or a remote URL (ex: `https://raw.githubusercontent.com/some_org/some_repo/mega-linter-rules` ) | +| **LOG_FILE** | `mega-linter.log` | The file name for outputting logs. All output is sent to the log file regardless of `LOG_LEVEL`. Use `none` to not generate this file. | +| **LOG_LEVEL** | `INFO` | How much output the script will generate to the console. One of `INFO`, `DEBUG`, `WARNING` or `ERROR`. | +| **MARKDOWN_DEFAULT_STYLE** | `markdownlint` | Markdown default style to check/apply. `markdownlint`,`remark-lint` | +| **MEGALINTER_CONFIG** | `.mega-linter.yml` | Name of MegaLinter configuration file. Can be defined remotely, in that case set this environment variable with the remote URL of `.mega-linter.yml` config file | +| **MEGALINTER_FILES_TO_LINT** | \[\] | Comma-separated list of files to analyze. Using this variable will bypass other file listing methods | +| **PARALLEL** | `true` | Process linters in parallel to improve overall MegaLinter performance. If true, linters of same language or formats are grouped in the same parallel process to avoid lock issues if fixing the same files | +| **PARALLEL_PROCESS_NUMBER** | | All available cores are used by default. If there are too many, you need to decrease the number of used cores in order to enhance performances (example: `4`) | +| [**PLUGINS**](plugins.md) | \[\] | List of plugin urls to install and run during MegaLinter run | +| [**POST_COMMANDS**](config-postcommands.md) | \[\] | Custom bash commands to run after linters | +| [**PRE_COMMANDS**](config-precommands.md) | \[\] | Custom bash commands to run before linters | +| **PRINT_ALPACA** | `true` | Enable printing alpaca image to console | +| **PRINT_ALL_FILES** | `false` | Display all files analyzed by the linter instead of only the number | +| **REPORT_OUTPUT_FOLDER** | `${GITHUB_WORKSPACE}/megalinter-reports` | Directory for generating report files. Set to `none` to not generate reports | +| [**SECURED_ENV_VARIABLES**](config-variables-security.md) | \[\] | Additional list of secured environment variables to hide when calling linters. | +| [**SECURED_ENV_VARIABLES_DEFAULT**](config-variables-security.md) | MegaLinter & CI platforms sensitive variables | List of secured environment variables to hide when calling linters. [Default list](config-variables-security.md). This is not recommended to override this variable, use SECURED_ENV_VARIABLES | +| **SHOW_ELAPSED_TIME** | `false` | Displays elapsed time in reports | +| **SHOW_SKIPPED_LINTERS** | `true` | Displays all disabled linters mega-linter could have run | +| **SKIP_CLI_LINT_MODES** | \[\] | Comma-separated list of cli_lint_modes. To use if you want to skip linters with some CLI lint modes (ex: `file,project`). Available values: `file`,`cli_lint_mode`,`project`. | +| **TYPESCRIPT_DEFAULT_STYLE** | `standard` | Typescript default style to check/apply. `standard`,`prettier` | +| **VALIDATE_ALL_CODEBASE** | `true` | Will parse the entire repository and find all files to validate across all types. **NOTE:** When set to `false`, only **new** or **edited** files will be parsed for validation. | + + + diff --git a/docs/configuration.md b/docs/configuration.md index 819d70b1703..6b0935d567f 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -1,6 +1,6 @@ --- title: MegaLinter configuration Guide -description: List of all configuration variables that can be used to customize the use of MegaLinter (activation, filtering, auto-update, pre-post commands...) +description: List of all configuration variables that can be used to customize the use of MegaLinter (activation, filtering, auto-update, pre-post commands…) --- @@ -8,10 +8,10 @@ description: List of all configuration variables that can be used to customize t # Configuration -MegaLinter configuration variables can be defined in a **.mega-linter.yml** file at the root of the repository or with **environment variables**. +MegaLinter configuration variables are defined in a **.mega-linter.yml** file at the root of the repository or with **environment variables**. You can see an example config file in this repo: [**.mega-linter.yml**](https://github.com/oxsecurity/megalinter/blob/main/.mega-linter.yml) -Configuration is assisted with auto-completion and validation in most commonly used IDEs, thanks to [JSON schema](https://megalinter.io/json-schemas/configuration.html) stored on [schemastore.org](https://www.schemastore.org/) +Configuration is assisted with autocompletion and validation in most commonly used IDEs, thanks to [JSON schema](https://megalinter.io/json-schemas/configuration.html) stored on [schemastore.org](https://www.schemastore.org/) - VSCode: You need a VSCode extension like [Red Hat YAML](https://marketplace.visualstudio.com/items?itemName=redhat.vscode-yaml) - IDEA family: Auto-completion natively supported @@ -20,56 +20,58 @@ Configuration is assisted with auto-completion and validation in most commonly u ## Common variables -| **ENV VAR** | **Default Value** | **Notes** | -|------------------------------------------------------------|------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| **ADDITIONAL_EXCLUDED_DIRECTORIES** | \[\] | List of additional excluded directory basenames. They are excluded at any nested level. | -| [**APPLY_FIXES**](configuration.md#apply-fixes) | `none` | Activates formatting and auto-fixing [(more info)](configuration.md#apply-fixes) | -| **CLEAR_REPORT_FOLDER** | `false` | Flag to clear files from report folder (usually megalinter-reports) before starting the linting process | -| **DEFAULT_BRANCH** | `HEAD` | Deprecated: The name of the repository's default branch. | -| **DEFAULT_WORKSPACE** | `/tmp/lint` | The location containing files to lint if you are running locally. | -| **DISABLE_ERRORS** | `false` | Flag to have the linter complete with exit code 0 even if errors were detected. | -| [**DISABLE**](#activation-and-deactivation) | | List of disabled descriptors keys [(more info)](#activation-and-deactivation) | -| [**DISABLE_LINTERS**](#activation-and-deactivation) | | List of disabled linters keys [(more info)](#activation-and-deactivation) | -| [**DISABLE_ERRORS_LINTERS**](#activation-and-deactivation) | | List of enabled but not blocking linters keys [(more info)](#activation-and-deactivation) | -| [**ENABLE**](#activation-and-deactivation) | | List of enabled descriptors keys [(more info)](#activation-and-deactivation) | -| [**ENABLE_LINTERS**](#activation-and-deactivation) | | List of enabled linters keys [(more info)](#activation-and-deactivation) | -| **EXCLUDED_DIRECTORIES** | \[...many values...\] | List of excluded directory basenames. They are excluded at any nested level. | -| **EXTENDS** | | Base `mega-linter.yml` config file(s) to extend local configuration from. Can be a single URL or a list of `.mega-linter.yml` config files URLs. Later files take precedence. | -| **FAIL_IF_MISSING_LINTER_IN_FLAVOR** | `false` | If set to `true`, MegaLinter fails if a linter is missing in the selected flavor | -| **FAIL_IF_UPDATED_SOURCES** | `false` | If set to `true`, MegaLinter fails if a linter or formatter has auto-fixed sources, even if there are no errors | -| [**FILTER_REGEX_EXCLUDE**](#filter-linted-files) | `none` | Regular expression defining which files will be excluded from linting [(more info)](#filter-linted-files) .ex: `.*src/test.*`) | -| [**FILTER_REGEX_INCLUDE**](#filter-linted-files) | `all` | Regular expression defining which files will be processed by linters [(more info)](#filter-linted-files) .ex: `.*src/.*`) | -| **FLAVOR_SUGGESTIONS** | `true` | Provides suggestions about different MegaLinter flavors to use to improve runtime performances | -| **FORMATTERS_DISABLE_ERRORS** | `true` | Formatter errors will be reported as errors (and not warnings) if this variable is set to `false` | -| **GIT_AUTHORIZATION_BEARER** | | If set, calls git with **`Authorization: Bearer`+value** | -| **GITHUB_WORKSPACE** | | Base directory for `REPORT_OUTPUT_FOLDER`, for user-defined linter rules location, for location of linted files if `DEFAULT_WORKSPACE` is not set | -| **IGNORE_GENERATED_FILES** | `false` | If set to `true`, MegaLinter will skip files containing `@generated` marker but without `@not-generated` marker (more info at [https://generated.at](https://generated.at/)) | -| **IGNORE_GITIGNORED_FILES** | `true` | If set to `true`, MegaLinter will skip files ignored by git using `.gitignore` file | -| **JAVASCRIPT_DEFAULT_STYLE** | `standard` | Javascript default style to check/apply. `standard`,`prettier` | -| **LINTER_RULES_PATH** | `.github/linters` | Directory for all linter configuration rules.
Can be a local folder or a remote URL (ex: `https://raw.githubusercontent.com/some_org/some_repo/mega-linter-rules` ) | -| **LOG_FILE** | `mega-linter.log` | The file name for outputting logs. All output is sent to the log file regardless of `LOG_LEVEL`. Use `none` to not generate this file. | -| **LOG_LEVEL** | `INFO` | How much output the script will generate to the console. One of `INFO`, `DEBUG`, `WARNING` or `ERROR`. | -| **MARKDOWN_DEFAULT_STYLE** | `markdownlint` | Markdown default style to check/apply. `markdownlint`,`remark-lint` | -| **MEGALINTER_CONFIG** | `.mega-linter.yml` | Name of MegaLinter configuration file. Can be defined remotely, in that case set this environment variable with the remote URL of `.mega-linter.yml` config file | -| **MEGALINTER_FILES_TO_LINT** | \[\] | Comma-separated list of files to analyze. Using this variable will bypass other file listing methods | -| **PARALLEL** | `true` | Process linters in parallel to improve overall MegaLinter performance. If true, linters of same language or formats are grouped in the same parallel process to avoid lock issues if fixing the same files | -| [**PLUGINS**](plugins.md) | \[\] | List of plugin urls to install and run during MegaLinter run | -| [**POST_COMMANDS**](#post-commands) | \[\] | Custom bash commands to run after linters | -| [**PRE_COMMANDS**](#pre-commands) | \[\] | Custom bash commands to run before linters | -| **PRINT_ALPACA** | `true` | Enable printing alpaca image to console | -| **PRINT_ALL_FILES** | `false` | Display all files analyzed by the linter instead of only the number | -| **REPORT_OUTPUT_FOLDER** | `${GITHUB_WORKSPACE}/megalinter-reports` | Directory for generating report files. Set to `none` to not generate reports | -| **SHOW_ELAPSED_TIME** | `false` | Displays elapsed time in reports | -| **SHOW_SKIPPED_LINTERS** | `true` | Displays all disabled linters mega-linter could have run | -| **SKIP_CLI_LINT_MODES** | \[\] | Comma-separated list of cli_lint_modes. To use if you want to skip linters with some CLI lint modes (ex: `file,project`). Available values: `file`,`cli_lint_mode`,`project`. | -| **TYPESCRIPT_DEFAULT_STYLE** | `standard` | Typescript default style to check/apply. `standard`,`prettier` | -| **VALIDATE_ALL_CODEBASE** | `true` | Will parse the entire repository and find all files to validate across all types. **NOTE:** When set to `false`, only **new** or **edited** files will be parsed for validation. | +| **ENV VAR** | **Default Value** | **Notes** | +|----------------------------------------------------------------------|-----------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| **ADDITIONAL_EXCLUDED_DIRECTORIES** | \[\] | List of additional excluded directory basenames. they're excluded at any nested level. | +| [**APPLY_FIXES**](configuration.md#apply-fixes) | `none` | Activates formatting and autofix [(more info)](configuration.md#apply-fixes) | +| **CLEAR_REPORT_FOLDER** | `false` | Flag to clear files from report folder (usually megalinter-reports) before starting the linting process | +| **DEFAULT_BRANCH** | `HEAD` | Deprecated: The name of the repository's default branch. | +| **DEFAULT_WORKSPACE** | `/tmp/lint` | The location containing files to lint if you are running locally. | +| **DISABLE_ERRORS** | `false` | Flag to have the linter complete with exit code 0 even if errors were detected. | +| [**DISABLE**](#activation-and-deactivation) | | List of disabled descriptors keys [(more info)](#activation-and-deactivation) | +| [**DISABLE_LINTERS**](#activation-and-deactivation) | | List of disabled linters keys [(more info)](#activation-and-deactivation) | +| [**DISABLE_ERRORS_LINTERS**](#activation-and-deactivation) | | List of enabled but not blocking linters keys [(more info)](#activation-and-deactivation) | +| [**ENABLE**](#activation-and-deactivation) | | List of enabled descriptors keys [(more info)](#activation-and-deactivation) | +| [**ENABLE_LINTERS**](#activation-and-deactivation) | | List of enabled linters keys [(more info)](#activation-and-deactivation) | +| **EXCLUDED_DIRECTORIES** | \[…many values…\] | List of excluded directory basenames. they're excluded at any nested level. | +| **EXTENDS** | | Base `mega-linter.yml` config file(s) to extend local configuration from. Can be a single URL or a list of `.mega-linter.yml` config files URLs. Later files take precedence. | +| **FAIL_IF_MISSING_LINTER_IN_FLAVOR** | `false` | If set to `true`, MegaLinter fails if a linter is missing in the selected flavor | +| **FAIL_IF_UPDATED_SOURCES** | `false` | If set to `true`, MegaLinter fails if a linter or formatter has autofixed sources, even if there are no errors | +| [**FILTER_REGEX_EXCLUDE**](#filter-linted-files) | `none` | Regular expression defining which files will be excluded from linting [(more info)](#filter-linted-files) .ex: `.*src/test.*`) | +| [**FILTER_REGEX_INCLUDE**](#filter-linted-files) | `all` | Regular expression defining which files will be processed by linters [(more info)](#filter-linted-files) .ex: `.*src/.*`) | +| **FLAVOR_SUGGESTIONS** | `true` | Provides suggestions about different MegaLinter flavors to use to improve runtime performances | +| **FORMATTERS_DISABLE_ERRORS** | `true` | Formatter errors will be reported as errors (and not warnings) if this variable is set to `false` | +| **GIT_AUTHORIZATION_BEARER** | | If set, calls git with **`Authorization: Bearer`+value** | +| **GITHUB_WORKSPACE** | | Base directory for `REPORT_OUTPUT_FOLDER`, for user-defined linter rules location, for location of linted files if `DEFAULT_WORKSPACE` isn't set | +| **IGNORE_GENERATED_FILES** | `false` | If set to `true`, MegaLinter will skip files containing `@generated` marker but without `@not-generated` marker (more info at [https://generated.at](https://generated.at/)) | +| **IGNORE_GITIGNORED_FILES** | `true` | If set to `true`, MegaLinter will skip files ignored by git using `.gitignore` file | +| **JAVASCRIPT_DEFAULT_STYLE** | `standard` | Javascript default style to check/apply. `standard`,`prettier` | +| **LINTER_RULES_PATH** | `.github/linters` | Directory for all linter configuration rules.
Can be a local folder or a remote URL (ex: `https://raw.githubusercontent.com/some_org/some_repo/mega-linter-rules` ) | +| **LOG_FILE** | `mega-linter.log` | The file name for outputting logs. All output is sent to the log file regardless of `LOG_LEVEL`. Use `none` to not generate this file. | +| **LOG_LEVEL** | `INFO` | How much output the script will generate to the console. One of `INFO`, `DEBUG`, `WARNING` or `ERROR`. | +| **MARKDOWN_DEFAULT_STYLE** | `markdownlint` | Markdown default style to check/apply. `markdownlint`,`remark-lint` | +| **MEGALINTER_CONFIG** | `.mega-linter.yml` | Name of MegaLinter configuration file. Can be defined remotely, in that case set this environment variable with the remote URL of `.mega-linter.yml` config file | +| **MEGALINTER_FILES_TO_LINT** | \[\] | Comma-separated list of files to analyze. Using this variable will bypass other file listing methods | +| **PARALLEL** | `true` | Process linters in parallel to improve overall MegaLinter performance. If true, linters of same language or formats are grouped in the same parallel process to avoid lock issues if fixing the same files | +| [**PLUGINS**](plugins.md) | \[\] | List of plugin urls to install and run during MegaLinter run | +| [**POST_COMMANDS**](#post-commands) | \[\] | Custom bash commands to run after linters | +| [**PRE_COMMANDS**](#pre-commands) | \[\] | Custom bash commands to run before linters | +| **PRINT_ALPACA** | `true` | Enable printing alpaca image to console | +| **PRINT_ALL_FILES** | `false` | Display all files analyzed by the linter instead of only the number | +| **REPORT_OUTPUT_FOLDER** | `${GITHUB_WORKSPACE}/megalinter-reports` | Directory for generating report files. Set to `none` to not generate reports | +| [**SECURED_ENV_VARIABLES**](#environment-variables-security) | \[\] | Additional list of secured environment variables to hide when calling linters. | +| [**SECURED_ENV_VARIABLES_DEFAULT**](#environment-variables-security) | MegaLinter & CI platforms sensitive variables | List of secured environment variables to hide when calling linters. [Default list](#environment-variables-security). This is not recommended to override this variable, use SECURED_ENV_VARIABLES | +| **SHOW_ELAPSED_TIME** | `false` | Displays elapsed time in reports | +| **SHOW_SKIPPED_LINTERS** | `true` | Displays all disabled linters mega-linter could have run | +| **SKIP_CLI_LINT_MODES** | \[\] | Comma-separated list of cli_lint_modes. To use if you want to skip linters with some CLI lint modes (ex: `file,project`). Available values: `file`,`cli_lint_mode`,`project`. | +| **TYPESCRIPT_DEFAULT_STYLE** | `standard` | Typescript default style to check/apply. `standard`,`prettier` | +| **VALIDATE_ALL_CODEBASE** | `true` | Will parse the entire repository and find all files to validate across all types. **NOTE:** When set to `false`, only **new** or **edited** files will be parsed for validation. | ## Activation and deactivation MegaLinter have all linters enabled by default, but allows to enable only some, or disable only some -- If `ENABLE` is not set, all descriptors are activated by default. If set, all linters of listed descriptors will be activated by default +- If `ENABLE` isn't set, all descriptors are activated by default. If set, all linters of listed descriptors will be activated by default - If `ENABLE_LINTERS` is set, only listed linters will be processed - If `DISABLE` is set, the linters in the listed descriptors will be skipped - If `DISABLE_LINTERS` is set, the listed linters will be skipped @@ -107,8 +109,8 @@ You can apply filters to a single linter by defining variable `_FILT Examples: - Lint only src folder: `FILTER_REGEX_INCLUDE: (src/)` -- Do not lint files inside test and example folders: `FILTER_REGEX_EXCLUDE: (test/|examples/)` -- Do not lint javascript files inside test folder: `FILTER_REGEX_EXCLUDE: (test/.*\.js)` +- Don't lint files inside test and example folders: `FILTER_REGEX_EXCLUDE: (test/|examples/)` +- Don't lint javascript files inside test folder: `FILTER_REGEX_EXCLUDE: (test/.*\.js)` Warning: not applicable with linters using CLI lint mode `project` ([see details](#cli-lint-mode)) @@ -123,21 +125,31 @@ Only for GitHub Action Workflow file if you use it: - **APPLY_FIXES_EVENT**: `all`, `push`, `pull_request`, `none` _(use none in case of use of [Updated sources reporter](reporters/UpdatedSourcesReporter.md))_ - **APPLY_FIXES_MODE**: `commit` to create a new commit and push it on the same branch, or `pull_request` to create a new PR targeting the branch. -Notes: +### Apply fixes issues -- You can use [**Updated sources reporter**](reporters/UpdatedSourcesReporter.md) if you do not want fixes to be automatically applied on git branch, but **download them in a zipped file** and manually **extract them in your project** -- If used, **APPLY_FIXES_EVENT** and **APPLY_FIXES_MODE** can not be defined in `.mega-linter.yml`config file, they must be set as environment variables +You may see **github permission errors**, or workflows not run on the new commit. + +To solve these issues, you can apply one of the following solutions. + +- Method 1: The most secured + - [Create Fine Grained Personal Access Token](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token#creating-a-fine-grained-personal-access-token), scoped only on your repository and then copy the PAT value + - [Define environment secret variable](https://docs.github.com/en/actions/security-guides/encrypted-secrets#creating-encrypted-secrets-for-an-environment) named **PAT** on your repository, and paste the PAT value + - Update your Github Actions Workflow to add the environment name +- Method 2: Easier, but any contributor with write access can see your Personal Access Token + - [Create Classic Personal Access Token](https://docs.github.com/en/free-pro-team@latest/github/authenticating-to-github/creating-a-personal-access-token#creating-a-token), then copy the PAT value + - [Define secret variable](https://docs.github.com/en/free-pro-team@latest/actions/reference/encrypted-secrets#creating-encrypted-secrets-for-a-repository) named **PAT** on your repository, and paste the PAT value + +### Notes + +- You can use [**Updated sources reporter**](reporters/UpdatedSourcesReporter.md) if you don't want fixes to be automatically applied on git branch, but **download them in a zipped file** and manually **extract them in your project** +- If used, **APPLY_FIXES_EVENT** and **APPLY_FIXES_MODE** can not be defined in `.mega-linter.yml`config file, they must be set as environment variables - If you use **APPLY_FIXES**, add the following line in your `.gitignore file` ```shell megalinter-reports/ ``` -- You may see **github permission errors**, or workflows not run on the new commit. To solve these issues: - - [Create Personal Access Token](https://docs.github.com/en/free-pro-team@latest/github/authenticating-to-github/creating-a-personal-access-token#creating-a-token), then copy the PAT value - - [Define secret variable](https://docs.github.com/en/free-pro-team@latest/actions/reference/encrypted-secrets#creating-encrypted-secrets-for-a-repository) named **PAT** on your repository, and paste the PAT value - ## Linter specific variables See variables related to a single linter behavior in [linters documentations](supported-linters.md) @@ -170,6 +182,56 @@ POST_COMMANDS: cwd: "workspace" # Will be run at the root of the workspace (usually your repository root) ``` +## Environment variables security + +MegaLinter runs on a docker image and calls the linters via command line to gather their results. + +If you run it from your **CI/CD pipelines**, the docker image may have **access to your environment variables, that can contain secrets** defined in CI/CD variables. + +As it can be complicated to **trust** the authors of all the open-source linters, **MegaLinter removes variables from the environment used to call linters**. + +Thanks to this feature, you only need to [**trust MegaLinter and its internal python dependencies**](https://github.com/oxsecurity/megalinter/blob/main/megalinter/setup.py), but there is **no need to trust all the linters that are used** ! + +You can add secured variables to the default list using configuration property **SECURED_ENV_VARIABLES** in .mega-linter.yml or in an environment variable (priority is given to ENV variables above `.mega-linter.yml` property). + +SECURED_ENV_VARIABLES_DEFAULT contains: + +- GITHUB_TOKEN +- PAT +- SYSTEM_ACCESSTOKEN +- GIT_AUTHORIZATION_BEARER +- CI_JOB_TOKEN +- GITLAB_ACCESS_TOKEN_MEGALINTER +- GITLAB_CUSTOM_CERTIFICATE +- WEBHOOK_REPORTER_BEARER_TOKEN +- NPM_TOKEN +- DOCKER_USERNAME +- DOCKER_PASSWORD +- CODECOV_TOKEN +- GCR_USERNAME +- GCR_PASSWORD +- SMTP_PASSWORD + +Example of adding extra secured variables `.mega-linter.yml`: + +```yaml +SECURED_ENV_VARIABLES: + - MY_SECRET_TOKEN + - ANOTHER_VAR_CONTAINING_SENSITIVE_DATA + - OX_API_KEY +``` + +Example of adding extra secured variables in CI variables, so they can not be overridden in .mega-linter.yml: + +```shell +SECURED_ENV_VARIABLES=MY_SECRET_TOKEN,ANOTHER_VAR_CONTAINING_SENSITIVE_DATA,OX_API_KEY +``` + +Notes: + +- If you override SECURED_ENV_VARIABLES_DEFAULT, it replaces the default list, so it's better to only define SECURED_ENV_VARIABLES to add them to the default list ! +- Environment variables are secured for each command line called (linters, plugins, sarif formatter...) except for [PRE_COMMANDS](#pre-commands) , as you might need secured values within their code. + ## CLI lint mode Each linter has a lint mode by default, visible in its MegaLinter documentation ([example](https://megalinter.io/latest/descriptors/repository_trivy/#how-the-linting-is-performed)): @@ -183,11 +245,11 @@ You can override the CLI_LINT_MODE by using configuration variable for each lint - Linters with `file` default lint mode can not be overridden to `list_of_files` - Linters with `project` default lint mode can not be overridden to `list_of_files` or `file` -Allowing `file` or `list_of_files` to be overridden to `project` is mostly for workarounds, for example with linters that have a problem to find their config file when the current folder is not the repo root. +Allowing `file` or `list_of_files` to be overridden to `project` is mostly for workarounds, for example with linters that have a problem to find their config file when the current folder isn't the repo root. Special considerations: -- As list of files is not sent to the linter command, linters using `project` lint mode do not take in account some variables like FILTER_REGEX_INCLUDE and FILTER_REGEX_EXCLUDE. For those linters, you must check their documentation to define ignore configuration as it is awaited by the linter (for example with a `.secretlintignore` file for secretlint) +- As list of files isn't sent to the linter command, linters using `project` lint mode don't take in account some variables like FILTER_REGEX_INCLUDE and FILTER_REGEX_EXCLUDE. For those linters, you must check their documentation to define ignore configuration as it's awaited by the linter (for example with a `.secretlintignore` file for secretlint) diff --git a/docs/descriptors/action.md b/docs/descriptors/action.md index 447b9db0d6c..a5cf0bc75e4 100644 --- a/docs/descriptors/action.md +++ b/docs/descriptors/action.md @@ -3,7 +3,7 @@ title: ACTION linters in MegaLinter description: actionlint is available to analyze ACTION files in MegaLinter --- - + # ACTION @@ -21,8 +21,10 @@ description: actionlint is available to analyze ACTION files in MegaLinter ## Configuration in MegaLinter -| Variable | Description | Default value | -|-----------------------------|-------------------------------|---------------| -| ACTION_FILTER_REGEX_INCLUDE | Custom regex including filter | | -| ACTION_FILTER_REGEX_EXCLUDE | Custom regex excluding filter | | +| Variable | Description | Default value | +|-----------------------------|-------------------------------------------------|---------------| +| ACTION_PRE_COMMANDS | List of bash commands to run before the linters | None | +| ACTION_POST_COMMANDS | List of bash commands to run after the linters | None | +| ACTION_FILTER_REGEX_INCLUDE | Custom regex including filter | | +| ACTION_FILTER_REGEX_EXCLUDE | Custom regex excluding filter | | diff --git a/docs/descriptors/action_actionlint.md b/docs/descriptors/action_actionlint.md index 3a34207a249..6773ec6f54d 100644 --- a/docs/descriptors/action_actionlint.md +++ b/docs/descriptors/action_actionlint.md @@ -3,7 +3,7 @@ title: actionlint configuration in MegaLinter description: How to use actionlint (configure, ignore files, ignore errors, help & version documentations) to analyze ACTION files --- - + # actionlint [![GitHub stars](https://img.shields.io/github/stars/rhysd/actionlint?cacheSeconds=3600)](https://github.com/rhysd/actionlint) [![GitHub release (latest SemVer)](https://img.shields.io/github/v/release/rhysd/actionlint?sort=semver)](https://github.com/rhysd/actionlint/releases) [![GitHub last commit](https://img.shields.io/github/last-commit/rhysd/actionlint)](https://github.com/rhysd/actionlint/commits) [![GitHub commit activity](https://img.shields.io/github/commit-activity/y/rhysd/actionlint)](https://github.com/rhysd/actionlint/graphs/commit-activity/) [![GitHub contributors](https://img.shields.io/github/contributors/rhysd/actionlint)](https://github.com/rhysd/actionlint/graphs/contributors/) @@ -11,7 +11,7 @@ Static checker for GitHub Actions workflow files ## actionlint documentation -- Version in MegaLinter: **1.6.23** +- Version in MegaLinter: **1.7.1** - Visit [Official Web Site](https://rhysd.github.io/actionlint/){target=_blank} - See [How to configure actionlint rules](https://github.com/rhysd/actionlint/blob/main/docs/config.md){target=_blank} @@ -19,12 +19,13 @@ Static checker for GitHub Actions workflow files ## Configuration in MegaLinter -- Enable actionlint by adding `ACTION_ACTIONLINT` in [ENABLE_LINTERS variable](https://megalinter.io/6.22.2/configuration/#activation-and-deactivation) -- Disable actionlint by adding `ACTION_ACTIONLINT` in [DISABLE_LINTERS variable](https://megalinter.io/6.22.2/configuration/#activation-and-deactivation) +- Enable actionlint by adding `ACTION_ACTIONLINT` in [ENABLE_LINTERS variable](https://megalinter.io/7.13.0/configuration/#activation-and-deactivation) +- Disable actionlint by adding `ACTION_ACTIONLINT` in [DISABLE_LINTERS variable](https://megalinter.io/7.13.0/configuration/#activation-and-deactivation) | Variable | Description | Default value | |-----------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------| | ACTION_ACTIONLINT_ARGUMENTS | User custom arguments to add in linter CLI call
Ex: `-s --foo "bar"` | | +| ACTION_ACTIONLINT_COMMAND_REMOVE_ARGUMENTS | User custom arguments to remove from command line before calling the linter
Ex: `-s --foo "bar"` | | | ACTION_ACTIONLINT_FILTER_REGEX_INCLUDE | Custom regex including filter
Ex: `(src\|lib)` | Include every file | | ACTION_ACTIONLINT_FILTER_REGEX_EXCLUDE | Custom regex excluding filter
Ex: `(test\|examples)` | Exclude no file | | ACTION_ACTIONLINT_CLI_LINT_MODE | Override default CLI lint mode
- `file`: Calls the linter for each file
- `list_of_files`: Call the linter with the list of files as argument
- `project`: Call the linter from the root of the project | `list_of_files` | @@ -32,32 +33,36 @@ Static checker for GitHub Actions workflow files | ACTION_ACTIONLINT_FILE_NAMES_REGEX | File name regex filters. Regular expression list for filtering files by their base names using regex full match. Empty list includes all files
Ex: `["Dockerfile(-.+)?", "Jenkinsfile"]` | Include every file | | ACTION_ACTIONLINT_PRE_COMMANDS | List of bash commands to run before the linter | None | | ACTION_ACTIONLINT_POST_COMMANDS | List of bash commands to run after the linter | None | +| ACTION_ACTIONLINT_UNSECURED_ENV_VARIABLES | List of env variables explicitly not filtered before calling ACTION_ACTIONLINT and its pre/post commands | None | | ACTION_ACTIONLINT_CONFIG_FILE | actionlint configuration file name
Use `LINTER_DEFAULT` to let the linter find it | `actionlint.yml` | | ACTION_ACTIONLINT_RULES_PATH | Path where to find linter configuration file | Workspace folder, then MegaLinter default rules | | ACTION_ACTIONLINT_DISABLE_ERRORS | Run linter but consider errors as warnings | `false` | | ACTION_ACTIONLINT_DISABLE_ERRORS_IF_LESS_THAN | Maximum number of errors allowed | `0` | -| ACTION_DIRECTORY | Directory containing ACTION files | `.github/workflows` | +| ACTION_ACTIONLINT_CLI_EXECUTABLE | Override CLI executable | `['actionlint']` | +| ACTION_DIRECTORY | Directory containing ACTION files (use `any` to always activate the linter) | `.github/workflows` | ## MegaLinter Flavours This linter is available in the following flavours -| | Flavor | Description | Embedded linters | Info | -|:--------------------------------------------------------------------------------------------------------------------------------------------------------:|:---------------------------------------------------------------------|:------------------------------------------------------|:----------------:|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:| -| | [all](https://megalinter.io/6.22.2/supported-linters/) | Default MegaLinter Flavor | 114 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter) | -| | [cupcake](https://megalinter.io/6.22.2/flavors/cupcake/) | MegaLinter for the most commonly used languages | 82 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-cupcake/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-cupcake) | -| | [documentation](https://megalinter.io/6.22.2/flavors/documentation/) | MegaLinter for documentation projects | 48 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-documentation/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-documentation) | -| | [dotnet](https://megalinter.io/6.22.2/flavors/dotnet/) | Optimized for C, C++, C# or VB based projects | 60 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-dotnet/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-dotnet) | -| | [go](https://megalinter.io/6.22.2/flavors/go/) | Optimized for GO based projects | 50 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-go/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-go) | -| | [java](https://megalinter.io/6.22.2/flavors/java/) | Optimized for JAVA based projects | 51 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-java/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-java) | -| | [javascript](https://megalinter.io/6.22.2/flavors/javascript/) | Optimized for JAVASCRIPT or TYPESCRIPT based projects | 57 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-javascript/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-javascript) | -| | [php](https://megalinter.io/6.22.2/flavors/php/) | Optimized for PHP based projects | 51 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-php/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-php) | -| | [python](https://megalinter.io/6.22.2/flavors/python/) | Optimized for PYTHON based projects | 59 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-python/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-python) | -| | [ruby](https://megalinter.io/6.22.2/flavors/ruby/) | Optimized for RUBY based projects | 48 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-ruby/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-ruby) | -| | [rust](https://megalinter.io/6.22.2/flavors/rust/) | Optimized for RUST based projects | 48 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-rust/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-rust) | -| | [salesforce](https://megalinter.io/6.22.2/flavors/salesforce/) | Optimized for Salesforce based projects | 51 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-salesforce/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-salesforce) | -| | [swift](https://megalinter.io/6.22.2/flavors/swift/) | Optimized for SWIFT based projects | 48 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-swift/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-swift) | -| | [terraform](https://megalinter.io/6.22.2/flavors/terraform/) | Optimized for TERRAFORM based projects | 53 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-terraform/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-terraform) | +| | Flavor | Description | Embedded linters | Info | +|:--------------------------------------------------------------------------------------------------------------------------------------------------------:|:---------------------------------------------------------------------|:---------------------------------------------------------|:----------------:|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:| +| | [all](https://megalinter.io/7.13.0/supported-linters/) | Default MegaLinter Flavor | 125 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter) | +| | [c_cpp](https://megalinter.io/7.13.0/flavors/c_cpp/) | Optimized for pure C/C++ projects | 56 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-c_cpp/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-c_cpp) | +| | [cupcake](https://megalinter.io/7.13.0/flavors/cupcake/) | MegaLinter for the most commonly used languages | 84 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-cupcake/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-cupcake) | +| | [documentation](https://megalinter.io/7.13.0/flavors/documentation/) | MegaLinter for documentation projects | 51 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-documentation/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-documentation) | +| | [dotnet](https://megalinter.io/7.13.0/flavors/dotnet/) | Optimized for C, C++, C# or VB based projects | 63 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-dotnet/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-dotnet) | +| | [dotnetweb](https://megalinter.io/7.13.0/flavors/dotnetweb/) | Optimized for C, C++, C# or VB based projects with JS/TS | 72 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-dotnetweb/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-dotnetweb) | +| | [go](https://megalinter.io/7.13.0/flavors/go/) | Optimized for GO based projects | 53 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-go/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-go) | +| | [java](https://megalinter.io/7.13.0/flavors/java/) | Optimized for JAVA based projects | 54 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-java/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-java) | +| | [javascript](https://megalinter.io/7.13.0/flavors/javascript/) | Optimized for JAVASCRIPT or TYPESCRIPT based projects | 61 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-javascript/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-javascript) | +| | [php](https://megalinter.io/7.13.0/flavors/php/) | Optimized for PHP based projects | 56 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-php/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-php) | +| | [python](https://megalinter.io/7.13.0/flavors/python/) | Optimized for PYTHON based projects | 64 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-python/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-python) | +| | [ruby](https://megalinter.io/7.13.0/flavors/ruby/) | Optimized for RUBY based projects | 52 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-ruby/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-ruby) | +| | [rust](https://megalinter.io/7.13.0/flavors/rust/) | Optimized for RUST based projects | 52 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-rust/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-rust) | +| | [salesforce](https://megalinter.io/7.13.0/flavors/salesforce/) | Optimized for Salesforce based projects | 56 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-salesforce/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-salesforce) | +| | [swift](https://megalinter.io/7.13.0/flavors/swift/) | Optimized for SWIFT based projects | 52 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-swift/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-swift) | +| | [terraform](https://megalinter.io/7.13.0/flavors/terraform/) | Optimized for TERRAFORM based projects | 56 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-terraform/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-terraform) | ## Behind the scenes @@ -107,7 +112,7 @@ Usage: actionlint [FLAGS] [FILES...] [-] Documents: - https://github.com/rhysd/actionlint/tree/main/docs + https://github.com/rhysd/actionlint/tree/v1.7.1/docs Flags: -color @@ -142,13 +147,15 @@ Flags: - Dockerfile commands : ```dockerfile -FROM rhysd/actionlint:latest as actionlint +# renovate: datasource=docker depName=rhysd/actionlint +ARG ACTION_ACTIONLINT_VERSION=1.7.1 +# renovate: datasource=docker depName=koalaman/shellcheck +ARG BASH_SHELLCHECK_VERSION=v0.10.0 +FROM rhysd/actionlint:${ACTION_ACTIONLINT_VERSION} as actionlint # shellcheck is a dependency for actionlint - -FROM koalaman/shellcheck:stable as shellcheck +FROM koalaman/shellcheck:${BASH_SHELLCHECK_VERSION} as shellcheck COPY --link --from=actionlint /usr/local/bin/actionlint /usr/bin/actionlint # shellcheck is a dependency for actionlint - COPY --link --from=shellcheck /bin/shellcheck /usr/bin/shellcheck ``` diff --git a/docs/descriptors/ansible.md b/docs/descriptors/ansible.md index f1a8295b3fc..dd797333b07 100644 --- a/docs/descriptors/ansible.md +++ b/docs/descriptors/ansible.md @@ -3,7 +3,7 @@ title: ANSIBLE linters in MegaLinter description: ansible-lint is available to analyze ANSIBLE files in MegaLinter --- - + # ANSIBLE @@ -21,8 +21,10 @@ description: ansible-lint is available to analyze ANSIBLE files in MegaLinter ## Configuration in MegaLinter -| Variable | Description | Default value | -|------------------------------|-------------------------------|---------------| -| ANSIBLE_FILTER_REGEX_INCLUDE | Custom regex including filter | | -| ANSIBLE_FILTER_REGEX_EXCLUDE | Custom regex excluding filter | | +| Variable | Description | Default value | +|------------------------------|-------------------------------------------------|---------------| +| ANSIBLE_PRE_COMMANDS | List of bash commands to run before the linters | None | +| ANSIBLE_POST_COMMANDS | List of bash commands to run after the linters | None | +| ANSIBLE_FILTER_REGEX_INCLUDE | Custom regex including filter | | +| ANSIBLE_FILTER_REGEX_EXCLUDE | Custom regex excluding filter | | diff --git a/docs/descriptors/ansible_ansible_lint.md b/docs/descriptors/ansible_ansible_lint.md index b4dce8edd71..59fcbf1485d 100644 --- a/docs/descriptors/ansible_ansible_lint.md +++ b/docs/descriptors/ansible_ansible_lint.md @@ -3,15 +3,16 @@ title: ansible-lint configuration in MegaLinter description: How to use ansible-lint (configure, ignore files, ignore errors, help & version documentations) to analyze ANSIBLE files --- - + # ansible-lint [![GitHub stars](https://img.shields.io/github/stars/ansible/ansible-lint?cacheSeconds=3600)](https://github.com/ansible/ansible-lint) ![sarif](https://shields.io/badge/-SARIF-orange) [![GitHub release (latest SemVer)](https://img.shields.io/github/v/release/ansible/ansible-lint?sort=semver)](https://github.com/ansible/ansible-lint/releases) [![GitHub last commit](https://img.shields.io/github/last-commit/ansible/ansible-lint)](https://github.com/ansible/ansible-lint/commits) [![GitHub commit activity](https://img.shields.io/github/commit-activity/y/ansible/ansible-lint)](https://github.com/ansible/ansible-lint/graphs/commit-activity/) [![GitHub contributors](https://img.shields.io/github/contributors/ansible/ansible-lint)](https://github.com/ansible/ansible-lint/graphs/contributors/) ## ansible-lint documentation -- Version in MegaLinter: **6.14.4** +- Version in MegaLinter: **24.6.1** - Visit [Official Web Site](https://ansible-lint.readthedocs.io/){target=_blank} - See [How to configure ansible-lint rules](https://ansible-lint.readthedocs.io/configuring/#configuration-file){target=_blank} + - If custom `.ansible-lint` config file isn't found, [.ansible-lint](https://github.com/oxsecurity/megalinter/tree/main/TEMPLATES/.ansible-lint){target=_blank} will be used - See [How to disable ansible-lint rules in files](https://ansible-lint.readthedocs.io/usage/#muting-warnings-to-avoid-false-positives){target=_blank} - See [Index of problems detected by ansible-lint](https://ansible-lint.readthedocs.io/rules/){target=_blank} @@ -19,51 +20,55 @@ description: How to use ansible-lint (configure, ignore files, ignore errors, he ## Configuration in MegaLinter -- Enable ansible-lint by adding `ANSIBLE_ANSIBLE_LINT` in [ENABLE_LINTERS variable](https://megalinter.io/6.22.2/configuration/#activation-and-deactivation) -- Disable ansible-lint by adding `ANSIBLE_ANSIBLE_LINT` in [DISABLE_LINTERS variable](https://megalinter.io/6.22.2/configuration/#activation-and-deactivation) +- Enable ansible-lint by adding `ANSIBLE_ANSIBLE_LINT` in [ENABLE_LINTERS variable](https://megalinter.io/7.13.0/configuration/#activation-and-deactivation) +- Disable ansible-lint by adding `ANSIBLE_ANSIBLE_LINT` in [DISABLE_LINTERS variable](https://megalinter.io/7.13.0/configuration/#activation-and-deactivation) | Variable | Description | Default value | |--------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------| | ANSIBLE_ANSIBLE_LINT_ARGUMENTS | User custom arguments to add in linter CLI call
Ex: `-s --foo "bar"` | | +| ANSIBLE_ANSIBLE_LINT_COMMAND_REMOVE_ARGUMENTS | User custom arguments to remove from command line before calling the linter
Ex: `-s --foo "bar"` | | | ANSIBLE_ANSIBLE_LINT_FILE_EXTENSIONS | Allowed file extensions. `"*"` matches any extension, `""` matches empty extension. Empty list excludes all files
Ex: `[".py", ""]` | `[".yml", ".yaml"]` | | ANSIBLE_ANSIBLE_LINT_FILE_NAMES_REGEX | File name regex filters. Regular expression list for filtering files by their base names using regex full match. Empty list includes all files
Ex: `["Dockerfile(-.+)?", "Jenkinsfile"]` | Include every file | | ANSIBLE_ANSIBLE_LINT_PRE_COMMANDS | List of bash commands to run before the linter | None | | ANSIBLE_ANSIBLE_LINT_POST_COMMANDS | List of bash commands to run after the linter | None | +| ANSIBLE_ANSIBLE_LINT_UNSECURED_ENV_VARIABLES | List of env variables explicitly not filtered before calling ANSIBLE_ANSIBLE_LINT and its pre/post commands | None | | ANSIBLE_ANSIBLE_LINT_CONFIG_FILE | ansible-lint configuration file name
Use `LINTER_DEFAULT` to let the linter find it | `.ansible-lint` | | ANSIBLE_ANSIBLE_LINT_RULES_PATH | Path where to find linter configuration file | Workspace folder, then MegaLinter default rules | | ANSIBLE_ANSIBLE_LINT_DISABLE_ERRORS | Run linter but consider errors as warnings | `false` | | ANSIBLE_ANSIBLE_LINT_DISABLE_ERRORS_IF_LESS_THAN | Maximum number of errors allowed | `0` | -| ANSIBLE_DIRECTORY | Directory containing ANSIBLE files | `ansible` | +| ANSIBLE_ANSIBLE_LINT_CLI_EXECUTABLE | Override CLI executable | `['ansible-lint']` | ## MegaLinter Flavours This linter is available in the following flavours -| | Flavor | Description | Embedded linters | Info | -|:--------------------------------------------------------------------------------------------------------------------------------------------------------:|:---------------------------------------------------------------------|:------------------------------------------------------|:----------------:|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:| -| | [all](https://megalinter.io/6.22.2/supported-linters/) | Default MegaLinter Flavor | 114 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter) | -| | [cupcake](https://megalinter.io/6.22.2/flavors/cupcake/) | MegaLinter for the most commonly used languages | 82 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-cupcake/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-cupcake) | -| | [documentation](https://megalinter.io/6.22.2/flavors/documentation/) | MegaLinter for documentation projects | 48 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-documentation/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-documentation) | -| | [dotnet](https://megalinter.io/6.22.2/flavors/dotnet/) | Optimized for C, C++, C# or VB based projects | 60 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-dotnet/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-dotnet) | -| | [go](https://megalinter.io/6.22.2/flavors/go/) | Optimized for GO based projects | 50 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-go/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-go) | -| | [java](https://megalinter.io/6.22.2/flavors/java/) | Optimized for JAVA based projects | 51 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-java/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-java) | -| | [javascript](https://megalinter.io/6.22.2/flavors/javascript/) | Optimized for JAVASCRIPT or TYPESCRIPT based projects | 57 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-javascript/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-javascript) | -| | [php](https://megalinter.io/6.22.2/flavors/php/) | Optimized for PHP based projects | 51 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-php/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-php) | -| | [python](https://megalinter.io/6.22.2/flavors/python/) | Optimized for PYTHON based projects | 59 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-python/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-python) | -| | [ruby](https://megalinter.io/6.22.2/flavors/ruby/) | Optimized for RUBY based projects | 48 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-ruby/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-ruby) | -| | [rust](https://megalinter.io/6.22.2/flavors/rust/) | Optimized for RUST based projects | 48 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-rust/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-rust) | -| | [salesforce](https://megalinter.io/6.22.2/flavors/salesforce/) | Optimized for Salesforce based projects | 51 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-salesforce/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-salesforce) | -| | [security](https://megalinter.io/6.22.2/flavors/security/) | Optimized for security | 22 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-security/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-security) | -| | [swift](https://megalinter.io/6.22.2/flavors/swift/) | Optimized for SWIFT based projects | 48 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-swift/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-swift) | -| | [terraform](https://megalinter.io/6.22.2/flavors/terraform/) | Optimized for TERRAFORM based projects | 53 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-terraform/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-terraform) | +| | Flavor | Description | Embedded linters | Info | +|:--------------------------------------------------------------------------------------------------------------------------------------------------------:|:---------------------------------------------------------------------|:---------------------------------------------------------|:----------------:|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:| +| | [all](https://megalinter.io/7.13.0/supported-linters/) | Default MegaLinter Flavor | 125 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter) | +| | [c_cpp](https://megalinter.io/7.13.0/flavors/c_cpp/) | Optimized for pure C/C++ projects | 56 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-c_cpp/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-c_cpp) | +| | [cupcake](https://megalinter.io/7.13.0/flavors/cupcake/) | MegaLinter for the most commonly used languages | 84 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-cupcake/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-cupcake) | +| | [documentation](https://megalinter.io/7.13.0/flavors/documentation/) | MegaLinter for documentation projects | 51 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-documentation/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-documentation) | +| | [dotnet](https://megalinter.io/7.13.0/flavors/dotnet/) | Optimized for C, C++, C# or VB based projects | 63 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-dotnet/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-dotnet) | +| | [dotnetweb](https://megalinter.io/7.13.0/flavors/dotnetweb/) | Optimized for C, C++, C# or VB based projects with JS/TS | 72 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-dotnetweb/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-dotnetweb) | +| | [go](https://megalinter.io/7.13.0/flavors/go/) | Optimized for GO based projects | 53 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-go/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-go) | +| | [java](https://megalinter.io/7.13.0/flavors/java/) | Optimized for JAVA based projects | 54 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-java/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-java) | +| | [javascript](https://megalinter.io/7.13.0/flavors/javascript/) | Optimized for JAVASCRIPT or TYPESCRIPT based projects | 61 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-javascript/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-javascript) | +| | [php](https://megalinter.io/7.13.0/flavors/php/) | Optimized for PHP based projects | 56 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-php/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-php) | +| | [python](https://megalinter.io/7.13.0/flavors/python/) | Optimized for PYTHON based projects | 64 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-python/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-python) | +| | [ruby](https://megalinter.io/7.13.0/flavors/ruby/) | Optimized for RUBY based projects | 52 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-ruby/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-ruby) | +| | [rust](https://megalinter.io/7.13.0/flavors/rust/) | Optimized for RUST based projects | 52 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-rust/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-rust) | +| | [salesforce](https://megalinter.io/7.13.0/flavors/salesforce/) | Optimized for Salesforce based projects | 56 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-salesforce/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-salesforce) | +| | [security](https://megalinter.io/7.13.0/flavors/security/) | Optimized for security | 24 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-security/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-security) | +| | [swift](https://megalinter.io/7.13.0/flavors/swift/) | Optimized for SWIFT based projects | 52 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-swift/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-swift) | +| | [terraform](https://megalinter.io/7.13.0/flavors/terraform/) | Optimized for TERRAFORM based projects | 56 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-terraform/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-terraform) | ## Behind the scenes ### How are identified applicable files -- Activated only if sub-directory `ansible` is found. (directory name can be overridden with `ANSIBLE_DIRECTORY`) +- Activated only if one of these files is found: `.ansible-lint` - File extensions: `.yml`, `.yaml` -- File name do not ends with: `vault.yml`, `vault.yaml`, `galaxy.yml`, `galaxy.yaml` +- File name don't ends with: `vault.yml`, `vault.yaml`, `galaxy.yml`, `galaxy.yaml` @@ -72,7 +77,7 @@ This linter is available in the following flavours ansible-lint is called once on the whole project directory (`project` CLI lint mode) - filtering can not be done using MegaLinter configuration variables,it must be done using ansible-lint configuration or ignore file (if existing) -- `VALIDATE_ALL_CODEBASE: false` does not make ansible-lint analyze only updated files +- `VALIDATE_ALL_CODEBASE: false` doesn't make ansible-lint analyze only updated files ### Example calls @@ -93,97 +98,69 @@ usage: ansible-lint [-h] [-P | -L | -T] [-f {brief,full,md,json,codeclimate,quiet,pep8,sarif}] [--sarif-file SARIF_FILE] [-q] [--profile {min,basic,moderate,safety,shared,production}] - [-p] [--progressive] [--project-dir PROJECT_DIR] - [-r RULESDIR] [-R] [-s] [--write [WRITE_LIST]] - [--show-relpath] [-t TAGS] [-v] [-x SKIP_LIST] - [--generate-ignore] [-w WARN_LIST] + [-p] [--project-dir PROJECT_DIR] [-r RULESDIR] [-R] [-s] + [--fix [WRITE_LIST]] [--show-relpath] [-t TAGS] [-v] + [-x SKIP_LIST] [--generate-ignore] [-w WARN_LIST] [--enable-list ENABLE_LIST] [--nocolor] [--force-color] - [--exclude EXCLUDE_PATHS] [-c CONFIG_FILE] - [-i IGNORE_FILE] [--offline] [--version] + [--exclude EXCLUDE_PATHS [EXCLUDE_PATHS ...]] + [-c CONFIG_FILE] [-i IGNORE_FILE] [--offline] [--version] [lintables ...] positional arguments: - lintables One or more files or paths. When missing it will - enable auto-detection mode. + lintables One or more files or paths. When missing it will enable auto-detection mode. options: -h, --help show this help message and exit -P, --list-profiles List all profiles, no formatting options available. - -L, --list-rules List all the rules. For listing rules only the - following formats for argument -f are supported: - {brief, full, md} with 'brief' as default. - -T, --list-tags List all the tags and the rules they cover. Increase - the verbosity level with `-v` to include 'opt-in' tag - and its rules. + -L, --list-rules List all the rules. For listing rules only the following formats for argument -f are supported: {brief, full, md} with 'brief' as default. + -T, --list-tags List all the tags and the rules they cover. Increase the verbosity level with `-v` to include 'opt-in' tag and its rules. -f {brief,full,md,json,codeclimate,quiet,pep8,sarif}, --format {brief,full,md,json,codeclimate,quiet,pep8,sarif} - stdout formatting, json being an alias for - codeclimate. (default: None) + stdout formatting, json being an alias for codeclimate. (default: None) --sarif-file SARIF_FILE SARIF output file -q quieter, reduce verbosity, can be specified twice. --profile {min,basic,moderate,safety,shared,production} Specify which rules profile to be used. -p, --parseable parseable output, same as '-f pep8' - --progressive Return success if number of violations compared with - previous git commit has not increased. This feature - works only in git repositories. --project-dir PROJECT_DIR - Location of project/repository, autodetected based on - location of configuration file. + Location of project/repository, autodetected based on location of configuration file. -r RULESDIR, --rules-dir RULESDIR - Specify custom rule directories. Add -R to keep using - embedded rules from /venvs/ansible- - lint/lib/python3.11/site-packages/ansiblelint/rules + Specify custom rule directories. Add -R to keep using embedded rules from /venvs/ansible-lint/lib/python3.12/site-packages/ansiblelint/rules -R Keep default rules when using -r - -s, --strict Return non-zero exit code on warnings as well as - errors - --write [WRITE_LIST] Allow ansible-lint to reformat YAML files and run rule - transforms (Reformatting YAML files standardizes - spacing, quotes, etc. A rule transform can fix or - simplify fixing issues identified by that rule). You - can limit the effective rule transforms (the - 'write_list') by passing a keywords 'all' or 'none' or - a comma separated list of rule ids or rule tags. YAML - reformatting happens whenever '--write' or '--write=' - is used. '--write' and '--write=all' are equivalent: - they allow all transforms to run. The effective list - of transforms comes from 'write_list' in the config - file, followed whatever '--write' args are provided on - the commandline. '--write=none' resets the list of - transforms to allow reformatting YAML without running - any of the transforms (ie '--write=none,rule-id' will - ignore write_list in the config file and only run the - rule-id transform). + -s, --strict Return non-zero exit code on warnings as well as errors + --fix [WRITE_LIST] Allow ansible-lint to perform auto-fixes, including YAML reformatting. You can limit the effective rule transforms (the 'write_list') by passing a keywords 'all' or 'none' or a comma separated list of rule ids or rule tags. YAML reformatting happens whenever '--fix' or '--fix=' is used. '--fix' and '--fix=all' are equivalent: they allow all transforms to run. Presence of --fix in command overrides config file value. --show-relpath Display path relative to CWD -t TAGS, --tags TAGS only check rules whose id/tags match these values -v Increase verbosity level (-vv for more) -x SKIP_LIST, --skip-list SKIP_LIST - only check rules whose id/tags do not match these - values. e.g: --skip-list=name,run-once - --generate-ignore Generate a text file '.ansible-lint-ignore' that - ignores all found violations. Each line contains - filename and rule id separated by a space. + only check rules whose id/tags do not match these values. e.g: --skip-list=name,run-once + --generate-ignore Generate a text file '.ansible-lint-ignore' that ignores all found violations. Each line contains filename and rule id separated by a space. -w WARN_LIST, --warn-list WARN_LIST - only warn about these rules, unless overridden in - config file. Current version default value is: - experimental, jinja[spacing] + only warn about these rules, unless overridden in config file. Current version default value is: experimental, jinja[spacing], fqcn[deep] --enable-list ENABLE_LIST activate optional rules by their tag name --nocolor disable colored output, same as NO_COLOR=1 --force-color Force colored output, same as FORCE_COLOR=1 - --exclude EXCLUDE_PATHS - path to directories or files to skip. This option is - repeatable. + --exclude EXCLUDE_PATHS [EXCLUDE_PATHS ...] + path to directories or files to skip. This option is repeatable. -c CONFIG_FILE, --config-file CONFIG_FILE - Specify configuration file to use. By default it will - look for '.ansible-lint' or '.config/ansible-lint.yml' + Specify configuration file to use. By default it will look for '.ansible-lint', '.config/ansible-lint.yml', or '.config/ansible-lint.yaml' -i IGNORE_FILE, --ignore-file IGNORE_FILE - Specify ignore file to use. By default it will look - for '.ansible-lint-ignore' or '.config/ansible-lint- - ignore.txt' - --offline Disable installation of requirements.yml and schema - refreshing + Specify ignore file to use. By default it will look for '.ansible-lint-ignore' or '.config/ansible-lint-ignore.txt' + --offline Disable installation of requirements.yml and schema refreshing --version + +The following environment variables are also recognized but there is no guarantee that they will work in future versions: + +ANSIBLE_LINT_CUSTOM_RULESDIR: Used for adding another folder into the lookup path for new rules. + +ANSIBLE_LINT_IGNORE_FILE: Define it to override the name of the default ignore file `.ansible-lint-ignore` + +ANSIBLE_LINT_WRITE_TMP: Tells linter to dump fixes into different temp files instead of overriding original. Used internally for testing. + +ANSIBLE_LINT_SKIP_SCHEMA_UPDATE: Tells ansible-lint to skip schema refresh. + +ANSIBLE_LINT_NODEPS: Avoids installing content dependencies and avoids performing checks that would fail when modules are not installed. Far less violations will be reported. ``` ### Installation on mega-linter Docker image diff --git a/docs/descriptors/api.md b/docs/descriptors/api.md new file mode 100644 index 00000000000..e6904efa310 --- /dev/null +++ b/docs/descriptors/api.md @@ -0,0 +1,39 @@ +--- +title: API linters in MegaLinter +description: spectral is available to analyze API files in MegaLinter +--- + + + +# API + +## Linters + +| Linter | Additional | +|-----------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------| +| [**spectral**](api_spectral.md)
[_API_SPECTRAL_](api_spectral.md) | [![GitHub stars](https://img.shields.io/github/stars/stoplightio/spectral?cacheSeconds=3600)](https://github.com/stoplightio/spectral) | + +## Linted files + +- File extensions: + - `.yml` + - `.yaml` + - `.json` + +- Detected file content: + - `"asyncapi":` + - `"openapi":` + - `"swagger":` + - `asyncapi:` + - `openapi:` + - `swagger:` + +## Configuration in MegaLinter + +| Variable | Description | Default value | +|--------------------------|-------------------------------------------------|---------------| +| API_PRE_COMMANDS | List of bash commands to run before the linters | None | +| API_POST_COMMANDS | List of bash commands to run after the linters | None | +| API_FILTER_REGEX_INCLUDE | Custom regex including filter | | +| API_FILTER_REGEX_EXCLUDE | Custom regex excluding filter | | + diff --git a/docs/descriptors/api_spectral.md b/docs/descriptors/api_spectral.md new file mode 100644 index 00000000000..c03c6f6a48c --- /dev/null +++ b/docs/descriptors/api_spectral.md @@ -0,0 +1,134 @@ +--- +title: spectral configuration in MegaLinter +description: How to use spectral (configure, ignore files, ignore errors, help & version documentations) to analyze API files +--- + + + + + +[![GitHub stars](https://img.shields.io/github/stars/stoplightio/spectral?cacheSeconds=3600)](https://github.com/stoplightio/spectral) [![GitHub release (latest SemVer)](https://img.shields.io/github/v/release/stoplightio/spectral?sort=semver)](https://github.com/stoplightio/spectral/releases) [![GitHub last commit](https://img.shields.io/github/last-commit/stoplightio/spectral)](https://github.com/stoplightio/spectral/commits) [![GitHub commit activity](https://img.shields.io/github/commit-activity/y/stoplightio/spectral)](https://github.com/stoplightio/spectral/graphs/commit-activity/) [![GitHub contributors](https://img.shields.io/github/contributors/stoplightio/spectral)](https://github.com/stoplightio/spectral/graphs/contributors/) + +## spectral documentation + +- Version in MegaLinter: **6.11.1** +- Visit [Official Web Site](https://docs.stoplight.io/docs/spectral/674b27b261c3c-overview){target=_blank} +- See [How to configure spectral rules](https://docs.stoplight.io/docs/spectral/9ffa04e052cc1-spectral-cli#using-a-ruleset-file){target=_blank} + - If custom `.spectral.yaml` config file isn't found, [.spectral.yaml](https://github.com/oxsecurity/megalinter/tree/main/TEMPLATES/.spectral.yaml){target=_blank} will be used +- See [Index of problems detected by spectral](https://docs.stoplight.io/docs/spectral/4dec24461f3af-open-api-rules){target=_blank} + +[![spectral - GitHub](https://gh-card.dev/repos/stoplightio/spectral.svg?fullname=)](https://github.com/stoplightio/spectral){target=_blank} + +## Configuration in MegaLinter + +- Enable spectral by adding `API_SPECTRAL` in [ENABLE_LINTERS variable](https://megalinter.io/7.13.0/configuration/#activation-and-deactivation) +- Disable spectral by adding `API_SPECTRAL` in [DISABLE_LINTERS variable](https://megalinter.io/7.13.0/configuration/#activation-and-deactivation) + +| Variable | Description | Default value | +|------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------| +| API_SPECTRAL_ARGUMENTS | User custom arguments to add in linter CLI call
Ex: `-s --foo "bar"` | | +| API_SPECTRAL_COMMAND_REMOVE_ARGUMENTS | User custom arguments to remove from command line before calling the linter
Ex: `-s --foo "bar"` | | +| API_SPECTRAL_FILTER_REGEX_INCLUDE | Custom regex including filter
Ex: `(src\|lib)` | Include every file | +| API_SPECTRAL_FILTER_REGEX_EXCLUDE | Custom regex excluding filter
Ex: `(test\|examples)` | Exclude no file | +| API_SPECTRAL_CLI_LINT_MODE | Override default CLI lint mode
- `file`: Calls the linter for each file
- `project`: Call the linter from the root of the project | `file` | +| API_SPECTRAL_FILE_EXTENSIONS | Allowed file extensions. `"*"` matches any extension, `""` matches empty extension. Empty list excludes all files
Ex: `[".py", ""]` | `[".yml", ".yaml", ".json"]` | +| API_SPECTRAL_FILE_NAMES_REGEX | File name regex filters. Regular expression list for filtering files by their base names using regex full match. Empty list includes all files
Ex: `["Dockerfile(-.+)?", "Jenkinsfile"]` | Include every file | +| API_SPECTRAL_PRE_COMMANDS | List of bash commands to run before the linter | None | +| API_SPECTRAL_POST_COMMANDS | List of bash commands to run after the linter | None | +| API_SPECTRAL_UNSECURED_ENV_VARIABLES | List of env variables explicitly not filtered before calling API_SPECTRAL and its pre/post commands | None | +| API_SPECTRAL_CONFIG_FILE | spectral configuration file name
Use `LINTER_DEFAULT` to let the linter find it | `.spectral.yaml` | +| API_SPECTRAL_RULES_PATH | Path where to find linter configuration file | Workspace folder, then MegaLinter default rules | +| API_SPECTRAL_DISABLE_ERRORS | Run linter but consider errors as warnings | `false` | +| API_SPECTRAL_DISABLE_ERRORS_IF_LESS_THAN | Maximum number of errors allowed | `0` | +| API_SPECTRAL_CLI_EXECUTABLE | Override CLI executable | `['spectral']` | + +## IDE Integration + +Use spectral in your favorite IDE to catch errors before MegaLinter ! + +| | IDE | Extension Name | Install | +|:--------------------------------------------------------------------------------------------------------------------------------------------:|------------------------------------------------------|-------------------------------------------------------------------|:-------------------------------------------------------------------------------:| +| | stoplight | [Native integration](https://stoplight.io/studio) | [Visit Web Site](https://stoplight.io/studio){target=_blank} | +| | [Visual Studio Code](https://code.visualstudio.com/) | [vscode-spectral](https://github.com/stoplightio/vscode-spectral) | [Visit Web Site](https://github.com/stoplightio/vscode-spectral){target=_blank} | + +## MegaLinter Flavours + +This linter is available in the following flavours + +| | Flavor | Description | Embedded linters | Info | +|:--------------------------------------------------------------------------------------------------------------------------------------------------------:|:---------------------------------------------------------------------|:---------------------------------------------------------|:----------------:|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:| +| | [all](https://megalinter.io/7.13.0/supported-linters/) | Default MegaLinter Flavor | 125 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter) | +| | [c_cpp](https://megalinter.io/7.13.0/flavors/c_cpp/) | Optimized for pure C/C++ projects | 56 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-c_cpp/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-c_cpp) | +| | [documentation](https://megalinter.io/7.13.0/flavors/documentation/) | MegaLinter for documentation projects | 51 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-documentation/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-documentation) | +| | [dotnet](https://megalinter.io/7.13.0/flavors/dotnet/) | Optimized for C, C++, C# or VB based projects | 63 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-dotnet/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-dotnet) | +| | [dotnetweb](https://megalinter.io/7.13.0/flavors/dotnetweb/) | Optimized for C, C++, C# or VB based projects with JS/TS | 72 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-dotnetweb/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-dotnetweb) | +| | [go](https://megalinter.io/7.13.0/flavors/go/) | Optimized for GO based projects | 53 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-go/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-go) | +| | [java](https://megalinter.io/7.13.0/flavors/java/) | Optimized for JAVA based projects | 54 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-java/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-java) | +| | [javascript](https://megalinter.io/7.13.0/flavors/javascript/) | Optimized for JAVASCRIPT or TYPESCRIPT based projects | 61 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-javascript/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-javascript) | +| | [php](https://megalinter.io/7.13.0/flavors/php/) | Optimized for PHP based projects | 56 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-php/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-php) | +| | [python](https://megalinter.io/7.13.0/flavors/python/) | Optimized for PYTHON based projects | 64 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-python/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-python) | +| | [ruby](https://megalinter.io/7.13.0/flavors/ruby/) | Optimized for RUBY based projects | 52 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-ruby/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-ruby) | +| | [rust](https://megalinter.io/7.13.0/flavors/rust/) | Optimized for RUST based projects | 52 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-rust/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-rust) | +| | [salesforce](https://megalinter.io/7.13.0/flavors/salesforce/) | Optimized for Salesforce based projects | 56 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-salesforce/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-salesforce) | +| | [swift](https://megalinter.io/7.13.0/flavors/swift/) | Optimized for SWIFT based projects | 52 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-swift/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-swift) | +| | [terraform](https://megalinter.io/7.13.0/flavors/terraform/) | Optimized for TERRAFORM based projects | 56 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-terraform/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-terraform) | + +## Behind the scenes + +### How are identified applicable files + +- File extensions: `.yml`, `.yaml`, `.json` +- Detected file content (regex): `"asyncapi":`, `"openapi":`, `"swagger":`, `asyncapi:`, `openapi:`, `swagger:` + + + +### How the linting is performed + +- spectral is called one time by identified file (`file` CLI lint mode) + +### Example calls + +```shell +spectral lint myfile.yml +``` + +```shell +spectral lint -r .spectral.yaml myfile.yml +``` + + +### Help content + +```shell +spectral lint [documents..] + +lint JSON/YAML documents from files or URLs + +Positionals: + documents Location of JSON/YAML documents. Can be either a file, a glob or fetchable resource(s) on the web. [array] [default: []] + +Options: + --version Show version number [boolean] + --help Show help [boolean] + -e, --encoding text encoding to use [string] [choices: "utf8", "ascii", "utf-8", "utf16le", "ucs2", "ucs-2", "base64", "latin1"] [default: "utf8"] + -f, --format formatters to use for outputting results, more than one can be provided by using multiple flags [string] [choices: "json", "stylish", "junit", "html", "text", "teamcity", "pretty", "github-actions", "sarif"] [default: "stylish"] + -o, --output where to output results, can be a single file name, multiple "output." or missing to print to stdout [string] + --stdin-filepath path to a file to pretend that stdin comes from [string] + --resolver path to custom json-ref-resolver instance [string] + -r, --ruleset path/URL to a ruleset file [string] + -F, --fail-severity results of this level or above will trigger a failure exit code [string] [choices: "error", "warn", "info", "hint"] [default: "error"] + -D, --display-only-failures only output results equal to or greater than --fail-severity [boolean] [default: false] + --ignore-unknown-format do not warn about unmatched formats [boolean] [default: false] + --fail-on-unmatched-globs fail on unmatched glob patterns [boolean] [default: false] + -v, --verbose increase verbosity [boolean] + -q, --quiet no logging - output only [boolean] +``` + +### Installation on mega-linter Docker image + +- NPM packages (node.js): + - [@stoplight/spectral-cli](https://www.npmjs.com/package/@stoplight/spectral-cli) diff --git a/docs/descriptors/arm.md b/docs/descriptors/arm.md index b19eba259ea..341c94468d8 100644 --- a/docs/descriptors/arm.md +++ b/docs/descriptors/arm.md @@ -3,7 +3,7 @@ title: ARM linters in MegaLinter description: arm-ttk is available to analyze ARM files in MegaLinter --- - + # ARM @@ -23,10 +23,12 @@ description: arm-ttk is available to analyze ARM files in MegaLinter ## Configuration in MegaLinter -| Variable | Description | Default value | -|--------------------------|-------------------------------|---------------| -| ARM_FILTER_REGEX_INCLUDE | Custom regex including filter | | -| ARM_FILTER_REGEX_EXCLUDE | Custom regex excluding filter | | +| Variable | Description | Default value | +|--------------------------|-------------------------------------------------|---------------| +| ARM_PRE_COMMANDS | List of bash commands to run before the linters | None | +| ARM_POST_COMMANDS | List of bash commands to run after the linters | None | +| ARM_FILTER_REGEX_INCLUDE | Custom regex including filter | | +| ARM_FILTER_REGEX_EXCLUDE | Custom regex excluding filter | | ## Behind the scenes @@ -35,19 +37,11 @@ description: arm-ttk is available to analyze ARM files in MegaLinter - Dockerfile commands : ```dockerfile -ARG PWSH_VERSION='latest' -ARG PWSH_DIRECTORY='/opt/microsoft/powershell' -RUN mkdir -p ${PWSH_DIRECTORY} \ - && curl --retry 5 --retry-delay 5 -s \ - -H "Accept: application/vnd.github+json" \ - -H "Authorization: Bearer $(cat /run/secrets/GITHUB_TOKEN)" \ - https://api.github.com/repos/powershell/powershell/releases/${PWSH_VERSION} \ - | grep browser_download_url \ - | grep linux-alpine-x64 \ - | cut -d '"' -f 4 \ - | xargs -n 1 wget -O - \ - | tar -xzC ${PWSH_DIRECTORY} \ - && ln -sf ${PWSH_DIRECTORY}/pwsh /usr/bin/pwsh +RUN curl -L https://github.com/PowerShell/PowerShell/releases/download/v7.4.2/powershell-7.4.2-linux-musl-x64.tar.gz -o /tmp/powershell.tar.gz \ + && mkdir -p /opt/microsoft/powershell/7 \ + && tar zxf /tmp/powershell.tar.gz -C /opt/microsoft/powershell/7 \ + && chmod +x /opt/microsoft/powershell/7/pwsh \ + && ln -s /opt/microsoft/powershell/7/pwsh /usr/bin/pwsh ``` diff --git a/docs/descriptors/arm_arm_ttk.md b/docs/descriptors/arm_arm_ttk.md index bb847fe404f..524b9373b91 100644 --- a/docs/descriptors/arm_arm_ttk.md +++ b/docs/descriptors/arm_arm_ttk.md @@ -3,7 +3,7 @@ title: arm-ttk configuration in MegaLinter description: How to use arm-ttk (configure, ignore files, ignore errors, help & version documentations) to analyze ARM files --- - + # arm-ttk [![GitHub stars](https://img.shields.io/github/stars/Azure/arm-ttk?cacheSeconds=3600)](https://github.com/Azure/arm-ttk) [![GitHub release (latest SemVer)](https://img.shields.io/github/v/release/Azure/arm-ttk?sort=semver)](https://github.com/Azure/arm-ttk/releases) [![GitHub last commit](https://img.shields.io/github/last-commit/Azure/arm-ttk)](https://github.com/Azure/arm-ttk/commits) [![GitHub commit activity](https://img.shields.io/github/commit-activity/y/Azure/arm-ttk)](https://github.com/Azure/arm-ttk/graphs/commit-activity/) [![GitHub contributors](https://img.shields.io/github/contributors/Azure/arm-ttk)](https://github.com/Azure/arm-ttk/graphs/contributors/) @@ -11,18 +11,19 @@ description: How to use arm-ttk (configure, ignore files, ignore errors, help & - Visit [Official Web Site](https://github.com/Azure/arm-ttk#readme){target=_blank} - See [How to configure arm-ttk rules](https://docs.microsoft.com/en-us/azure/azure-resource-manager/templates/test-toolkit#customize-tests){target=_blank} - - If custom `.arm-ttk.psd1` config file is not found, [.arm-ttk.psd1](https://github.com/oxsecurity/megalinter/tree/main/TEMPLATES/.arm-ttk.psd1){target=_blank} will be used + - If custom `.arm-ttk.psd1` config file isn't found, [.arm-ttk.psd1](https://github.com/oxsecurity/megalinter/tree/main/TEMPLATES/.arm-ttk.psd1){target=_blank} will be used [![arm-ttk - GitHub](https://gh-card.dev/repos/Azure/arm-ttk.svg?fullname=)](https://github.com/Azure/arm-ttk){target=_blank} ## Configuration in MegaLinter -- Enable arm-ttk by adding `ARM_ARM_TTK` in [ENABLE_LINTERS variable](https://megalinter.io/6.22.2/configuration/#activation-and-deactivation) -- Disable arm-ttk by adding `ARM_ARM_TTK` in [DISABLE_LINTERS variable](https://megalinter.io/6.22.2/configuration/#activation-and-deactivation) +- Enable arm-ttk by adding `ARM_ARM_TTK` in [ENABLE_LINTERS variable](https://megalinter.io/7.13.0/configuration/#activation-and-deactivation) +- Disable arm-ttk by adding `ARM_ARM_TTK` in [DISABLE_LINTERS variable](https://megalinter.io/7.13.0/configuration/#activation-and-deactivation) | Variable | Description | Default value | |-----------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------| | ARM_ARM_TTK_ARGUMENTS | User custom arguments to add in linter CLI call
Ex: `-s --foo "bar"` | | +| ARM_ARM_TTK_COMMAND_REMOVE_ARGUMENTS | User custom arguments to remove from command line before calling the linter
Ex: `-s --foo "bar"` | | | ARM_ARM_TTK_FILTER_REGEX_INCLUDE | Custom regex including filter
Ex: `(src\|lib)` | Include every file | | ARM_ARM_TTK_FILTER_REGEX_EXCLUDE | Custom regex excluding filter
Ex: `(test\|examples)` | Exclude no file | | ARM_ARM_TTK_CLI_LINT_MODE | Override default CLI lint mode
- `file`: Calls the linter for each file
- `project`: Call the linter from the root of the project | `file` | @@ -30,10 +31,12 @@ description: How to use arm-ttk (configure, ignore files, ignore errors, help & | ARM_ARM_TTK_FILE_NAMES_REGEX | File name regex filters. Regular expression list for filtering files by their base names using regex full match. Empty list includes all files
Ex: `["Dockerfile(-.+)?", "Jenkinsfile"]` | Include every file | | ARM_ARM_TTK_PRE_COMMANDS | List of bash commands to run before the linter | None | | ARM_ARM_TTK_POST_COMMANDS | List of bash commands to run after the linter | None | +| ARM_ARM_TTK_UNSECURED_ENV_VARIABLES | List of env variables explicitly not filtered before calling ARM_ARM_TTK and its pre/post commands | None | | ARM_ARM_TTK_CONFIG_FILE | arm-ttk configuration file name
Use `LINTER_DEFAULT` to let the linter find it | `.arm-ttk.psd1` | | ARM_ARM_TTK_RULES_PATH | Path where to find linter configuration file | Workspace folder, then MegaLinter default rules | | ARM_ARM_TTK_DISABLE_ERRORS | Run linter but consider errors as warnings | `false` | | ARM_ARM_TTK_DISABLE_ERRORS_IF_LESS_THAN | Maximum number of errors allowed | `0` | +| ARM_ARM_TTK_CLI_EXECUTABLE | Override CLI executable | `['arm-ttk']` | ## IDE Integration @@ -47,10 +50,11 @@ Use arm-ttk in your favorite IDE to catch errors before MegaLinter ! This linter is available in the following flavours -| | Flavor | Description | Embedded linters | Info | -|:--------------------------------------------------------------------------------------------------------------------------------------------------------:|:-------------------------------------------------------|:----------------------------------------------|:----------------:|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:| -| | [all](https://megalinter.io/6.22.2/supported-linters/) | Default MegaLinter Flavor | 114 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter) | -| | [dotnet](https://megalinter.io/6.22.2/flavors/dotnet/) | Optimized for C, C++, C# or VB based projects | 60 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-dotnet/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-dotnet) | +| | Flavor | Description | Embedded linters | Info | +|:--------------------------------------------------------------------------------------------------------------------------------------------------------:|:-------------------------------------------------------------|:---------------------------------------------------------|:----------------:|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:| +| | [all](https://megalinter.io/7.13.0/supported-linters/) | Default MegaLinter Flavor | 125 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter) | +| | [dotnet](https://megalinter.io/7.13.0/flavors/dotnet/) | Optimized for C, C++, C# or VB based projects | 63 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-dotnet/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-dotnet) | +| | [dotnetweb](https://megalinter.io/7.13.0/flavors/dotnetweb/) | Optimized for C, C++, C# or VB based projects with JS/TS | 72 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-dotnetweb/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-dotnetweb) | ## Behind the scenes @@ -90,11 +94,17 @@ pwsh -NoProfile -NoLogo -Command " ### Help content ```shell -Test-AzTemplate:  -Line | - 2 |  $TAZ_V = (Test-AzTemplate -help); - |  ~~~~~ - | A parameter cannot be found that matches parameter name 'help'. + +cmdlet Import-Module at command pipeline position 1 +Supply values for the following parameters: +Name[0]: +Import-Module: Cannot process command because of one or more missing mandatory parameters: Name. +Test-AzTemplate: +Line | + 2 | $TAZ_V = (Test-AzTemplate -help); + | ~~~~~~~~~~~~~~~ + | The term 'Test-AzTemplate' is not recognized as a name of a cmdlet, function, script file, or executable program. +Check the spelling of the name, or if a path was included, verify that the path is correct and try again. ``` ### Installation on mega-linter Docker image @@ -102,19 +112,11 @@ pwsh -NoProfile -NoLogo -Command " - Dockerfile commands : ```dockerfile # Parent descriptor install -ARG PWSH_VERSION='latest' -ARG PWSH_DIRECTORY='/opt/microsoft/powershell' -RUN mkdir -p ${PWSH_DIRECTORY} \ - && curl --retry 5 --retry-delay 5 -s \ - -H "Accept: application/vnd.github+json" \ - -H "Authorization: Bearer $(cat /run/secrets/GITHUB_TOKEN)" \ - https://api.github.com/repos/powershell/powershell/releases/${PWSH_VERSION} \ - | grep browser_download_url \ - | grep linux-alpine-x64 \ - | cut -d '"' -f 4 \ - | xargs -n 1 wget -O - \ - | tar -xzC ${PWSH_DIRECTORY} \ - && ln -sf ${PWSH_DIRECTORY}/pwsh /usr/bin/pwsh +RUN curl -L https://github.com/PowerShell/PowerShell/releases/download/v7.4.2/powershell-7.4.2-linux-musl-x64.tar.gz -o /tmp/powershell.tar.gz \ + && mkdir -p /opt/microsoft/powershell/7 \ + && tar zxf /tmp/powershell.tar.gz -C /opt/microsoft/powershell/7 \ + && chmod +x /opt/microsoft/powershell/7/pwsh \ + && ln -s /opt/microsoft/powershell/7/pwsh /usr/bin/pwsh # Linter install ARG ARM_TTK_NAME='master.zip' diff --git a/docs/descriptors/bash.md b/docs/descriptors/bash.md index c3d5b2eb09b..73cf16cd73d 100644 --- a/docs/descriptors/bash.md +++ b/docs/descriptors/bash.md @@ -3,7 +3,7 @@ title: BASH linters in MegaLinter description: bash-exec, shellcheck, shfmt are available to analyze BASH files in MegaLinter --- - + # BASH @@ -25,10 +25,12 @@ description: bash-exec, shellcheck, shfmt are available to analyze BASH files in ## Configuration in MegaLinter -| Variable | Description | Default value | -|---------------------------|-------------------------------|---------------| -| BASH_FILTER_REGEX_INCLUDE | Custom regex including filter | | -| BASH_FILTER_REGEX_EXCLUDE | Custom regex excluding filter | | +| Variable | Description | Default value | +|---------------------------|-------------------------------------------------|---------------| +| BASH_PRE_COMMANDS | List of bash commands to run before the linters | None | +| BASH_POST_COMMANDS | List of bash commands to run after the linters | None | +| BASH_FILTER_REGEX_INCLUDE | Custom regex including filter | | +| BASH_FILTER_REGEX_EXCLUDE | Custom regex excluding filter | | ## Behind the scenes diff --git a/docs/descriptors/bash_bash_exec.md b/docs/descriptors/bash_bash_exec.md index 09f1c6d045c..af5cf34ef96 100644 --- a/docs/descriptors/bash_bash_exec.md +++ b/docs/descriptors/bash_bash_exec.md @@ -3,7 +3,7 @@ title: bash-exec configuration in MegaLinter description: How to use bash-exec (configure, ignore files, ignore errors, help & version documentations) to analyze BASH files --- - + # bash-exec Checks if shell files are executable @@ -12,18 +12,19 @@ Note: You can run `git add --chmod=+x myfile.sh` to make a file executable on Wi ## bash-exec documentation -- Version in MegaLinter: **5.2.15** -- Visit [Official Web Site](https://tiswww.case.edu/php/chet/bash/bashtop.html){target=_blank} +- Version in MegaLinter: **5.2.26** +- Visit [Official Web Site](https://www.gnu.org/software/bash/){target=_blank} ## Configuration in MegaLinter -- Enable bash-exec by adding `BASH_EXEC` in [ENABLE_LINTERS variable](https://megalinter.io/6.22.2/configuration/#activation-and-deactivation) -- Disable bash-exec by adding `BASH_EXEC` in [DISABLE_LINTERS variable](https://megalinter.io/6.22.2/configuration/#activation-and-deactivation) +- Enable bash-exec by adding `BASH_EXEC` in [ENABLE_LINTERS variable](https://megalinter.io/7.13.0/configuration/#activation-and-deactivation) +- Disable bash-exec by adding `BASH_EXEC` in [DISABLE_LINTERS variable](https://megalinter.io/7.13.0/configuration/#activation-and-deactivation) | Variable | Description | Default value | |---------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------| | ERROR_ON_MISSING_EXEC_BIT | If set to `false`, the `bash-exec` linter will report a warning if a shell script is not executable. If set to `true`, the `bash-exec` linter will report an error instead | `false` | | BASH_EXEC_ARGUMENTS | User custom arguments to add in linter CLI call
Ex: `-s --foo "bar"` | | +| BASH_EXEC_COMMAND_REMOVE_ARGUMENTS | User custom arguments to remove from command line before calling the linter
Ex: `-s --foo "bar"` | | | BASH_EXEC_FILTER_REGEX_INCLUDE | Custom regex including filter
Ex: `(src\|lib)` | Include every file | | BASH_EXEC_FILTER_REGEX_EXCLUDE | Custom regex excluding filter
Ex: `(test\|examples)` | Exclude no file | | BASH_EXEC_CLI_LINT_MODE | Override default CLI lint mode
- `file`: Calls the linter for each file
- `project`: Call the linter from the root of the project | `file` | @@ -31,30 +32,34 @@ Note: You can run `git add --chmod=+x myfile.sh` to make a file executable on Wi | BASH_EXEC_FILE_NAMES_REGEX | File name regex filters. Regular expression list for filtering files by their base names using regex full match. Empty list includes all files
Ex: `["Dockerfile(-.+)?", "Jenkinsfile"]` | Include every file | | BASH_EXEC_PRE_COMMANDS | List of bash commands to run before the linter | None | | BASH_EXEC_POST_COMMANDS | List of bash commands to run after the linter | None | +| BASH_EXEC_UNSECURED_ENV_VARIABLES | List of env variables explicitly not filtered before calling BASH_EXEC and its pre/post commands | None | | BASH_EXEC_DISABLE_ERRORS | Run linter but consider errors as warnings | `false` | | BASH_EXEC_DISABLE_ERRORS_IF_LESS_THAN | Maximum number of errors allowed | `0` | +| BASH_EXEC_CLI_EXECUTABLE | Override CLI executable | `['bash-exec']` | ## MegaLinter Flavours This linter is available in the following flavours -| | Flavor | Description | Embedded linters | Info | -|:--------------------------------------------------------------------------------------------------------------------------------------------------------:|:---------------------------------------------------------------------|:------------------------------------------------------|:----------------:|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:| -| | [all](https://megalinter.io/6.22.2/supported-linters/) | Default MegaLinter Flavor | 114 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter) | -| | [cupcake](https://megalinter.io/6.22.2/flavors/cupcake/) | MegaLinter for the most commonly used languages | 82 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-cupcake/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-cupcake) | -| | [documentation](https://megalinter.io/6.22.2/flavors/documentation/) | MegaLinter for documentation projects | 48 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-documentation/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-documentation) | -| | [dotnet](https://megalinter.io/6.22.2/flavors/dotnet/) | Optimized for C, C++, C# or VB based projects | 60 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-dotnet/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-dotnet) | -| | [go](https://megalinter.io/6.22.2/flavors/go/) | Optimized for GO based projects | 50 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-go/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-go) | -| | [java](https://megalinter.io/6.22.2/flavors/java/) | Optimized for JAVA based projects | 51 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-java/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-java) | -| | [javascript](https://megalinter.io/6.22.2/flavors/javascript/) | Optimized for JAVASCRIPT or TYPESCRIPT based projects | 57 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-javascript/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-javascript) | -| | [php](https://megalinter.io/6.22.2/flavors/php/) | Optimized for PHP based projects | 51 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-php/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-php) | -| | [python](https://megalinter.io/6.22.2/flavors/python/) | Optimized for PYTHON based projects | 59 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-python/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-python) | -| | [ruby](https://megalinter.io/6.22.2/flavors/ruby/) | Optimized for RUBY based projects | 48 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-ruby/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-ruby) | -| | [rust](https://megalinter.io/6.22.2/flavors/rust/) | Optimized for RUST based projects | 48 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-rust/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-rust) | -| | [salesforce](https://megalinter.io/6.22.2/flavors/salesforce/) | Optimized for Salesforce based projects | 51 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-salesforce/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-salesforce) | -| | [security](https://megalinter.io/6.22.2/flavors/security/) | Optimized for security | 22 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-security/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-security) | -| | [swift](https://megalinter.io/6.22.2/flavors/swift/) | Optimized for SWIFT based projects | 48 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-swift/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-swift) | -| | [terraform](https://megalinter.io/6.22.2/flavors/terraform/) | Optimized for TERRAFORM based projects | 53 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-terraform/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-terraform) | +| | Flavor | Description | Embedded linters | Info | +|:--------------------------------------------------------------------------------------------------------------------------------------------------------:|:---------------------------------------------------------------------|:---------------------------------------------------------|:----------------:|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:| +| | [all](https://megalinter.io/7.13.0/supported-linters/) | Default MegaLinter Flavor | 125 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter) | +| | [c_cpp](https://megalinter.io/7.13.0/flavors/c_cpp/) | Optimized for pure C/C++ projects | 56 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-c_cpp/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-c_cpp) | +| | [cupcake](https://megalinter.io/7.13.0/flavors/cupcake/) | MegaLinter for the most commonly used languages | 84 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-cupcake/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-cupcake) | +| | [documentation](https://megalinter.io/7.13.0/flavors/documentation/) | MegaLinter for documentation projects | 51 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-documentation/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-documentation) | +| | [dotnet](https://megalinter.io/7.13.0/flavors/dotnet/) | Optimized for C, C++, C# or VB based projects | 63 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-dotnet/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-dotnet) | +| | [dotnetweb](https://megalinter.io/7.13.0/flavors/dotnetweb/) | Optimized for C, C++, C# or VB based projects with JS/TS | 72 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-dotnetweb/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-dotnetweb) | +| | [go](https://megalinter.io/7.13.0/flavors/go/) | Optimized for GO based projects | 53 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-go/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-go) | +| | [java](https://megalinter.io/7.13.0/flavors/java/) | Optimized for JAVA based projects | 54 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-java/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-java) | +| | [javascript](https://megalinter.io/7.13.0/flavors/javascript/) | Optimized for JAVASCRIPT or TYPESCRIPT based projects | 61 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-javascript/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-javascript) | +| | [php](https://megalinter.io/7.13.0/flavors/php/) | Optimized for PHP based projects | 56 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-php/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-php) | +| | [python](https://megalinter.io/7.13.0/flavors/python/) | Optimized for PYTHON based projects | 64 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-python/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-python) | +| | [ruby](https://megalinter.io/7.13.0/flavors/ruby/) | Optimized for RUBY based projects | 52 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-ruby/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-ruby) | +| | [rust](https://megalinter.io/7.13.0/flavors/rust/) | Optimized for RUST based projects | 52 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-rust/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-rust) | +| | [salesforce](https://megalinter.io/7.13.0/flavors/salesforce/) | Optimized for Salesforce based projects | 56 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-salesforce/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-salesforce) | +| | [security](https://megalinter.io/7.13.0/flavors/security/) | Optimized for security | 24 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-security/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-security) | +| | [swift](https://megalinter.io/7.13.0/flavors/swift/) | Optimized for SWIFT based projects | 52 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-swift/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-swift) | +| | [terraform](https://megalinter.io/7.13.0/flavors/terraform/) | Optimized for TERRAFORM based projects | 56 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-terraform/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-terraform) | ## Behind the scenes @@ -78,7 +83,7 @@ bash-exec myfile.sh ### Help content ```shell -GNU bash, version 5.2.15(1)-release-(x86_64-alpine-linux-musl) +GNU bash, version 5.2.26(1)-release-(x86_64-alpine-linux-musl) Usage: bash [GNU long option] [option] ... bash [GNU long option] [option] script-file ... GNU long options: diff --git a/docs/descriptors/bash_shellcheck.md b/docs/descriptors/bash_shellcheck.md index e2f68f37349..f93540ad46b 100644 --- a/docs/descriptors/bash_shellcheck.md +++ b/docs/descriptors/bash_shellcheck.md @@ -3,13 +3,13 @@ title: shellcheck configuration in MegaLinter description: How to use shellcheck (configure, ignore files, ignore errors, help & version documentations) to analyze BASH files --- - + # shellcheck [![GitHub stars](https://img.shields.io/github/stars/koalaman/shellcheck?cacheSeconds=3600)](https://github.com/koalaman/shellcheck) ![sarif](https://shields.io/badge/-SARIF-orange) [![GitHub release (latest SemVer)](https://img.shields.io/github/v/release/koalaman/shellcheck?sort=semver)](https://github.com/koalaman/shellcheck/releases) [![GitHub last commit](https://img.shields.io/github/last-commit/koalaman/shellcheck)](https://github.com/koalaman/shellcheck/commits) [![GitHub commit activity](https://img.shields.io/github/commit-activity/y/koalaman/shellcheck)](https://github.com/koalaman/shellcheck/graphs/commit-activity/) [![GitHub contributors](https://img.shields.io/github/contributors/koalaman/shellcheck)](https://github.com/koalaman/shellcheck/graphs/contributors/) ## shellcheck documentation -- Version in MegaLinter: **0.9.0** +- Version in MegaLinter: **0.10.0** - Visit [Official Web Site](https://github.com/koalaman/shellcheck#readme){target=_blank} - See [How to disable shellcheck rules in files](https://github.com/koalaman/shellcheck/wiki/Ignore){target=_blank} - See [Index of problems detected by shellcheck](https://github.com/koalaman/shellcheck#gallery-of-bad-code){target=_blank} @@ -18,12 +18,13 @@ description: How to use shellcheck (configure, ignore files, ignore errors, help ## Configuration in MegaLinter -- Enable shellcheck by adding `BASH_SHELLCHECK` in [ENABLE_LINTERS variable](https://megalinter.io/6.22.2/configuration/#activation-and-deactivation) -- Disable shellcheck by adding `BASH_SHELLCHECK` in [DISABLE_LINTERS variable](https://megalinter.io/6.22.2/configuration/#activation-and-deactivation) +- Enable shellcheck by adding `BASH_SHELLCHECK` in [ENABLE_LINTERS variable](https://megalinter.io/7.13.0/configuration/#activation-and-deactivation) +- Disable shellcheck by adding `BASH_SHELLCHECK` in [DISABLE_LINTERS variable](https://megalinter.io/7.13.0/configuration/#activation-and-deactivation) | Variable | Description | Default value | |---------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------| | BASH_SHELLCHECK_ARGUMENTS | User custom arguments to add in linter CLI call
Ex: `-s --foo "bar"` | | +| BASH_SHELLCHECK_COMMAND_REMOVE_ARGUMENTS | User custom arguments to remove from command line before calling the linter
Ex: `-s --foo "bar"` | | | BASH_SHELLCHECK_FILTER_REGEX_INCLUDE | Custom regex including filter
Ex: `(src\|lib)` | Include every file | | BASH_SHELLCHECK_FILTER_REGEX_EXCLUDE | Custom regex excluding filter
Ex: `(test\|examples)` | Exclude no file | | BASH_SHELLCHECK_CLI_LINT_MODE | Override default CLI lint mode
- `file`: Calls the linter for each file
- `list_of_files`: Call the linter with the list of files as argument
- `project`: Call the linter from the root of the project | `list_of_files` | @@ -31,8 +32,10 @@ description: How to use shellcheck (configure, ignore files, ignore errors, help | BASH_SHELLCHECK_FILE_NAMES_REGEX | File name regex filters. Regular expression list for filtering files by their base names using regex full match. Empty list includes all files
Ex: `["Dockerfile(-.+)?", "Jenkinsfile"]` | Include every file | | BASH_SHELLCHECK_PRE_COMMANDS | List of bash commands to run before the linter | None | | BASH_SHELLCHECK_POST_COMMANDS | List of bash commands to run after the linter | None | +| BASH_SHELLCHECK_UNSECURED_ENV_VARIABLES | List of env variables explicitly not filtered before calling BASH_SHELLCHECK and its pre/post commands | None | | BASH_SHELLCHECK_DISABLE_ERRORS | Run linter but consider errors as warnings | `false` | | BASH_SHELLCHECK_DISABLE_ERRORS_IF_LESS_THAN | Maximum number of errors allowed | `0` | +| BASH_SHELLCHECK_CLI_EXECUTABLE | Override CLI executable | `['shellcheck']` | ## IDE Integration @@ -55,22 +58,24 @@ This linter is available in the following flavours | | Flavor | Description | Embedded linters | Info | |:--------------------------------------------------------------------------------------------------------------------------------------------------------:|:---------------------------------------------------------------------|:-----------------------------------------------------------------------|:----------------:|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:| -| | [all](https://megalinter.io/6.22.2/supported-linters/) | Default MegaLinter Flavor | 114 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter) | -| | [ci_light](https://megalinter.io/6.22.2/flavors/ci_light/) | Optimized for CI items (Dockerfile, Jenkinsfile, JSON/YAML schemas,XML | 20 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-ci_light/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-ci_light) | -| | [cupcake](https://megalinter.io/6.22.2/flavors/cupcake/) | MegaLinter for the most commonly used languages | 82 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-cupcake/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-cupcake) | -| | [documentation](https://megalinter.io/6.22.2/flavors/documentation/) | MegaLinter for documentation projects | 48 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-documentation/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-documentation) | -| | [dotnet](https://megalinter.io/6.22.2/flavors/dotnet/) | Optimized for C, C++, C# or VB based projects | 60 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-dotnet/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-dotnet) | -| | [go](https://megalinter.io/6.22.2/flavors/go/) | Optimized for GO based projects | 50 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-go/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-go) | -| | [java](https://megalinter.io/6.22.2/flavors/java/) | Optimized for JAVA based projects | 51 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-java/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-java) | -| | [javascript](https://megalinter.io/6.22.2/flavors/javascript/) | Optimized for JAVASCRIPT or TYPESCRIPT based projects | 57 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-javascript/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-javascript) | -| | [php](https://megalinter.io/6.22.2/flavors/php/) | Optimized for PHP based projects | 51 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-php/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-php) | -| | [python](https://megalinter.io/6.22.2/flavors/python/) | Optimized for PYTHON based projects | 59 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-python/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-python) | -| | [ruby](https://megalinter.io/6.22.2/flavors/ruby/) | Optimized for RUBY based projects | 48 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-ruby/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-ruby) | -| | [rust](https://megalinter.io/6.22.2/flavors/rust/) | Optimized for RUST based projects | 48 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-rust/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-rust) | -| | [salesforce](https://megalinter.io/6.22.2/flavors/salesforce/) | Optimized for Salesforce based projects | 51 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-salesforce/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-salesforce) | -| | [security](https://megalinter.io/6.22.2/flavors/security/) | Optimized for security | 22 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-security/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-security) | -| | [swift](https://megalinter.io/6.22.2/flavors/swift/) | Optimized for SWIFT based projects | 48 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-swift/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-swift) | -| | [terraform](https://megalinter.io/6.22.2/flavors/terraform/) | Optimized for TERRAFORM based projects | 53 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-terraform/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-terraform) | +| | [all](https://megalinter.io/7.13.0/supported-linters/) | Default MegaLinter Flavor | 125 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter) | +| | [c_cpp](https://megalinter.io/7.13.0/flavors/c_cpp/) | Optimized for pure C/C++ projects | 56 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-c_cpp/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-c_cpp) | +| | [ci_light](https://megalinter.io/7.13.0/flavors/ci_light/) | Optimized for CI items (Dockerfile, Jenkinsfile, JSON/YAML schemas,XML | 21 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-ci_light/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-ci_light) | +| | [cupcake](https://megalinter.io/7.13.0/flavors/cupcake/) | MegaLinter for the most commonly used languages | 84 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-cupcake/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-cupcake) | +| | [documentation](https://megalinter.io/7.13.0/flavors/documentation/) | MegaLinter for documentation projects | 51 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-documentation/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-documentation) | +| | [dotnet](https://megalinter.io/7.13.0/flavors/dotnet/) | Optimized for C, C++, C# or VB based projects | 63 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-dotnet/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-dotnet) | +| | [dotnetweb](https://megalinter.io/7.13.0/flavors/dotnetweb/) | Optimized for C, C++, C# or VB based projects with JS/TS | 72 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-dotnetweb/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-dotnetweb) | +| | [go](https://megalinter.io/7.13.0/flavors/go/) | Optimized for GO based projects | 53 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-go/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-go) | +| | [java](https://megalinter.io/7.13.0/flavors/java/) | Optimized for JAVA based projects | 54 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-java/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-java) | +| | [javascript](https://megalinter.io/7.13.0/flavors/javascript/) | Optimized for JAVASCRIPT or TYPESCRIPT based projects | 61 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-javascript/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-javascript) | +| | [php](https://megalinter.io/7.13.0/flavors/php/) | Optimized for PHP based projects | 56 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-php/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-php) | +| | [python](https://megalinter.io/7.13.0/flavors/python/) | Optimized for PYTHON based projects | 64 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-python/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-python) | +| | [ruby](https://megalinter.io/7.13.0/flavors/ruby/) | Optimized for RUBY based projects | 52 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-ruby/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-ruby) | +| | [rust](https://megalinter.io/7.13.0/flavors/rust/) | Optimized for RUST based projects | 52 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-rust/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-rust) | +| | [salesforce](https://megalinter.io/7.13.0/flavors/salesforce/) | Optimized for Salesforce based projects | 56 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-salesforce/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-salesforce) | +| | [security](https://megalinter.io/7.13.0/flavors/security/) | Optimized for security | 24 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-security/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-security) | +| | [swift](https://megalinter.io/7.13.0/flavors/swift/) | Optimized for SWIFT based projects | 52 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-swift/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-swift) | +| | [terraform](https://megalinter.io/7.13.0/flavors/terraform/) | Optimized for TERRAFORM based projects | 56 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-terraform/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-terraform) | ## Behind the scenes @@ -99,12 +104,14 @@ Usage: shellcheck [OPTIONS...] FILES... -C[WHEN] --color[=WHEN] Use color (auto, always, never) -i CODE1,CODE2.. --include=CODE1,CODE2.. Consider only given types of warnings -e CODE1,CODE2.. --exclude=CODE1,CODE2.. Exclude types of warnings + --extended-analysis=bool Perform dataflow analysis (default true) -f FORMAT --format=FORMAT Output format (checkstyle, diff, gcc, json, json1, quiet, tty) --list-optional List checks disabled by default --norc Don't look for .shellcheckrc files + --rcfile=RCFILE Prefer the specified configuration file over searching for one -o check1,check2.. --enable=check1,check2.. List of optional checks to enable (or 'all') -P SOURCEPATHS --source-path=SOURCEPATHS Specify path when looking for sourced files ("SCRIPTDIR" for script's dir) - -s SHELLNAME --shell=SHELLNAME Specify dialect (sh, bash, dash, ksh) + -s SHELLNAME --shell=SHELLNAME Specify dialect (sh, bash, dash, ksh, busybox) -S SEVERITY --severity=SEVERITY Minimum severity of errors to consider (error, warning, info, style) -V --version Print version information -W NUM --wiki-link-count=NUM The number of wiki links to show, when applicable @@ -117,7 +124,9 @@ Usage: shellcheck [OPTIONS...] FILES... - Dockerfile commands : ```dockerfile -FROM koalaman/shellcheck:stable as shellcheck +# renovate: datasource=docker depName=koalaman/shellcheck +ARG BASH_SHELLCHECK_VERSION=v0.10.0 +FROM koalaman/shellcheck:${BASH_SHELLCHECK_VERSION} as shellcheck COPY --link --from=shellcheck /bin/shellcheck /usr/bin/shellcheck ``` diff --git a/docs/descriptors/bash_shfmt.md b/docs/descriptors/bash_shfmt.md index 7b08ab74162..6d7c00b6453 100644 --- a/docs/descriptors/bash_shfmt.md +++ b/docs/descriptors/bash_shfmt.md @@ -3,27 +3,28 @@ title: shfmt configuration in MegaLinter description: How to use shfmt (configure, ignore files, ignore errors, help & version documentations) to analyze BASH files --- - + # shfmt [![GitHub stars](https://img.shields.io/github/stars/mvdan/sh?cacheSeconds=3600)](https://github.com/mvdan/sh) ![formatter](https://shields.io/badge/-format-yellow) [![GitHub release (latest SemVer)](https://img.shields.io/github/v/release/mvdan/sh?sort=semver)](https://github.com/mvdan/sh/releases) [![GitHub last commit](https://img.shields.io/github/last-commit/mvdan/sh)](https://github.com/mvdan/sh/commits) [![GitHub commit activity](https://img.shields.io/github/commit-activity/y/mvdan/sh)](https://github.com/mvdan/sh/graphs/commit-activity/) [![GitHub contributors](https://img.shields.io/github/contributors/mvdan/sh)](https://github.com/mvdan/sh/graphs/contributors/) ## shfmt documentation -- Version in MegaLinter: **3.6.0** +- Version in MegaLinter: **3.8.0** - Visit [Official Web Site](https://github.com/mvdan/sh#readme){target=_blank} [![sh - GitHub](https://gh-card.dev/repos/mvdan/sh.svg?fullname=)](https://github.com/mvdan/sh){target=_blank} ## Configuration in MegaLinter -- Enable shfmt by adding `BASH_SHFMT` in [ENABLE_LINTERS variable](https://megalinter.io/6.22.2/configuration/#activation-and-deactivation) -- Disable shfmt by adding `BASH_SHFMT` in [DISABLE_LINTERS variable](https://megalinter.io/6.22.2/configuration/#activation-and-deactivation) +- Enable shfmt by adding `BASH_SHFMT` in [ENABLE_LINTERS variable](https://megalinter.io/7.13.0/configuration/#activation-and-deactivation) +- Disable shfmt by adding `BASH_SHFMT` in [DISABLE_LINTERS variable](https://megalinter.io/7.13.0/configuration/#activation-and-deactivation) -- Enable **auto-fixes** by adding `BASH_SHFMT` in [APPLY_FIXES variable](https://megalinter.io/6.22.2/configuration/#apply-fixes) +- Enable **autofixes** by adding `BASH_SHFMT` in [APPLY_FIXES variable](https://megalinter.io/7.13.0/configuration/#apply-fixes) | Variable | Description | Default value | |----------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------| | BASH_SHFMT_ARGUMENTS | User custom arguments to add in linter CLI call
Ex: `-s --foo "bar"` | | +| BASH_SHFMT_COMMAND_REMOVE_ARGUMENTS | User custom arguments to remove from command line before calling the linter
Ex: `-s --foo "bar"` | | | BASH_SHFMT_FILTER_REGEX_INCLUDE | Custom regex including filter
Ex: `(src\|lib)` | Include every file | | BASH_SHFMT_FILTER_REGEX_EXCLUDE | Custom regex excluding filter
Ex: `(test\|examples)` | Exclude no file | | BASH_SHFMT_CLI_LINT_MODE | Override default CLI lint mode
- `file`: Calls the linter for each file
- `list_of_files`: Call the linter with the list of files as argument
- `project`: Call the linter from the root of the project | `list_of_files` | @@ -31,8 +32,10 @@ description: How to use shfmt (configure, ignore files, ignore errors, help & ve | BASH_SHFMT_FILE_NAMES_REGEX | File name regex filters. Regular expression list for filtering files by their base names using regex full match. Empty list includes all files
Ex: `["Dockerfile(-.+)?", "Jenkinsfile"]` | Include every file | | BASH_SHFMT_PRE_COMMANDS | List of bash commands to run before the linter | None | | BASH_SHFMT_POST_COMMANDS | List of bash commands to run after the linter | None | +| BASH_SHFMT_UNSECURED_ENV_VARIABLES | List of env variables explicitly not filtered before calling BASH_SHFMT and its pre/post commands | None | | BASH_SHFMT_DISABLE_ERRORS | Run linter but consider errors as warnings | `true` | | BASH_SHFMT_DISABLE_ERRORS_IF_LESS_THAN | Maximum number of errors allowed | `0` | +| BASH_SHFMT_CLI_EXECUTABLE | Override CLI executable | `['shfmt']` | ## IDE Integration @@ -54,21 +57,24 @@ This linter is available in the following flavours | | Flavor | Description | Embedded linters | Info | |:--------------------------------------------------------------------------------------------------------------------------------------------------------:|:---------------------------------------------------------------------|:-----------------------------------------------------------------------|:----------------:|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:| -| | [all](https://megalinter.io/6.22.2/supported-linters/) | Default MegaLinter Flavor | 114 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter) | -| | [ci_light](https://megalinter.io/6.22.2/flavors/ci_light/) | Optimized for CI items (Dockerfile, Jenkinsfile, JSON/YAML schemas,XML | 20 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-ci_light/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-ci_light) | -| | [cupcake](https://megalinter.io/6.22.2/flavors/cupcake/) | MegaLinter for the most commonly used languages | 82 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-cupcake/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-cupcake) | -| | [documentation](https://megalinter.io/6.22.2/flavors/documentation/) | MegaLinter for documentation projects | 48 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-documentation/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-documentation) | -| | [dotnet](https://megalinter.io/6.22.2/flavors/dotnet/) | Optimized for C, C++, C# or VB based projects | 60 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-dotnet/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-dotnet) | -| | [go](https://megalinter.io/6.22.2/flavors/go/) | Optimized for GO based projects | 50 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-go/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-go) | -| | [java](https://megalinter.io/6.22.2/flavors/java/) | Optimized for JAVA based projects | 51 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-java/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-java) | -| | [javascript](https://megalinter.io/6.22.2/flavors/javascript/) | Optimized for JAVASCRIPT or TYPESCRIPT based projects | 57 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-javascript/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-javascript) | -| | [php](https://megalinter.io/6.22.2/flavors/php/) | Optimized for PHP based projects | 51 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-php/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-php) | -| | [python](https://megalinter.io/6.22.2/flavors/python/) | Optimized for PYTHON based projects | 59 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-python/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-python) | -| | [ruby](https://megalinter.io/6.22.2/flavors/ruby/) | Optimized for RUBY based projects | 48 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-ruby/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-ruby) | -| | [rust](https://megalinter.io/6.22.2/flavors/rust/) | Optimized for RUST based projects | 48 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-rust/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-rust) | -| | [salesforce](https://megalinter.io/6.22.2/flavors/salesforce/) | Optimized for Salesforce based projects | 51 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-salesforce/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-salesforce) | -| | [swift](https://megalinter.io/6.22.2/flavors/swift/) | Optimized for SWIFT based projects | 48 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-swift/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-swift) | -| | [terraform](https://megalinter.io/6.22.2/flavors/terraform/) | Optimized for TERRAFORM based projects | 53 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-terraform/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-terraform) | +| | [all](https://megalinter.io/7.13.0/supported-linters/) | Default MegaLinter Flavor | 125 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter) | +| | [c_cpp](https://megalinter.io/7.13.0/flavors/c_cpp/) | Optimized for pure C/C++ projects | 56 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-c_cpp/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-c_cpp) | +| | [ci_light](https://megalinter.io/7.13.0/flavors/ci_light/) | Optimized for CI items (Dockerfile, Jenkinsfile, JSON/YAML schemas,XML | 21 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-ci_light/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-ci_light) | +| | [cupcake](https://megalinter.io/7.13.0/flavors/cupcake/) | MegaLinter for the most commonly used languages | 84 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-cupcake/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-cupcake) | +| | [documentation](https://megalinter.io/7.13.0/flavors/documentation/) | MegaLinter for documentation projects | 51 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-documentation/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-documentation) | +| | [dotnet](https://megalinter.io/7.13.0/flavors/dotnet/) | Optimized for C, C++, C# or VB based projects | 63 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-dotnet/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-dotnet) | +| | [dotnetweb](https://megalinter.io/7.13.0/flavors/dotnetweb/) | Optimized for C, C++, C# or VB based projects with JS/TS | 72 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-dotnetweb/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-dotnetweb) | +| | [formatters](https://megalinter.io/7.13.0/flavors/formatters/) | Contains only formatters | 17 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-formatters/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-formatters) | +| | [go](https://megalinter.io/7.13.0/flavors/go/) | Optimized for GO based projects | 53 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-go/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-go) | +| | [java](https://megalinter.io/7.13.0/flavors/java/) | Optimized for JAVA based projects | 54 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-java/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-java) | +| | [javascript](https://megalinter.io/7.13.0/flavors/javascript/) | Optimized for JAVASCRIPT or TYPESCRIPT based projects | 61 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-javascript/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-javascript) | +| | [php](https://megalinter.io/7.13.0/flavors/php/) | Optimized for PHP based projects | 56 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-php/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-php) | +| | [python](https://megalinter.io/7.13.0/flavors/python/) | Optimized for PYTHON based projects | 64 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-python/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-python) | +| | [ruby](https://megalinter.io/7.13.0/flavors/ruby/) | Optimized for RUBY based projects | 52 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-ruby/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-ruby) | +| | [rust](https://megalinter.io/7.13.0/flavors/rust/) | Optimized for RUST based projects | 52 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-rust/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-rust) | +| | [salesforce](https://megalinter.io/7.13.0/flavors/salesforce/) | Optimized for Salesforce based projects | 56 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-salesforce/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-salesforce) | +| | [swift](https://megalinter.io/7.13.0/flavors/swift/) | Optimized for SWIFT based projects | 52 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-swift/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-swift) | +| | [terraform](https://megalinter.io/7.13.0/flavors/terraform/) | Optimized for TERRAFORM based projects | 56 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-terraform/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-terraform) | ## Behind the scenes @@ -109,6 +115,7 @@ directory, all shell scripts found under that directory will be used. -d, --diff error with a diff when the formatting differs -s, --simplify simplify the code -mn, --minify minify the code to reduce its size (implies -s) + --apply-ignore always apply EditorConfig ignore rules Parser options: diff --git a/docs/descriptors/bicep.md b/docs/descriptors/bicep.md index 71ae4177729..156f3d25993 100644 --- a/docs/descriptors/bicep.md +++ b/docs/descriptors/bicep.md @@ -3,7 +3,7 @@ title: BICEP linters in MegaLinter description: bicep_linter is available to analyze BICEP files in MegaLinter --- - + # BICEP @@ -17,8 +17,10 @@ description: bicep_linter is available to analyze BICEP files in MegaLinter ## Configuration in MegaLinter -| Variable | Description | Default value | -|----------------------------|-------------------------------|---------------| -| BICEP_FILTER_REGEX_INCLUDE | Custom regex including filter | | -| BICEP_FILTER_REGEX_EXCLUDE | Custom regex excluding filter | | +| Variable | Description | Default value | +|----------------------------|-------------------------------------------------|---------------| +| BICEP_PRE_COMMANDS | List of bash commands to run before the linters | None | +| BICEP_POST_COMMANDS | List of bash commands to run after the linters | None | +| BICEP_FILTER_REGEX_INCLUDE | Custom regex including filter | | +| BICEP_FILTER_REGEX_EXCLUDE | Custom regex excluding filter | | diff --git a/docs/descriptors/bicep_bicep_linter.md b/docs/descriptors/bicep_bicep_linter.md index edcdec3855e..bb10a866bf6 100644 --- a/docs/descriptors/bicep_bicep_linter.md +++ b/docs/descriptors/bicep_bicep_linter.md @@ -3,7 +3,7 @@ title: bicep_linter configuration in MegaLinter description: How to use bicep_linter (configure, ignore files, ignore errors, help & version documentations) to analyze BICEP files --- - + # bicep_linter [![GitHub stars](https://img.shields.io/github/stars/Azure/bicep?cacheSeconds=3600)](https://github.com/Azure/bicep) [![GitHub release (latest SemVer)](https://img.shields.io/github/v/release/Azure/bicep?sort=semver)](https://github.com/Azure/bicep/releases) [![GitHub last commit](https://img.shields.io/github/last-commit/Azure/bicep)](https://github.com/Azure/bicep/commits) [![GitHub commit activity](https://img.shields.io/github/commit-activity/y/Azure/bicep)](https://github.com/Azure/bicep/graphs/commit-activity/) [![GitHub contributors](https://img.shields.io/github/contributors/Azure/bicep)](https://github.com/Azure/bicep/graphs/contributors/) @@ -12,7 +12,7 @@ use a `bicepconfig.json` file. For more information, see the [documentation for ## bicep_linter documentation -- Version in MegaLinter: **0.15.31** +- Version in MegaLinter: **0.28.1** - Visit [Official Web Site](https://learn.microsoft.com/en-us/azure/azure-resource-manager/bicep/linter){target=_blank} - See [How to configure bicep_linter rules](https://learn.microsoft.com/en-us/azure/azure-resource-manager/bicep/bicep-config){target=_blank} - See [How to disable bicep_linter rules in files](https://learn.microsoft.com/en-us/azure/azure-resource-manager/bicep/linter#silencing-false-positives){target=_blank} @@ -22,12 +22,13 @@ use a `bicepconfig.json` file. For more information, see the [documentation for ## Configuration in MegaLinter -- Enable bicep_linter by adding `BICEP_BICEP_LINTER` in [ENABLE_LINTERS variable](https://megalinter.io/6.22.2/configuration/#activation-and-deactivation) -- Disable bicep_linter by adding `BICEP_BICEP_LINTER` in [DISABLE_LINTERS variable](https://megalinter.io/6.22.2/configuration/#activation-and-deactivation) +- Enable bicep_linter by adding `BICEP_BICEP_LINTER` in [ENABLE_LINTERS variable](https://megalinter.io/7.13.0/configuration/#activation-and-deactivation) +- Disable bicep_linter by adding `BICEP_BICEP_LINTER` in [DISABLE_LINTERS variable](https://megalinter.io/7.13.0/configuration/#activation-and-deactivation) | Variable | Description | Default value | |------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------| | BICEP_BICEP_LINTER_ARGUMENTS | User custom arguments to add in linter CLI call
Ex: `-s --foo "bar"` | | +| BICEP_BICEP_LINTER_COMMAND_REMOVE_ARGUMENTS | User custom arguments to remove from command line before calling the linter
Ex: `-s --foo "bar"` | | | BICEP_BICEP_LINTER_FILTER_REGEX_INCLUDE | Custom regex including filter
Ex: `(src\|lib)` | Include every file | | BICEP_BICEP_LINTER_FILTER_REGEX_EXCLUDE | Custom regex excluding filter
Ex: `(test\|examples)` | Exclude no file | | BICEP_BICEP_LINTER_CLI_LINT_MODE | Override default CLI lint mode
- `file`: Calls the linter for each file
- `project`: Call the linter from the root of the project | `file` | @@ -35,8 +36,10 @@ use a `bicepconfig.json` file. For more information, see the [documentation for | BICEP_BICEP_LINTER_FILE_NAMES_REGEX | File name regex filters. Regular expression list for filtering files by their base names using regex full match. Empty list includes all files
Ex: `["Dockerfile(-.+)?", "Jenkinsfile"]` | Include every file | | BICEP_BICEP_LINTER_PRE_COMMANDS | List of bash commands to run before the linter | None | | BICEP_BICEP_LINTER_POST_COMMANDS | List of bash commands to run after the linter | None | +| BICEP_BICEP_LINTER_UNSECURED_ENV_VARIABLES | List of env variables explicitly not filtered before calling BICEP_BICEP_LINTER and its pre/post commands | None | | BICEP_BICEP_LINTER_DISABLE_ERRORS | Run linter but consider errors as warnings | `false` | | BICEP_BICEP_LINTER_DISABLE_ERRORS_IF_LESS_THAN | Maximum number of errors allowed | `0` | +| BICEP_BICEP_LINTER_CLI_EXECUTABLE | Override CLI executable | `['bicep']` | ## IDE Integration @@ -50,10 +53,11 @@ Use bicep_linter in your favorite IDE to catch errors before MegaLinter ! This linter is available in the following flavours -| | Flavor | Description | Embedded linters | Info | -|:--------------------------------------------------------------------------------------------------------------------------------------------------------:|:-------------------------------------------------------|:----------------------------------------------|:----------------:|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:| -| | [all](https://megalinter.io/6.22.2/supported-linters/) | Default MegaLinter Flavor | 114 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter) | -| | [dotnet](https://megalinter.io/6.22.2/flavors/dotnet/) | Optimized for C, C++, C# or VB based projects | 60 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-dotnet/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-dotnet) | +| | Flavor | Description | Embedded linters | Info | +|:--------------------------------------------------------------------------------------------------------------------------------------------------------:|:-------------------------------------------------------------|:---------------------------------------------------------|:----------------:|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:| +| | [all](https://megalinter.io/7.13.0/supported-linters/) | Default MegaLinter Flavor | 125 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter) | +| | [dotnet](https://megalinter.io/7.13.0/flavors/dotnet/) | Optimized for C, C++, C# or VB based projects | 63 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-dotnet/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-dotnet) | +| | [dotnetweb](https://megalinter.io/7.13.0/flavors/dotnetweb/) | Optimized for C, C++, C# or VB based projects with JS/TS | 72 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-dotnetweb/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-dotnetweb) | ## Behind the scenes @@ -82,7 +86,7 @@ az bicep build -f infra.bicep ### Help content ```shell -Bicep CLI version 0.15.31 (3ba6e06a8d) +Bicep CLI version 0.28.1 (ba1e9f8c1e) Usage: bicep build [options] @@ -92,10 +96,11 @@ Usage: The input file Options: - --outdir Saves the output at the specified directory. - --outfile Saves the output as the specified file path. - --stdout Prints the output to stdout. - --no-restore Builds the bicep file without restoring external modules. + --outdir Saves the output at the specified directory. + --outfile Saves the output as the specified file path. + --stdout Prints the output to stdout. + --no-restore Builds the bicep file without restoring external modules. + --diagnostics-format Sets the format with which diagnostics are displayed. Valid values are ( Default | Sarif ). Examples: bicep build file.bicep @@ -103,8 +108,9 @@ Usage: bicep build file.bicep --outdir dir1 bicep build file.bicep --outfile file.json bicep build file.bicep --no-restore + bicep build file.bicep --diagnostics-format sarif - bicep format [options] + bicep format [options] Formats a .bicep file. Arguments: @@ -115,16 +121,16 @@ Usage: --outfile Saves the output as the specified file path. --stdout Prints the output to stdout. --newline Set newline char. Valid values are ( Auto | LF | CRLF | CR ). - --indentKind Set indentation kind. Valid values are ( Space | Tab ). - --indentSize Number of spaces to indent with (Only valid with --indentKind set to Space). - --insertFinalNewline Insert a final newline. + --indent-kind Set indentation kind. Valid values are ( Space | Tab ). + --indent-size Number of spaces to indent with (Only valid with --indentKind set to Space). + --insert-final-newline Insert a final newline. Examples: bicep format file.bicep bicep format file.bicep --stdout bicep format file.bicep --outdir dir1 bicep format file.bicep --outfile file.json - bicep format file.bicep --indentKind Tab + bicep format file.bicep --indent-kind Tab bicep decompile [options] Attempts to decompile a template .json file to .bicep. @@ -136,7 +142,7 @@ Usage: --outdir Saves the output at the specified directory. --outfile Saves the output as the specified file path. --stdout Prints the output to stdout. - --force Allows overwriting the output file if it exists (applies only to 'bicep decompile'). + --force Allows overwriting the output file if it exists (applies only to 'bicep decompile' or 'bicep decompile-params'). Examples: bicep decompile file.json @@ -145,8 +151,44 @@ Usage: bicep decompile file.json --force bicep decompile file.json --outfile file.bicep + bicep lint [options] + Lints a .bicep file. + + Arguments: + The input file + + Options: + --no-restore Skips restoring external modules. + --diagnostics-format Sets the format with which diagnostics are displayed. Valid values are ( Default | Sarif ). + + Examples: + bicep lint file.bicep + bicep lint file.bicep --no-restore + bicep lint file.bicep --diagnostics-format sarif + + bicep decompile-params [options] + Attempts to decompile a parameters .json file to .bicepparam. + + Arguments: + The input file + + Options: + --outdir Saves the output at the specified directory. + --outfile Saves the output as the specified file path. + --stdout Prints the output to stdout. + --force Allows overwriting the output file if it exists (applies only to 'bicep decompile' or 'bicep decompile-params'). + --bicep-file Path to the bicep template file that will be referenced in the using declaration + + Examples: + bicep decompile-params file.json + bicep decompile-params file.json --bicep-file ./dir/main.bicep + bicep decompile-params file.json --stdout + bicep decompile-params file.json --outdir dir1 + bicep decompile-params file.json --force + bicep decompile-params file.json --outfile file.bicepparam + bicep generate-params [options] - Builds .parameters.json file from the given bicep file, updates if there is an existing parameters.json file. + Builds parameters file from the given bicep file, updates if there is an existing parameters file. Arguments: The input file @@ -156,6 +198,8 @@ Usage: --outdir Saves the output at the specified directory. --outfile Saves the output as the specified file path. --stdout Prints the output to stdout. + --output-format Selects the output format {json, bicepparam} + --include-params Selects which parameters to include into output {requiredonly, all} Examples: bicep generate-params file.bicep @@ -163,7 +207,7 @@ Usage: bicep generate-params file.bicep --stdout bicep generate-params file.bicep --outdir dir1 bicep generate-params file.bicep --outfile file.parameters.json - + bicep generate-params file.bicep --output-format bicepparam --include-params all bicep publish --target Publishes the .bicep file to the module registry. @@ -173,12 +217,15 @@ Usage: The module reference Options: - --documentationUri Module documentation uri + --documentation-uri Module documentation uri + --with-source [Experimental] Publish source code with the module + --force Overwrite existing published module or file Examples: bicep publish file.bicep --target br:example.azurecr.io/hello/world:v1 - bicep publish file.json --target br:example.azurecr.io/hello/world:v1 - bicep publish file.json --target br:example.azurecr.io/hello/world:v1 --documentationUri https://github.com/hello-world/README.md + bicep publish file.bicep --target br:example.azurecr.io/hello/world:v1 --force + bicep publish file.bicep --target br:example.azurecr.io/hello/world:v1 --documentation-uri https://github.com/hello-world/README.md --with-source + bicep publish file.json --target br:example.azurecr.io/hello/world:v1 --documentation-uri https://github.com/hello-world/README.md bicep restore Restores external modules from the specified Bicep file to the local module cache. @@ -186,33 +233,32 @@ Usage: Arguments: The input file - bicep [options] + bicep [options] Options: --version -v Shows bicep version information --help -h Shows this usage information --license Prints license information --third-party-notices Prints third-party notices - bicep build-params - Builds .bicepparam file. + Builds a .json file from a .bicepparam file. Arguments: The input Bicepparam file Options: - --bicep-file Verifies if the bicep file reference in the params file using declaration matches the specified file path. - --outfile-params Saves the param output as the specified file path. - --outfile-bicep Saves the bicep output as the specified file path. - --stdout Prints the output to stdout. - --no-restore Builds the bicep file without restoring external modules. + --bicep-file Verifies if the specified bicep file path matches the one provided in the params file using declaration + --outfile Saves the param output json as the specified file path. + --stdout Prints the param and bicep json output to stdout. + --no-restore Builds the bicep file (referenced in using declaration) without restoring external modules. + --diagnostics-format Sets the format with which diagnostics are displayed. Valid values are ( Default | Sarif ). Examples: bicep build-params params.bicepparam bicep build-params params.bicepparam --stdout - bicep build-params params.bicepparam --outfile-params otherParams.json --outfile-bicep otherMain.json + bicep build-params params.bicepparam --outfile otherParams.json bicep build-params params.bicepparam --no-restore - + bicep build-params params.bicepparam --diagnostics-format sarif ``` @@ -229,3 +275,5 @@ RUN curl --retry 5 --retry-delay 5 -sLo ${BICEP_EXE} "${BICEP_URI}" \ ``` +- APK packages (Linux): + - [icu-libs](https://pkgs.alpinelinux.org/packages?branch=edge&name=icu-libs) diff --git a/docs/descriptors/c.md b/docs/descriptors/c.md index 05834ae1c42..4a3bf278498 100644 --- a/docs/descriptors/c.md +++ b/docs/descriptors/c.md @@ -1,17 +1,18 @@ --- title: C linters in MegaLinter -description: cpplint is available to analyze C files in MegaLinter +description: cpplint, clang-format are available to analyze C files in MegaLinter --- - + # C ## Linters -| Linter | Additional | -|-------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------| -| [**cpplint**](c_cpplint.md)
[_C_CPPLINT_](c_cpplint.md) | [![GitHub stars](https://img.shields.io/github/stars/cpplint/cpplint?cacheSeconds=3600)](https://github.com/cpplint/cpplint) | +| Linter | Additional | +|---------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| [**cpplint**](c_cpplint.md)
[_C_CPPLINT_](c_cpplint.md) | [![GitHub stars](https://img.shields.io/github/stars/cpplint/cpplint?cacheSeconds=3600)](https://github.com/cpplint/cpplint) | +| [**clang-format**](c_clang_format.md)
[_C_CLANG_FORMAT_](c_clang_format.md) | [![GitHub stars](https://img.shields.io/github/stars/llvm/llvm-project?cacheSeconds=3600)](https://github.com/llvm/llvm-project) ![autofix](https://shields.io/badge/-autofix-green) | ## Linted files @@ -21,8 +22,10 @@ description: cpplint is available to analyze C files in MegaLinter ## Configuration in MegaLinter -| Variable | Description | Default value | -|------------------------|-------------------------------|---------------| -| C_FILTER_REGEX_INCLUDE | Custom regex including filter | | -| C_FILTER_REGEX_EXCLUDE | Custom regex excluding filter | | +| Variable | Description | Default value | +|------------------------|-------------------------------------------------|---------------| +| C_PRE_COMMANDS | List of bash commands to run before the linters | None | +| C_POST_COMMANDS | List of bash commands to run after the linters | None | +| C_FILTER_REGEX_INCLUDE | Custom regex including filter | | +| C_FILTER_REGEX_EXCLUDE | Custom regex excluding filter | | diff --git a/docs/descriptors/c_clang_format.md b/docs/descriptors/c_clang_format.md new file mode 100644 index 00000000000..13f03d5c2be --- /dev/null +++ b/docs/descriptors/c_clang_format.md @@ -0,0 +1,185 @@ +--- +title: clang-format configuration in MegaLinter +description: How to use clang-format (configure, ignore files, ignore errors, help & version documentations) to analyze C files +--- + + +# clang-format +[![GitHub stars](https://img.shields.io/github/stars/llvm/llvm-project?cacheSeconds=3600)](https://github.com/llvm/llvm-project) ![autofix](https://shields.io/badge/-autofix-green) [![GitHub release (latest SemVer)](https://img.shields.io/github/v/release/llvm/llvm-project?sort=semver)](https://github.com/llvm/llvm-project/releases) [![GitHub last commit](https://img.shields.io/github/last-commit/llvm/llvm-project)](https://github.com/llvm/llvm-project/commits) [![GitHub commit activity](https://img.shields.io/github/commit-activity/y/llvm/llvm-project)](https://github.com/llvm/llvm-project/graphs/commit-activity/) [![GitHub contributors](https://img.shields.io/github/contributors/llvm/llvm-project)](https://github.com/llvm/llvm-project/graphs/contributors/) + +## clang-format documentation + +- Version in MegaLinter: **17.0.6** +- Visit [Official Web Site](https://releases.llvm.org/17.0.1/tools/clang/docs/ClangFormat.html){target=_blank} +- See [How to disable clang-format rules in files](https://releases.llvm.org/17.0.1/tools/clang/docs/ClangFormatStyleOptions.html#disabling-formatting-on-a-piece-of-code){target=_blank} +- See [Index of problems detected by clang-format](https://releases.llvm.org/17.0.1/tools/clang/docs/ClangFormat.html){target=_blank} + +[![llvm-project - GitHub](https://gh-card.dev/repos/llvm/llvm-project.svg?fullname=)](https://github.com/llvm/llvm-project){target=_blank} + +## Configuration in MegaLinter + +- Enable clang-format by adding `C_CLANG_FORMAT` in [ENABLE_LINTERS variable](https://megalinter.io/7.13.0/configuration/#activation-and-deactivation) +- Disable clang-format by adding `C_CLANG_FORMAT` in [DISABLE_LINTERS variable](https://megalinter.io/7.13.0/configuration/#activation-and-deactivation) + +- Enable **autofixes** by adding `C_CLANG_FORMAT` in [APPLY_FIXES variable](https://megalinter.io/7.13.0/configuration/#apply-fixes) + +| Variable | Description | Default value | +|--------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------| +| C_CLANG_FORMAT_ARGUMENTS | User custom arguments to add in linter CLI call
Ex: `-s --foo "bar"` | | +| C_CLANG_FORMAT_COMMAND_REMOVE_ARGUMENTS | User custom arguments to remove from command line before calling the linter
Ex: `-s --foo "bar"` | | +| C_CLANG_FORMAT_FILTER_REGEX_INCLUDE | Custom regex including filter
Ex: `(src\|lib)` | Include every file | +| C_CLANG_FORMAT_FILTER_REGEX_EXCLUDE | Custom regex excluding filter
Ex: `(test\|examples)` | Exclude no file | +| C_CLANG_FORMAT_CLI_LINT_MODE | Override default CLI lint mode
- `file`: Calls the linter for each file
- `list_of_files`: Call the linter with the list of files as argument
- `project`: Call the linter from the root of the project | `list_of_files` | +| C_CLANG_FORMAT_FILE_EXTENSIONS | Allowed file extensions. `"*"` matches any extension, `""` matches empty extension. Empty list excludes all files
Ex: `[".py", ""]` | `[".c", ".h"]` | +| C_CLANG_FORMAT_FILE_NAMES_REGEX | File name regex filters. Regular expression list for filtering files by their base names using regex full match. Empty list includes all files
Ex: `["Dockerfile(-.+)?", "Jenkinsfile"]` | Include every file | +| C_CLANG_FORMAT_PRE_COMMANDS | List of bash commands to run before the linter | None | +| C_CLANG_FORMAT_POST_COMMANDS | List of bash commands to run after the linter | None | +| C_CLANG_FORMAT_UNSECURED_ENV_VARIABLES | List of env variables explicitly not filtered before calling C_CLANG_FORMAT and its pre/post commands | None | +| C_CLANG_FORMAT_CONFIG_FILE | clang-format configuration file name
Use `LINTER_DEFAULT` to let the linter find it | `.clang-format` | +| C_CLANG_FORMAT_RULES_PATH | Path where to find linter configuration file | Workspace folder, then MegaLinter default rules | +| C_CLANG_FORMAT_DISABLE_ERRORS | Run linter but consider errors as warnings | `false` | +| C_CLANG_FORMAT_DISABLE_ERRORS_IF_LESS_THAN | Maximum number of errors allowed | `0` | +| C_CLANG_FORMAT_CLI_EXECUTABLE | Override CLI executable | `['clang-format']` | + +## IDE Integration + +Use clang-format in your favorite IDE to catch errors before MegaLinter ! + +| | IDE | Extension Name | Install | +|:-------------------------------------------------------------------------------------------------------------------------------------------:|------------------------------------------------------|------------------------------------------------------------------------------------------------------|:-----------------------------------------------------------------------------------------------------------------------------------------------------------------------:| +| | [Visual Studio Code](https://code.visualstudio.com/) | [Clang-Format](https://marketplace.visualstudio.com/items?itemName=xaver.clang-format) | [![Install in VSCode](https://github.com/oxsecurity/megalinter/raw/main/docs/assets/images/btn_install_vscode.png)](vscode:extension/xaver.clang-format){target=_blank} | +| | [Emacs](https://www.gnu.org/software/emacs/) | [clang-format](https://releases.llvm.org/17.0.1/tools/clang/docs/ClangFormat.html#emacs-integration) | [Visit Web Site](https://releases.llvm.org/17.0.1/tools/clang/docs/ClangFormat.html#emacs-integration){target=_blank} | + +## MegaLinter Flavours + +This linter is available in the following flavours + +| | Flavor | Description | Embedded linters | Info | +|:--------------------------------------------------------------------------------------------------------------------------------------------------------:|:-------------------------------------------------------|:----------------------------------|:----------------:|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:| +| | [all](https://megalinter.io/7.13.0/supported-linters/) | Default MegaLinter Flavor | 125 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter) | +| | [c_cpp](https://megalinter.io/7.13.0/flavors/c_cpp/) | Optimized for pure C/C++ projects | 56 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-c_cpp/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-c_cpp) | + +## Behind the scenes + +### How are identified applicable files + +- File extensions: `.c`, `.h` + + + +### How the linting is performed + +- clang-format is called once with the list of files as arguments (`list_of_files` CLI lint mode) + +### Example calls + +```shell +clang-format --Werror --dry-run myfile.c +``` + + +### Help content + +```shell +OVERVIEW: A tool to format C/C++/Java/JavaScript/JSON/Objective-C/Protobuf/C# code. + +If no arguments are specified, it formats the code from standard input +and writes the result to the standard output. +If s are given, it reformats the files. If -i is specified +together with s, the files are edited in-place. Otherwise, the +result is written to the standard output. + +USAGE: clang-format [options] [ ...] + +OPTIONS: + +Clang-format options: + + --Werror - If set, changes formatting warnings to errors + --Wno-error= - If set don't error out on the specified warning type. + =unknown - If set, unknown format options are only warned about. + This can be used to enable formatting, even if the + configuration contains unknown (newer) options. + Use with caution, as this might lead to dramatically + differing format depending on an option being + supported or not. + --assume-filename= - Set filename used to determine the language and to find + .clang-format file. + Only used when reading from stdin. + If this is not passed, the .clang-format file is searched + relative to the current working directory when reading stdin. + Unrecognized filenames are treated as C++. + supported: + CSharp: .cs + Java: .java + JavaScript: .mjs .js .ts + Json: .json + Objective-C: .m .mm + Proto: .proto .protodevel + TableGen: .td + TextProto: .textpb .pb.txt .textproto .asciipb + Verilog: .sv .svh .v .vh + --cursor= - The position of the cursor when invoking + clang-format from an editor integration + --dry-run - If set, do not actually make the formatting changes + --dump-config - Dump configuration options to stdout and exit. + Can be used with -style option. + --fallback-style= - The name of the predefined style used as a + fallback in case clang-format is invoked with + -style=file, but can not find the .clang-format + file to use. Defaults to 'LLVM'. + Use -fallback-style=none to skip formatting. + --ferror-limit= - Set the maximum number of clang-format errors to emit + before stopping (0 = no limit). + Used only with --dry-run or -n + --files= - A file containing a list of files to process, one per line. + -i - Inplace edit s, if specified. + --length= - Format a range of this length (in bytes). + Multiple ranges can be formatted by specifying + several -offset and -length pairs. + When only a single -offset is specified without + -length, clang-format will format up to the end + of the file. + Can only be used with one input file. + --lines= - : - format a range of + lines (both 1-based). + Multiple ranges can be formatted by specifying + several -lines arguments. + Can't be used with -offset and -length. + Can only be used with one input file. + -n - Alias for --dry-run + --offset= - Format a range starting at this byte offset. + Multiple ranges can be formatted by specifying + several -offset and -length pairs. + Can only be used with one input file. + --output-replacements-xml - Output replacements as XML. + --qualifier-alignment= - If set, overrides the qualifier alignment style + determined by the QualifierAlignment style flag + --sort-includes - If set, overrides the include sorting behavior + determined by the SortIncludes style flag + --style= - Set coding style. can be: + 1. A preset: LLVM, GNU, Google, Chromium, Microsoft, + Mozilla, WebKit. + 2. 'file' to load style configuration from a + .clang-format file in one of the parent directories + of the source file (for stdin, see --assume-filename). + If no .clang-format file is found, falls back to + --fallback-style. + --style=file is the default. + 3. 'file:' to explicitly specify + the configuration file. + 4. "{key: value, ...}" to set specific parameters, e.g.: + --style="{BasedOnStyle: llvm, IndentWidth: 8}" + --verbose - If set, shows the list of processed files + +Generic Options: + + --help - Display available options (--help-hidden for more) + --help-list - Display list of available options (--help-list-hidden for more) + --version - Display the version of this program +``` + +### Installation on mega-linter Docker image + +- APK packages (Linux): + - [clang17-extra-tools](https://pkgs.alpinelinux.org/packages?branch=edge&name=clang17-extra-tools) diff --git a/docs/descriptors/c_cpplint.md b/docs/descriptors/c_cpplint.md index 7a6921ce68c..68497acf758 100644 --- a/docs/descriptors/c_cpplint.md +++ b/docs/descriptors/c_cpplint.md @@ -3,7 +3,7 @@ title: cpplint configuration in MegaLinter description: How to use cpplint (configure, ignore files, ignore errors, help & version documentations) to analyze C files --- - + # cpplint [![GitHub stars](https://img.shields.io/github/stars/cpplint/cpplint?cacheSeconds=3600)](https://github.com/cpplint/cpplint) [![GitHub release (latest SemVer)](https://img.shields.io/github/v/release/cpplint/cpplint?sort=semver)](https://github.com/cpplint/cpplint/releases) [![GitHub last commit](https://img.shields.io/github/last-commit/cpplint/cpplint)](https://github.com/cpplint/cpplint/commits) [![GitHub commit activity](https://img.shields.io/github/commit-activity/y/cpplint/cpplint)](https://github.com/cpplint/cpplint/graphs/commit-activity/) [![GitHub contributors](https://img.shields.io/github/contributors/cpplint/cpplint)](https://github.com/cpplint/cpplint/graphs/contributors/) @@ -17,12 +17,13 @@ description: How to use cpplint (configure, ignore files, ignore errors, help & ## Configuration in MegaLinter -- Enable cpplint by adding `C_CPPLINT` in [ENABLE_LINTERS variable](https://megalinter.io/6.22.2/configuration/#activation-and-deactivation) -- Disable cpplint by adding `C_CPPLINT` in [DISABLE_LINTERS variable](https://megalinter.io/6.22.2/configuration/#activation-and-deactivation) +- Enable cpplint by adding `C_CPPLINT` in [ENABLE_LINTERS variable](https://megalinter.io/7.13.0/configuration/#activation-and-deactivation) +- Disable cpplint by adding `C_CPPLINT` in [DISABLE_LINTERS variable](https://megalinter.io/7.13.0/configuration/#activation-and-deactivation) | Variable | Description | Default value | |---------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------| | C_CPPLINT_ARGUMENTS | User custom arguments to add in linter CLI call
Ex: `-s --foo "bar"` | | +| C_CPPLINT_COMMAND_REMOVE_ARGUMENTS | User custom arguments to remove from command line before calling the linter
Ex: `-s --foo "bar"` | | | C_CPPLINT_FILTER_REGEX_INCLUDE | Custom regex including filter
Ex: `(src\|lib)` | Include every file | | C_CPPLINT_FILTER_REGEX_EXCLUDE | Custom regex excluding filter
Ex: `(test\|examples)` | Exclude no file | | C_CPPLINT_CLI_LINT_MODE | Override default CLI lint mode
- `file`: Calls the linter for each file
- `list_of_files`: Call the linter with the list of files as argument
- `project`: Call the linter from the root of the project | `list_of_files` | @@ -30,18 +31,23 @@ description: How to use cpplint (configure, ignore files, ignore errors, help & | C_CPPLINT_FILE_NAMES_REGEX | File name regex filters. Regular expression list for filtering files by their base names using regex full match. Empty list includes all files
Ex: `["Dockerfile(-.+)?", "Jenkinsfile"]` | Include every file | | C_CPPLINT_PRE_COMMANDS | List of bash commands to run before the linter | None | | C_CPPLINT_POST_COMMANDS | List of bash commands to run after the linter | None | +| C_CPPLINT_UNSECURED_ENV_VARIABLES | List of env variables explicitly not filtered before calling C_CPPLINT and its pre/post commands | None | | C_CPPLINT_DISABLE_ERRORS | Run linter but consider errors as warnings | `false` | | C_CPPLINT_DISABLE_ERRORS_IF_LESS_THAN | Maximum number of errors allowed | `0` | +| C_CPPLINT_CLI_EXECUTABLE | Override CLI executable | `['cpplint']` | ## MegaLinter Flavours This linter is available in the following flavours -| | Flavor | Description | Embedded linters | Info | -|:--------------------------------------------------------------------------------------------------------------------------------------------------------:|:---------------------------------------------------------|:------------------------------------------------|:----------------:|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:| -| | [all](https://megalinter.io/6.22.2/supported-linters/) | Default MegaLinter Flavor | 114 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter) | -| | [cupcake](https://megalinter.io/6.22.2/flavors/cupcake/) | MegaLinter for the most commonly used languages | 82 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-cupcake/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-cupcake) | -| | [dotnet](https://megalinter.io/6.22.2/flavors/dotnet/) | Optimized for C, C++, C# or VB based projects | 60 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-dotnet/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-dotnet) | +| | Flavor | Description | Embedded linters | Info | +|:--------------------------------------------------------------------------------------------------------------------------------------------------------:|:-------------------------------------------------------------|:---------------------------------------------------------|:----------------:|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:| +| | [all](https://megalinter.io/7.13.0/supported-linters/) | Default MegaLinter Flavor | 125 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter) | +| | [c_cpp](https://megalinter.io/7.13.0/flavors/c_cpp/) | Optimized for pure C/C++ projects | 56 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-c_cpp/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-c_cpp) | +| | [cupcake](https://megalinter.io/7.13.0/flavors/cupcake/) | MegaLinter for the most commonly used languages | 84 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-cupcake/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-cupcake) | +| | [dotnet](https://megalinter.io/7.13.0/flavors/dotnet/) | Optimized for C, C++, C# or VB based projects | 63 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-dotnet/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-dotnet) | +| | [dotnetweb](https://megalinter.io/7.13.0/flavors/dotnetweb/) | Optimized for C, C++, C# or VB based projects with JS/TS | 72 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-dotnetweb/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-dotnetweb) | +| | [python](https://megalinter.io/7.13.0/flavors/python/) | Optimized for PYTHON based projects | 64 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-python/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-python) | ## Behind the scenes diff --git a/docs/descriptors/clojure.md b/docs/descriptors/clojure.md index 93e4b5e5c50..a490dd24f8d 100644 --- a/docs/descriptors/clojure.md +++ b/docs/descriptors/clojure.md @@ -1,17 +1,18 @@ --- title: CLOJURE linters in MegaLinter -description: clj-kondo is available to analyze CLOJURE files in MegaLinter +description: clj-kondo, cljstyle are available to analyze CLOJURE files in MegaLinter --- - + # CLOJURE ## Linters -| Linter | Additional | -|---------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------| -| [**clj-kondo**](clojure_clj_kondo.md)
[_CLOJURE_CLJ_KONDO_](clojure_clj_kondo.md) | [![GitHub stars](https://img.shields.io/github/stars/borkdude/clj-kondo?cacheSeconds=3600)](https://github.com/borkdude/clj-kondo) | +| Linter | Additional | +|---------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| [**clj-kondo**](clojure_clj_kondo.md)
[_CLOJURE_CLJ_KONDO_](clojure_clj_kondo.md) | [![GitHub stars](https://img.shields.io/github/stars/borkdude/clj-kondo?cacheSeconds=3600)](https://github.com/borkdude/clj-kondo) | +| [**cljstyle**](clojure_cljstyle.md)
[_CLOJURE_CLJSTYLE_](clojure_cljstyle.md) | [![GitHub stars](https://img.shields.io/github/stars/greglook/cljstyle?cacheSeconds=3600)](https://github.com/greglook/cljstyle) ![autofix](https://shields.io/badge/-autofix-green) | ## Linted files @@ -23,8 +24,60 @@ description: clj-kondo is available to analyze CLOJURE files in MegaLinter ## Configuration in MegaLinter -| Variable | Description | Default value | -|------------------------------|-------------------------------|---------------| -| CLOJURE_FILTER_REGEX_INCLUDE | Custom regex including filter | | -| CLOJURE_FILTER_REGEX_EXCLUDE | Custom regex excluding filter | | +| Variable | Description | Default value | +|------------------------------|-------------------------------------------------|---------------| +| CLOJURE_PRE_COMMANDS | List of bash commands to run before the linters | None | +| CLOJURE_POST_COMMANDS | List of bash commands to run after the linters | None | +| CLOJURE_FILTER_REGEX_INCLUDE | Custom regex including filter | | +| CLOJURE_FILTER_REGEX_EXCLUDE | Custom regex excluding filter | | + + +## Behind the scenes + +### Installation + +- Dockerfile commands : +```dockerfile +ENV LANG=C.UTF-8 +RUN ALPINE_GLIBC_BASE_URL="https://github.com/sgerrand/alpine-pkg-glibc/releases/download" && \ + ALPINE_GLIBC_PACKAGE_VERSION="2.34-r0" && \ + ALPINE_GLIBC_BASE_PACKAGE_FILENAME="glibc-$ALPINE_GLIBC_PACKAGE_VERSION.apk" && \ + ALPINE_GLIBC_BIN_PACKAGE_FILENAME="glibc-bin-$ALPINE_GLIBC_PACKAGE_VERSION.apk" && \ + ALPINE_GLIBC_I18N_PACKAGE_FILENAME="glibc-i18n-$ALPINE_GLIBC_PACKAGE_VERSION.apk" && \ + apk add --no-cache --virtual=.build-dependencies wget ca-certificates && \ + echo \ + "-----BEGIN PUBLIC KEY-----\ + MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApZ2u1KJKUu/fW4A25y9m\ + y70AGEa/J3Wi5ibNVGNn1gT1r0VfgeWd0pUybS4UmcHdiNzxJPgoWQhV2SSW1JYu\ + tOqKZF5QSN6X937PTUpNBjUvLtTQ1ve1fp39uf/lEXPpFpOPL88LKnDBgbh7wkCp\ + m2KzLVGChf83MS0ShL6G9EQIAUxLm99VpgRjwqTQ/KfzGtpke1wqws4au0Ab4qPY\ + KXvMLSPLUp7cfulWvhmZSegr5AdhNw5KNizPqCJT8ZrGvgHypXyiFvvAH5YRtSsc\ + Zvo9GI2e2MaZyo9/lvb+LbLEJZKEQckqRj4P26gmASrZEPStwc+yqy1ShHLA0j6m\ + 1QIDAQAB\ + -----END PUBLIC KEY-----" | sed 's/ */\\n/g' > "/etc/apk/keys/sgerrand.rsa.pub" && \ + wget --quiet --tries=10 --waitretry=10 \ + "$ALPINE_GLIBC_BASE_URL/$ALPINE_GLIBC_PACKAGE_VERSION/$ALPINE_GLIBC_BASE_PACKAGE_FILENAME" \ + "$ALPINE_GLIBC_BASE_URL/$ALPINE_GLIBC_PACKAGE_VERSION/$ALPINE_GLIBC_BIN_PACKAGE_FILENAME" \ + "$ALPINE_GLIBC_BASE_URL/$ALPINE_GLIBC_PACKAGE_VERSION/$ALPINE_GLIBC_I18N_PACKAGE_FILENAME" && \ + mv /etc/nsswitch.conf /etc/nsswitch.conf.bak && \ + apk add --no-cache --force-overwrite \ + "$ALPINE_GLIBC_BASE_PACKAGE_FILENAME" \ + "$ALPINE_GLIBC_BIN_PACKAGE_FILENAME" \ + "$ALPINE_GLIBC_I18N_PACKAGE_FILENAME" && \ + \ + mv /etc/nsswitch.conf.bak /etc/nsswitch.conf && \ + rm "/etc/apk/keys/sgerrand.rsa.pub" && \ + (/usr/glibc-compat/bin/localedef --force --inputfile POSIX --charmap UTF-8 "$LANG" || true) && \ + echo "export LANG=$LANG" > /etc/profile.d/locale.sh && \ + \ + apk del glibc-i18n && \ + \ + rm "/root/.wget-hsts" && \ + apk del .build-dependencies && \ + rm \ + "$ALPINE_GLIBC_BASE_PACKAGE_FILENAME" \ + "$ALPINE_GLIBC_BIN_PACKAGE_FILENAME" \ + "$ALPINE_GLIBC_I18N_PACKAGE_FILENAME" + +``` diff --git a/docs/descriptors/clojure_clj_kondo.md b/docs/descriptors/clojure_clj_kondo.md index cfa09b35d5a..bd15d095dd0 100644 --- a/docs/descriptors/clojure_clj_kondo.md +++ b/docs/descriptors/clojure_clj_kondo.md @@ -3,7 +3,7 @@ title: clj-kondo configuration in MegaLinter description: How to use clj-kondo (configure, ignore files, ignore errors, help & version documentations) to analyze CLOJURE files --- - +
@@ -15,10 +15,10 @@ description: How to use clj-kondo (configure, ignore files, ignore errors, help ## clj-kondo documentation -- Version in MegaLinter: **2023.03.17** +- Version in MegaLinter: **2024.05.24** - Visit [Official Web Site](https://github.com/borkdude/clj-kondo#readme){target=_blank} - See [How to configure clj-kondo rules](https://github.com/borkdude/clj-kondo/blob/master/doc/config.md#configuration){target=_blank} - - If custom `.clj-kondo/config.edn` config file is not found, [.clj-kondo/config.edn](https://github.com/oxsecurity/megalinter/tree/main/TEMPLATES/.clj-kondo/config.edn){target=_blank} will be used + - If custom `.clj-kondo/config.edn` config file isn't found, [.clj-kondo/config.edn](https://github.com/oxsecurity/megalinter/tree/main/TEMPLATES/.clj-kondo/config.edn){target=_blank} will be used - See [How to disable clj-kondo rules in files](https://github.com/clj-kondo/clj-kondo/blob/master/doc/config.md#ignore-warnings-in-an-expression){target=_blank} - See [Index of problems detected by clj-kondo](https://github.com/borkdude/clj-kondo#features){target=_blank} @@ -26,12 +26,13 @@ description: How to use clj-kondo (configure, ignore files, ignore errors, help ## Configuration in MegaLinter -- Enable clj-kondo by adding `CLOJURE_CLJ_KONDO` in [ENABLE_LINTERS variable](https://megalinter.io/6.22.2/configuration/#activation-and-deactivation) -- Disable clj-kondo by adding `CLOJURE_CLJ_KONDO` in [DISABLE_LINTERS variable](https://megalinter.io/6.22.2/configuration/#activation-and-deactivation) +- Enable clj-kondo by adding `CLOJURE_CLJ_KONDO` in [ENABLE_LINTERS variable](https://megalinter.io/7.13.0/configuration/#activation-and-deactivation) +- Disable clj-kondo by adding `CLOJURE_CLJ_KONDO` in [DISABLE_LINTERS variable](https://megalinter.io/7.13.0/configuration/#activation-and-deactivation) | Variable | Description | Default value | |-----------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------| | CLOJURE_CLJ_KONDO_ARGUMENTS | User custom arguments to add in linter CLI call
Ex: `-s --foo "bar"` | | +| CLOJURE_CLJ_KONDO_COMMAND_REMOVE_ARGUMENTS | User custom arguments to remove from command line before calling the linter
Ex: `-s --foo "bar"` | | | CLOJURE_CLJ_KONDO_FILTER_REGEX_INCLUDE | Custom regex including filter
Ex: `(src\|lib)` | Include every file | | CLOJURE_CLJ_KONDO_FILTER_REGEX_EXCLUDE | Custom regex excluding filter
Ex: `(test\|examples)` | Exclude no file | | CLOJURE_CLJ_KONDO_CLI_LINT_MODE | Override default CLI lint mode
- `file`: Calls the linter for each file
- `project`: Call the linter from the root of the project | `file` | @@ -39,10 +40,12 @@ description: How to use clj-kondo (configure, ignore files, ignore errors, help | CLOJURE_CLJ_KONDO_FILE_NAMES_REGEX | File name regex filters. Regular expression list for filtering files by their base names using regex full match. Empty list includes all files
Ex: `["Dockerfile(-.+)?", "Jenkinsfile"]` | Include every file | | CLOJURE_CLJ_KONDO_PRE_COMMANDS | List of bash commands to run before the linter | None | | CLOJURE_CLJ_KONDO_POST_COMMANDS | List of bash commands to run after the linter | None | +| CLOJURE_CLJ_KONDO_UNSECURED_ENV_VARIABLES | List of env variables explicitly not filtered before calling CLOJURE_CLJ_KONDO and its pre/post commands | None | | CLOJURE_CLJ_KONDO_CONFIG_FILE | clj-kondo configuration file name
Use `LINTER_DEFAULT` to let the linter find it | `.clj-kondo/config.edn` | | CLOJURE_CLJ_KONDO_RULES_PATH | Path where to find linter configuration file | Workspace folder, then MegaLinter default rules | | CLOJURE_CLJ_KONDO_DISABLE_ERRORS | Run linter but consider errors as warnings | `false` | | CLOJURE_CLJ_KONDO_DISABLE_ERRORS_IF_LESS_THAN | Maximum number of errors allowed | `0` | +| CLOJURE_CLJ_KONDO_CLI_EXECUTABLE | Override CLI executable | `['clj-kondo']` | ## IDE Integration @@ -61,9 +64,9 @@ This linter is available in the following flavours | | Flavor | Description | Embedded linters | Info | |:--------------------------------------------------------------------------------------------------------------------------------------------------------:|:---------------------------------------------------------|:------------------------------------------------|:----------------:|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:| -|
| [all](https://megalinter.io/6.22.2/supported-linters/) | Default MegaLinter Flavor | 114 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter) | -| | [cupcake](https://megalinter.io/6.22.2/flavors/cupcake/) | MegaLinter for the most commonly used languages | 82 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-cupcake/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-cupcake) | -| | [java](https://megalinter.io/6.22.2/flavors/java/) | Optimized for JAVA based projects | 51 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-java/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-java) | +| | [all](https://megalinter.io/7.13.0/supported-linters/) | Default MegaLinter Flavor | 125 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter) | +| | [cupcake](https://megalinter.io/7.13.0/flavors/cupcake/) | MegaLinter for the most commonly used languages | 84 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-cupcake/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-cupcake) | +| | [java](https://megalinter.io/7.13.0/flavors/java/) | Optimized for JAVA based projects | 54 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-java/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-java) | ## Behind the scenes @@ -91,8 +94,7 @@ clj-kondo --lint --config .clj-kondo/config.edn myfile.clj ### Help content ```shell -clj-kondo v2023.03.17 - +clj-kondo v2024.05.24 Options: @@ -113,8 +115,7 @@ Options: using `--cache-dir`. If `--cache-dir` is not set, cache is resolved using the nearest `.clj-kondo` directory in the current and parent directories. - --config : config may be a file or an EDN expression. See - https://cljdoc.org/d/clj-kondo/clj-kondo/2023.03.17/doc/configuration + --config : extra config that is merged. May be a file or an EDN expression. See https://github.com/clj-kondo/clj-kondo/blob/master/doc/config.md. --config-dir : use this config directory instead of auto-detected .clj-kondo dir. @@ -138,7 +139,50 @@ Options: - Dockerfile commands : ```dockerfile -RUN curl -sLO https://raw.githubusercontent.com/clj-kondo/clj-kondo/master/script/install-clj-kondo \ +# Parent descriptor install +ENV LANG=C.UTF-8 +RUN ALPINE_GLIBC_BASE_URL="https://github.com/sgerrand/alpine-pkg-glibc/releases/download" && \ + ALPINE_GLIBC_PACKAGE_VERSION="2.34-r0" && \ + ALPINE_GLIBC_BASE_PACKAGE_FILENAME="glibc-$ALPINE_GLIBC_PACKAGE_VERSION.apk" && \ + ALPINE_GLIBC_BIN_PACKAGE_FILENAME="glibc-bin-$ALPINE_GLIBC_PACKAGE_VERSION.apk" && \ + ALPINE_GLIBC_I18N_PACKAGE_FILENAME="glibc-i18n-$ALPINE_GLIBC_PACKAGE_VERSION.apk" && \ + apk add --no-cache --virtual=.build-dependencies wget ca-certificates && \ + echo \ + "-----BEGIN PUBLIC KEY-----\ + MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApZ2u1KJKUu/fW4A25y9m\ + y70AGEa/J3Wi5ibNVGNn1gT1r0VfgeWd0pUybS4UmcHdiNzxJPgoWQhV2SSW1JYu\ + tOqKZF5QSN6X937PTUpNBjUvLtTQ1ve1fp39uf/lEXPpFpOPL88LKnDBgbh7wkCp\ + m2KzLVGChf83MS0ShL6G9EQIAUxLm99VpgRjwqTQ/KfzGtpke1wqws4au0Ab4qPY\ + KXvMLSPLUp7cfulWvhmZSegr5AdhNw5KNizPqCJT8ZrGvgHypXyiFvvAH5YRtSsc\ + Zvo9GI2e2MaZyo9/lvb+LbLEJZKEQckqRj4P26gmASrZEPStwc+yqy1ShHLA0j6m\ + 1QIDAQAB\ + -----END PUBLIC KEY-----" | sed 's/ */\\n/g' > "/etc/apk/keys/sgerrand.rsa.pub" && \ + wget --quiet --tries=10 --waitretry=10 \ + "$ALPINE_GLIBC_BASE_URL/$ALPINE_GLIBC_PACKAGE_VERSION/$ALPINE_GLIBC_BASE_PACKAGE_FILENAME" \ + "$ALPINE_GLIBC_BASE_URL/$ALPINE_GLIBC_PACKAGE_VERSION/$ALPINE_GLIBC_BIN_PACKAGE_FILENAME" \ + "$ALPINE_GLIBC_BASE_URL/$ALPINE_GLIBC_PACKAGE_VERSION/$ALPINE_GLIBC_I18N_PACKAGE_FILENAME" && \ + mv /etc/nsswitch.conf /etc/nsswitch.conf.bak && \ + apk add --no-cache --force-overwrite \ + "$ALPINE_GLIBC_BASE_PACKAGE_FILENAME" \ + "$ALPINE_GLIBC_BIN_PACKAGE_FILENAME" \ + "$ALPINE_GLIBC_I18N_PACKAGE_FILENAME" && \ + \ + mv /etc/nsswitch.conf.bak /etc/nsswitch.conf && \ + rm "/etc/apk/keys/sgerrand.rsa.pub" && \ + (/usr/glibc-compat/bin/localedef --force --inputfile POSIX --charmap UTF-8 "$LANG" || true) && \ + echo "export LANG=$LANG" > /etc/profile.d/locale.sh && \ + \ + apk del glibc-i18n && \ + \ + rm "/root/.wget-hsts" && \ + apk del .build-dependencies && \ + rm \ + "$ALPINE_GLIBC_BASE_PACKAGE_FILENAME" \ + "$ALPINE_GLIBC_BIN_PACKAGE_FILENAME" \ + "$ALPINE_GLIBC_I18N_PACKAGE_FILENAME" + +# Linter install +RUN curl --retry 5 --retry-delay 5 -sLO https://raw.githubusercontent.com/clj-kondo/clj-kondo/master/script/install-clj-kondo \ && chmod +x install-clj-kondo \ && ./install-clj-kondo diff --git a/docs/descriptors/clojure_cljstyle.md b/docs/descriptors/clojure_cljstyle.md new file mode 100644 index 00000000000..57bede819fa --- /dev/null +++ b/docs/descriptors/clojure_cljstyle.md @@ -0,0 +1,168 @@ +--- +title: cljstyle configuration in MegaLinter +description: How to use cljstyle (configure, ignore files, ignore errors, help & version documentations) to analyze CLOJURE files +--- + + +# cljstyle +[![GitHub stars](https://img.shields.io/github/stars/greglook/cljstyle?cacheSeconds=3600)](https://github.com/greglook/cljstyle) ![autofix](https://shields.io/badge/-autofix-green) [![GitHub release (latest SemVer)](https://img.shields.io/github/v/release/greglook/cljstyle?sort=semver)](https://github.com/greglook/cljstyle/releases) [![GitHub last commit](https://img.shields.io/github/last-commit/greglook/cljstyle)](https://github.com/greglook/cljstyle/commits) [![GitHub commit activity](https://img.shields.io/github/commit-activity/y/greglook/cljstyle)](https://github.com/greglook/cljstyle/graphs/commit-activity/) [![GitHub contributors](https://img.shields.io/github/contributors/greglook/cljstyle)](https://github.com/greglook/cljstyle/graphs/contributors/) + +_This linter has been disabled in this version_ + +## cljstyle documentation + +- Version in MegaLinter: **0.15.0** +- Visit [Official Web Site](https://github.com/greglook/cljstyle#readme){target=_blank} +- See [How to configure cljstyle rules](https://github.com/greglook/cljstyle/blob/main/doc/configuration.md#format-rules){target=_blank} +- See [How to disable cljstyle rules in files](https://github.com/greglook/cljstyle#ignoring-forms){target=_blank} +- See [Index of problems detected by cljstyle](https://github.com/greglook/cljstyle/blob/main/doc/configuration.md#format-rules){target=_blank} + +[![cljstyle - GitHub](https://gh-card.dev/repos/greglook/cljstyle.svg?fullname=)](https://github.com/greglook/cljstyle){target=_blank} + +## Configuration in MegaLinter + +- Enable cljstyle by adding `CLOJURE_CLJSTYLE` in [ENABLE_LINTERS variable](https://megalinter.io/7.13.0/configuration/#activation-and-deactivation) +- Disable cljstyle by adding `CLOJURE_CLJSTYLE` in [DISABLE_LINTERS variable](https://megalinter.io/7.13.0/configuration/#activation-and-deactivation) + +- Enable **autofixes** by adding `CLOJURE_CLJSTYLE` in [APPLY_FIXES variable](https://megalinter.io/7.13.0/configuration/#apply-fixes) + +| Variable | Description | Default value | +|----------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------| +| CLOJURE_CLJSTYLE_ARGUMENTS | User custom arguments to add in linter CLI call
Ex: `-s --foo "bar"` | | +| CLOJURE_CLJSTYLE_COMMAND_REMOVE_ARGUMENTS | User custom arguments to remove from command line before calling the linter
Ex: `-s --foo "bar"` | | +| CLOJURE_CLJSTYLE_FILTER_REGEX_INCLUDE | Custom regex including filter
Ex: `(src\|lib)` | Include every file | +| CLOJURE_CLJSTYLE_FILTER_REGEX_EXCLUDE | Custom regex excluding filter
Ex: `(test\|examples)` | Exclude no file | +| CLOJURE_CLJSTYLE_CLI_LINT_MODE | Override default CLI lint mode
- `file`: Calls the linter for each file
- `project`: Call the linter from the root of the project | `file` | +| CLOJURE_CLJSTYLE_FILE_EXTENSIONS | Allowed file extensions. `"*"` matches any extension, `""` matches empty extension. Empty list excludes all files
Ex: `[".py", ""]` | `[".clj", ".cljs", ".cljc", ".edn"]` | +| CLOJURE_CLJSTYLE_FILE_NAMES_REGEX | File name regex filters. Regular expression list for filtering files by their base names using regex full match. Empty list includes all files
Ex: `["Dockerfile(-.+)?", "Jenkinsfile"]` | Include every file | +| CLOJURE_CLJSTYLE_PRE_COMMANDS | List of bash commands to run before the linter | None | +| CLOJURE_CLJSTYLE_POST_COMMANDS | List of bash commands to run after the linter | None | +| CLOJURE_CLJSTYLE_UNSECURED_ENV_VARIABLES | List of env variables explicitly not filtered before calling CLOJURE_CLJSTYLE and its pre/post commands | None | +| CLOJURE_CLJSTYLE_CONFIG_FILE | cljstyle configuration file name
Use `LINTER_DEFAULT` to let the linter find it | `.cljstyle` | +| CLOJURE_CLJSTYLE_RULES_PATH | Path where to find linter configuration file | Workspace folder, then MegaLinter default rules | +| CLOJURE_CLJSTYLE_DISABLE_ERRORS | Run linter but consider errors as warnings | `false` | +| CLOJURE_CLJSTYLE_DISABLE_ERRORS_IF_LESS_THAN | Maximum number of errors allowed | `0` | +| CLOJURE_CLJSTYLE_CLI_EXECUTABLE | Override CLI executable | `['cljstyle']` | + +## IDE Integration + +Use cljstyle in your favorite IDE to catch errors before MegaLinter ! + +| | IDE | Extension Name | Install | +|:------------------------------------------------------------------------------------------------------------------------------------------:|----------------------------------------------|-------------------------------------------------------------------------------------------|:---------------------------------------------------------------------------------------------------------:| +| | [Emacs](https://www.gnu.org/software/emacs/) | [cljstyle-mode](https://github.com/greglook/cljstyle/blob/main/doc/integrations.md#emacs) | [Visit Web Site](https://github.com/greglook/cljstyle/blob/main/doc/integrations.md#emacs){target=_blank} | + +## MegaLinter Flavours + +This linter is available in the following flavours + +| | Flavor | Description | Embedded linters | Info | +|:--------------------------------------------------------------------------------------------------------------------------------------------------------:|:-------------------------------------------------------|:--------------------------|:----------------:|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:| +| | [all](https://megalinter.io/7.13.0/supported-linters/) | Default MegaLinter Flavor | 125 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter) | + +## Behind the scenes + +### How are identified applicable files + +- File extensions: `.clj`, `.cljs`, `.cljc`, `.edn` + + + +### How the linting is performed + +- cljstyle is called one time by identified file (`file` CLI lint mode) + +### Example calls + +```shell +cljstyle check +``` + +```shell +cljstyle fix +``` + +```shell +clj-kondo fix myfile.clj path/to/myfile.clj +``` + + +### Help content + +```shell +Usage: cljstyle [options] [args...] + +Commands: + find Find files which would be processed. + check Check source files and print a diff for errors. + fix Edit source files to fix formatting errors. + pipe Fixes formatting errors from stdin and pipes the results to stdout. + config Show config used for a given path. + migrate Migrate legacy configuration files. + version Print program version information. + +Options: + --ignore PATTERN Ignore files matching the given pattern. May be set multiple times. + --timeout SEC 300 Maximum time to allow the process to run for. + --timeout-trace Dump thread stack traces when the tool times out. + --stats FILE Write formatting stats to the named file. The extension controls the format and may be either 'edn' or 'tsv'. + --report Print stats report at the end of a run. + --report-timing Print detailed rule timings at the end of a run. + --no-color Don't output ANSI color codes. + -v, --verbose Print detailed debugging output. + -h, --help Show help and usage information. +``` + +### Installation on mega-linter Docker image + +- Dockerfile commands : +```dockerfile +# Parent descriptor install +ENV LANG=C.UTF-8 +RUN ALPINE_GLIBC_BASE_URL="https://github.com/sgerrand/alpine-pkg-glibc/releases/download" && \ + ALPINE_GLIBC_PACKAGE_VERSION="2.34-r0" && \ + ALPINE_GLIBC_BASE_PACKAGE_FILENAME="glibc-$ALPINE_GLIBC_PACKAGE_VERSION.apk" && \ + ALPINE_GLIBC_BIN_PACKAGE_FILENAME="glibc-bin-$ALPINE_GLIBC_PACKAGE_VERSION.apk" && \ + ALPINE_GLIBC_I18N_PACKAGE_FILENAME="glibc-i18n-$ALPINE_GLIBC_PACKAGE_VERSION.apk" && \ + apk add --no-cache --virtual=.build-dependencies wget ca-certificates && \ + echo \ + "-----BEGIN PUBLIC KEY-----\ + MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApZ2u1KJKUu/fW4A25y9m\ + y70AGEa/J3Wi5ibNVGNn1gT1r0VfgeWd0pUybS4UmcHdiNzxJPgoWQhV2SSW1JYu\ + tOqKZF5QSN6X937PTUpNBjUvLtTQ1ve1fp39uf/lEXPpFpOPL88LKnDBgbh7wkCp\ + m2KzLVGChf83MS0ShL6G9EQIAUxLm99VpgRjwqTQ/KfzGtpke1wqws4au0Ab4qPY\ + KXvMLSPLUp7cfulWvhmZSegr5AdhNw5KNizPqCJT8ZrGvgHypXyiFvvAH5YRtSsc\ + Zvo9GI2e2MaZyo9/lvb+LbLEJZKEQckqRj4P26gmASrZEPStwc+yqy1ShHLA0j6m\ + 1QIDAQAB\ + -----END PUBLIC KEY-----" | sed 's/ */\\n/g' > "/etc/apk/keys/sgerrand.rsa.pub" && \ + wget --quiet --tries=10 --waitretry=10 \ + "$ALPINE_GLIBC_BASE_URL/$ALPINE_GLIBC_PACKAGE_VERSION/$ALPINE_GLIBC_BASE_PACKAGE_FILENAME" \ + "$ALPINE_GLIBC_BASE_URL/$ALPINE_GLIBC_PACKAGE_VERSION/$ALPINE_GLIBC_BIN_PACKAGE_FILENAME" \ + "$ALPINE_GLIBC_BASE_URL/$ALPINE_GLIBC_PACKAGE_VERSION/$ALPINE_GLIBC_I18N_PACKAGE_FILENAME" && \ + mv /etc/nsswitch.conf /etc/nsswitch.conf.bak && \ + apk add --no-cache --force-overwrite \ + "$ALPINE_GLIBC_BASE_PACKAGE_FILENAME" \ + "$ALPINE_GLIBC_BIN_PACKAGE_FILENAME" \ + "$ALPINE_GLIBC_I18N_PACKAGE_FILENAME" && \ + \ + mv /etc/nsswitch.conf.bak /etc/nsswitch.conf && \ + rm "/etc/apk/keys/sgerrand.rsa.pub" && \ + (/usr/glibc-compat/bin/localedef --force --inputfile POSIX --charmap UTF-8 "$LANG" || true) && \ + echo "export LANG=$LANG" > /etc/profile.d/locale.sh && \ + \ + apk del glibc-i18n && \ + \ + rm "/root/.wget-hsts" && \ + apk del .build-dependencies && \ + rm \ + "$ALPINE_GLIBC_BASE_PACKAGE_FILENAME" \ + "$ALPINE_GLIBC_BIN_PACKAGE_FILENAME" \ + "$ALPINE_GLIBC_I18N_PACKAGE_FILENAME" + +# Linter install +RUN curl --retry 5 --retry-delay 5 -sLO https://raw.githubusercontent.com/greglook/cljstyle/main/util/install-cljstyle \ + && chmod +x install-cljstyle \ + && ./install-cljstyle + +``` + diff --git a/docs/descriptors/cloudformation.md b/docs/descriptors/cloudformation.md index 9c851172f01..214973c19ed 100644 --- a/docs/descriptors/cloudformation.md +++ b/docs/descriptors/cloudformation.md @@ -3,7 +3,7 @@ title: CLOUDFORMATION linters in MegaLinter description: cfn-lint is available to analyze CLOUDFORMATION files in MegaLinter --- - + # CLOUDFORMATION @@ -26,8 +26,10 @@ description: cfn-lint is available to analyze CLOUDFORMATION files in MegaLinter ## Configuration in MegaLinter -| Variable | Description | Default value | -|-------------------------------------|-------------------------------|---------------| -| CLOUDFORMATION_FILTER_REGEX_INCLUDE | Custom regex including filter | | -| CLOUDFORMATION_FILTER_REGEX_EXCLUDE | Custom regex excluding filter | | +| Variable | Description | Default value | +|-------------------------------------|-------------------------------------------------|---------------| +| CLOUDFORMATION_PRE_COMMANDS | List of bash commands to run before the linters | None | +| CLOUDFORMATION_POST_COMMANDS | List of bash commands to run after the linters | None | +| CLOUDFORMATION_FILTER_REGEX_INCLUDE | Custom regex including filter | | +| CLOUDFORMATION_FILTER_REGEX_EXCLUDE | Custom regex excluding filter | | diff --git a/docs/descriptors/cloudformation_cfn_lint.md b/docs/descriptors/cloudformation_cfn_lint.md index a311b29bd94..a36c1a74d8a 100644 --- a/docs/descriptors/cloudformation_cfn_lint.md +++ b/docs/descriptors/cloudformation_cfn_lint.md @@ -3,7 +3,7 @@ title: cfn-lint configuration in MegaLinter description: How to use cfn-lint (configure, ignore files, ignore errors, help & version documentations) to analyze CLOUDFORMATION files --- - +
@@ -15,21 +15,22 @@ description: How to use cfn-lint (configure, ignore files, ignore errors, help & ## cfn-lint documentation -- Version in MegaLinter: **0.76.1** +- Version in MegaLinter: **1.5.0** - Visit [Official Web Site](https://github.com/aws-cloudformation/cfn-lint#readme){target=_blank} - - If custom `.cfnlintrc.yml` config file is not found, [.cfnlintrc.yml](https://github.com/oxsecurity/megalinter/tree/main/TEMPLATES/.cfnlintrc.yml){target=_blank} will be used + - If custom `.cfnlintrc.yml` config file isn't found, [.cfnlintrc.yml](https://github.com/oxsecurity/megalinter/tree/main/TEMPLATES/.cfnlintrc.yml){target=_blank} will be used - See [Index of problems detected by cfn-lint](https://github.com/aws-cloudformation/cfn-lint/blob/main/docs/rules.md){target=_blank} [![cfn-lint - GitHub](https://gh-card.dev/repos/aws-cloudformation/cfn-lint.svg?fullname=)](https://github.com/aws-cloudformation/cfn-lint){target=_blank} ## Configuration in MegaLinter -- Enable cfn-lint by adding `CLOUDFORMATION_CFN_LINT` in [ENABLE_LINTERS variable](https://megalinter.io/6.22.2/configuration/#activation-and-deactivation) -- Disable cfn-lint by adding `CLOUDFORMATION_CFN_LINT` in [DISABLE_LINTERS variable](https://megalinter.io/6.22.2/configuration/#activation-and-deactivation) +- Enable cfn-lint by adding `CLOUDFORMATION_CFN_LINT` in [ENABLE_LINTERS variable](https://megalinter.io/7.13.0/configuration/#activation-and-deactivation) +- Disable cfn-lint by adding `CLOUDFORMATION_CFN_LINT` in [DISABLE_LINTERS variable](https://megalinter.io/7.13.0/configuration/#activation-and-deactivation) | Variable | Description | Default value | |-----------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------| | CLOUDFORMATION_CFN_LINT_ARGUMENTS | User custom arguments to add in linter CLI call
Ex: `-s --foo "bar"` | | +| CLOUDFORMATION_CFN_LINT_COMMAND_REMOVE_ARGUMENTS | User custom arguments to remove from command line before calling the linter
Ex: `-s --foo "bar"` | | | CLOUDFORMATION_CFN_LINT_FILTER_REGEX_INCLUDE | Custom regex including filter
Ex: `(src\|lib)` | Include every file | | CLOUDFORMATION_CFN_LINT_FILTER_REGEX_EXCLUDE | Custom regex excluding filter
Ex: `(test\|examples)` | Exclude no file | | CLOUDFORMATION_CFN_LINT_CLI_LINT_MODE | Override default CLI lint mode
- `file`: Calls the linter for each file
- `list_of_files`: Call the linter with the list of files as argument
- `project`: Call the linter from the root of the project | `list_of_files` | @@ -37,10 +38,12 @@ description: How to use cfn-lint (configure, ignore files, ignore errors, help & | CLOUDFORMATION_CFN_LINT_FILE_NAMES_REGEX | File name regex filters. Regular expression list for filtering files by their base names using regex full match. Empty list includes all files
Ex: `["Dockerfile(-.+)?", "Jenkinsfile"]` | Include every file | | CLOUDFORMATION_CFN_LINT_PRE_COMMANDS | List of bash commands to run before the linter | None | | CLOUDFORMATION_CFN_LINT_POST_COMMANDS | List of bash commands to run after the linter | None | +| CLOUDFORMATION_CFN_LINT_UNSECURED_ENV_VARIABLES | List of env variables explicitly not filtered before calling CLOUDFORMATION_CFN_LINT and its pre/post commands | None | | CLOUDFORMATION_CFN_LINT_CONFIG_FILE | cfn-lint configuration file name
Use `LINTER_DEFAULT` to let the linter find it | `.cfnlintrc.yml` | | CLOUDFORMATION_CFN_LINT_RULES_PATH | Path where to find linter configuration file | Workspace folder, then MegaLinter default rules | | CLOUDFORMATION_CFN_LINT_DISABLE_ERRORS | Run linter but consider errors as warnings | `false` | | CLOUDFORMATION_CFN_LINT_DISABLE_ERRORS_IF_LESS_THAN | Maximum number of errors allowed | `0` | +| CLOUDFORMATION_CFN_LINT_CLI_EXECUTABLE | Override CLI executable | `['cfn-lint']` | ## IDE Integration @@ -59,9 +62,9 @@ This linter is available in the following flavours | | Flavor | Description | Embedded linters | Info | |:--------------------------------------------------------------------------------------------------------------------------------------------------------:|:-----------------------------------------------------------|:------------------------------------------------|:----------------:|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:| -|
| [all](https://megalinter.io/6.22.2/supported-linters/) | Default MegaLinter Flavor | 114 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter) | -| | [cupcake](https://megalinter.io/6.22.2/flavors/cupcake/) | MegaLinter for the most commonly used languages | 82 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-cupcake/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-cupcake) | -| | [security](https://megalinter.io/6.22.2/flavors/security/) | Optimized for security | 22 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-security/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-security) | +| | [all](https://megalinter.io/7.13.0/supported-linters/) | Default MegaLinter Flavor | 125 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter) | +| | [cupcake](https://megalinter.io/7.13.0/flavors/cupcake/) | MegaLinter for the most commonly used languages | 84 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-cupcake/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-cupcake) | +| | [security](https://megalinter.io/7.13.0/flavors/security/) | Optimized for security | 24 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-security/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-security) | ## Behind the scenes @@ -93,7 +96,7 @@ cfn-lint --config-file .cfnlintrc.yml myfile.yml usage: Basic: cfn-lint test.yaml Ignore a rule: cfn-lint -i E3012 -- test.yaml -Configure a rule: cfn-lint -x E3012:strict=false -t test.yaml +Configure a rule: cfn-lint -x E3012:strict=true -t test.yaml Lint all yaml files in a folder: cfn-lint dir/**/*.yaml CloudFormation Linter @@ -125,7 +128,7 @@ Standard: Include experimental rules -x CONFIGURE_RULES [CONFIGURE_RULES ...], --configure-rule CONFIGURE_RULES [CONFIGURE_RULES ...] Provide configuration for a rule. Format - RuleId:key=value. Example: E3012:strict=false + RuleId:key=value. Example: E3012:strict=true --config-file CONFIG_FILE Specify the cfnlintrc file to use -z CUSTOM_RULES, --custom-rules CUSTOM_RULES @@ -159,4 +162,4 @@ Advanced / Debugging: ### Installation on mega-linter Docker image - PIP packages (Python): - - [cfn-lint](https://pypi.org/project/cfn-lint) + - [cfn-lint[sarif]](https://pypi.org/project/cfn-lint[sarif]) diff --git a/docs/descriptors/coffee.md b/docs/descriptors/coffee.md index 203456ea88c..2dde47f7817 100644 --- a/docs/descriptors/coffee.md +++ b/docs/descriptors/coffee.md @@ -3,7 +3,7 @@ title: COFFEE linters in MegaLinter description: coffeelint is available to analyze COFFEE files in MegaLinter --- - + # COFFEE @@ -20,8 +20,10 @@ description: coffeelint is available to analyze COFFEE files in MegaLinter ## Configuration in MegaLinter -| Variable | Description | Default value | -|-----------------------------|-------------------------------|---------------| -| COFFEE_FILTER_REGEX_INCLUDE | Custom regex including filter | | -| COFFEE_FILTER_REGEX_EXCLUDE | Custom regex excluding filter | | +| Variable | Description | Default value | +|-----------------------------|-------------------------------------------------|---------------| +| COFFEE_PRE_COMMANDS | List of bash commands to run before the linters | None | +| COFFEE_POST_COMMANDS | List of bash commands to run after the linters | None | +| COFFEE_FILTER_REGEX_INCLUDE | Custom regex including filter | | +| COFFEE_FILTER_REGEX_EXCLUDE | Custom regex excluding filter | | diff --git a/docs/descriptors/coffee_coffeelint.md b/docs/descriptors/coffee_coffeelint.md index 272b0ed609b..b00fc35423e 100644 --- a/docs/descriptors/coffee_coffeelint.md +++ b/docs/descriptors/coffee_coffeelint.md @@ -3,29 +3,28 @@ title: coffeelint configuration in MegaLinter description: How to use coffeelint (configure, ignore files, ignore errors, help & version documentations) to analyze COFFEE files --- - + # coffeelint [![GitHub stars](https://img.shields.io/github/stars/clutchski/coffeelint?cacheSeconds=3600)](https://github.com/clutchski/coffeelint) [![GitHub release (latest SemVer)](https://img.shields.io/github/v/release/clutchski/coffeelint?sort=semver)](https://github.com/clutchski/coffeelint/releases) [![GitHub last commit](https://img.shields.io/github/last-commit/clutchski/coffeelint)](https://github.com/clutchski/coffeelint/commits) [![GitHub commit activity](https://img.shields.io/github/commit-activity/y/clutchski/coffeelint)](https://github.com/clutchski/coffeelint/graphs/commit-activity/) [![GitHub contributors](https://img.shields.io/github/contributors/clutchski/coffeelint)](https://github.com/clutchski/coffeelint/graphs/contributors/) ## coffeelint documentation - Version in MegaLinter: **5.2.11** -- Visit [Official Web Site](http://www.coffeelint.org){target=_blank} -- See [How to configure coffeelint rules](http://www.coffeelint.org/#options){target=_blank} - - If custom `.coffee-lint.json` config file is not found, [.coffee-lint.json](https://github.com/oxsecurity/megalinter/tree/main/TEMPLATES/.coffee-lint.json){target=_blank} will be used -- See [How to disable coffeelint rules in files](http://www.coffeelint.org/#options){target=_blank} -- See [Index of problems detected by coffeelint](http://www.coffeelint.org/#options){target=_blank} +- Visit [Official Web Site](https://coffeelint.github.io/){target=_blank} + - If custom `.coffee-lint.json` config file isn't found, [.coffee-lint.json](https://github.com/oxsecurity/megalinter/tree/main/TEMPLATES/.coffee-lint.json){target=_blank} will be used +- See [Index of problems detected by coffeelint](https://coffeelint.github.io/#options){target=_blank} [![coffeelint - GitHub](https://gh-card.dev/repos/clutchski/coffeelint.svg?fullname=)](https://github.com/clutchski/coffeelint){target=_blank} ## Configuration in MegaLinter -- Enable coffeelint by adding `COFFEE_COFFEELINT` in [ENABLE_LINTERS variable](https://megalinter.io/6.22.2/configuration/#activation-and-deactivation) -- Disable coffeelint by adding `COFFEE_COFFEELINT` in [DISABLE_LINTERS variable](https://megalinter.io/6.22.2/configuration/#activation-and-deactivation) +- Enable coffeelint by adding `COFFEE_COFFEELINT` in [ENABLE_LINTERS variable](https://megalinter.io/7.13.0/configuration/#activation-and-deactivation) +- Disable coffeelint by adding `COFFEE_COFFEELINT` in [DISABLE_LINTERS variable](https://megalinter.io/7.13.0/configuration/#activation-and-deactivation) | Variable | Description | Default value | |-----------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------| | COFFEE_COFFEELINT_ARGUMENTS | User custom arguments to add in linter CLI call
Ex: `-s --foo "bar"` | | +| COFFEE_COFFEELINT_COMMAND_REMOVE_ARGUMENTS | User custom arguments to remove from command line before calling the linter
Ex: `-s --foo "bar"` | | | COFFEE_COFFEELINT_FILTER_REGEX_INCLUDE | Custom regex including filter
Ex: `(src\|lib)` | Include every file | | COFFEE_COFFEELINT_FILTER_REGEX_EXCLUDE | Custom regex excluding filter
Ex: `(test\|examples)` | Exclude no file | | COFFEE_COFFEELINT_CLI_LINT_MODE | Override default CLI lint mode
- `file`: Calls the linter for each file
- `project`: Call the linter from the root of the project | `file` | @@ -33,10 +32,12 @@ description: How to use coffeelint (configure, ignore files, ignore errors, help | COFFEE_COFFEELINT_FILE_NAMES_REGEX | File name regex filters. Regular expression list for filtering files by their base names using regex full match. Empty list includes all files
Ex: `["Dockerfile(-.+)?", "Jenkinsfile"]` | Include every file | | COFFEE_COFFEELINT_PRE_COMMANDS | List of bash commands to run before the linter | None | | COFFEE_COFFEELINT_POST_COMMANDS | List of bash commands to run after the linter | None | +| COFFEE_COFFEELINT_UNSECURED_ENV_VARIABLES | List of env variables explicitly not filtered before calling COFFEE_COFFEELINT and its pre/post commands | None | | COFFEE_COFFEELINT_CONFIG_FILE | coffeelint configuration file name
Use `LINTER_DEFAULT` to let the linter find it | `.coffee-lint.json` | | COFFEE_COFFEELINT_RULES_PATH | Path where to find linter configuration file | Workspace folder, then MegaLinter default rules | | COFFEE_COFFEELINT_DISABLE_ERRORS | Run linter but consider errors as warnings | `false` | | COFFEE_COFFEELINT_DISABLE_ERRORS_IF_LESS_THAN | Maximum number of errors allowed | `0` | +| COFFEE_COFFEELINT_CLI_EXECUTABLE | Override CLI executable | `['coffeelint']` | ## IDE Integration @@ -51,10 +52,11 @@ Use coffeelint in your favorite IDE to catch errors before MegaLinter ! This linter is available in the following flavours -| | Flavor | Description | Embedded linters | Info | -|:--------------------------------------------------------------------------------------------------------------------------------------------------------:|:---------------------------------------------------------------|:------------------------------------------------------|:----------------:|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:| -| | [all](https://megalinter.io/6.22.2/supported-linters/) | Default MegaLinter Flavor | 114 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter) | -| | [javascript](https://megalinter.io/6.22.2/flavors/javascript/) | Optimized for JAVASCRIPT or TYPESCRIPT based projects | 57 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-javascript/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-javascript) | +| | Flavor | Description | Embedded linters | Info | +|:--------------------------------------------------------------------------------------------------------------------------------------------------------:|:---------------------------------------------------------------|:---------------------------------------------------------|:----------------:|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:| +| | [all](https://megalinter.io/7.13.0/supported-linters/) | Default MegaLinter Flavor | 125 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter) | +| | [dotnetweb](https://megalinter.io/7.13.0/flavors/dotnetweb/) | Optimized for C, C++, C# or VB based projects with JS/TS | 72 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-dotnetweb/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-dotnetweb) | +| | [javascript](https://megalinter.io/7.13.0/flavors/javascript/) | Optimized for JAVASCRIPT or TYPESCRIPT based projects | 61 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-javascript/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-javascript) | ## Behind the scenes diff --git a/docs/descriptors/copypaste.md b/docs/descriptors/copypaste.md index a23464e5cc9..d04eb0c4490 100644 --- a/docs/descriptors/copypaste.md +++ b/docs/descriptors/copypaste.md @@ -3,7 +3,7 @@ title: COPYPASTE linters in MegaLinter description: jscpd is available to analyze COPYPASTE files in MegaLinter --- - + # COPYPASTE @@ -17,8 +17,10 @@ description: jscpd is available to analyze COPYPASTE files in MegaLinter ## Configuration in MegaLinter -| Variable | Description | Default value | -|--------------------------------|-------------------------------|---------------| -| COPYPASTE_FILTER_REGEX_INCLUDE | Custom regex including filter | | -| COPYPASTE_FILTER_REGEX_EXCLUDE | Custom regex excluding filter | | +| Variable | Description | Default value | +|--------------------------------|-------------------------------------------------|---------------| +| COPYPASTE_PRE_COMMANDS | List of bash commands to run before the linters | None | +| COPYPASTE_POST_COMMANDS | List of bash commands to run after the linters | None | +| COPYPASTE_FILTER_REGEX_INCLUDE | Custom regex including filter | | +| COPYPASTE_FILTER_REGEX_EXCLUDE | Custom regex excluding filter | | diff --git a/docs/descriptors/copypaste_jscpd.md b/docs/descriptors/copypaste_jscpd.md index a912558a881..c68b65c3c5f 100644 --- a/docs/descriptors/copypaste_jscpd.md +++ b/docs/descriptors/copypaste_jscpd.md @@ -3,7 +3,7 @@ title: jscpd configuration in MegaLinter description: How to use jscpd (configure, ignore files, ignore errors, help & version documentations) to analyze COPYPASTE files --- - +
@@ -34,28 +34,31 @@ Example: ## jscpd documentation -- Version in MegaLinter: **3.5.4** +- Version in MegaLinter: **4.0.5** - Visit [Official Web Site](https://github.com/kucherenko/jscpd/tree/master/packages/jscpd#readme){target=_blank} - See [How to configure jscpd rules](https://github.com/kucherenko/jscpd/tree/master/packages/jscpd#config-file){target=_blank} - - If custom `.jscpd.json` config file is not found, [.jscpd.json](https://github.com/oxsecurity/megalinter/tree/main/TEMPLATES/.jscpd.json){target=_blank} will be used + - If custom `.jscpd.json` config file isn't found, [.jscpd.json](https://github.com/oxsecurity/megalinter/tree/main/TEMPLATES/.jscpd.json){target=_blank} will be used - See [How to disable jscpd rules in files](https://github.com/kucherenko/jscpd/tree/master/packages/jscpd#ignored-blocks){target=_blank} [![jscpd - GitHub](https://gh-card.dev/repos/kucherenko/jscpd.svg?fullname=)](https://github.com/kucherenko/jscpd){target=_blank} ## Configuration in MegaLinter -- Enable jscpd by adding `COPYPASTE_JSCPD` in [ENABLE_LINTERS variable](https://megalinter.io/6.22.2/configuration/#activation-and-deactivation) -- Disable jscpd by adding `COPYPASTE_JSCPD` in [DISABLE_LINTERS variable](https://megalinter.io/6.22.2/configuration/#activation-and-deactivation) - -| Variable | Description | Default value | -|---------------------------------------------|----------------------------------------------------------------------------------|-------------------------------------------------| -| COPYPASTE_JSCPD_ARGUMENTS | User custom arguments to add in linter CLI call
Ex: `-s --foo "bar"` | | -| COPYPASTE_JSCPD_PRE_COMMANDS | List of bash commands to run before the linter | None | -| COPYPASTE_JSCPD_POST_COMMANDS | List of bash commands to run after the linter | None | -| COPYPASTE_JSCPD_CONFIG_FILE | jscpd configuration file name
Use `LINTER_DEFAULT` to let the linter find it | `.jscpd.json` | -| COPYPASTE_JSCPD_RULES_PATH | Path where to find linter configuration file | Workspace folder, then MegaLinter default rules | -| COPYPASTE_JSCPD_DISABLE_ERRORS | Run linter but consider errors as warnings | `false` | -| COPYPASTE_JSCPD_DISABLE_ERRORS_IF_LESS_THAN | Maximum number of errors allowed | `0` | +- Enable jscpd by adding `COPYPASTE_JSCPD` in [ENABLE_LINTERS variable](https://megalinter.io/7.13.0/configuration/#activation-and-deactivation) +- Disable jscpd by adding `COPYPASTE_JSCPD` in [DISABLE_LINTERS variable](https://megalinter.io/7.13.0/configuration/#activation-and-deactivation) + +| Variable | Description | Default value | +|---------------------------------------------|--------------------------------------------------------------------------------------------------------|-------------------------------------------------| +| COPYPASTE_JSCPD_ARGUMENTS | User custom arguments to add in linter CLI call
Ex: `-s --foo "bar"` | | +| COPYPASTE_JSCPD_COMMAND_REMOVE_ARGUMENTS | User custom arguments to remove from command line before calling the linter
Ex: `-s --foo "bar"` | | +| COPYPASTE_JSCPD_PRE_COMMANDS | List of bash commands to run before the linter | None | +| COPYPASTE_JSCPD_POST_COMMANDS | List of bash commands to run after the linter | None | +| COPYPASTE_JSCPD_UNSECURED_ENV_VARIABLES | List of env variables explicitly not filtered before calling COPYPASTE_JSCPD and its pre/post commands | None | +| COPYPASTE_JSCPD_CONFIG_FILE | jscpd configuration file name
Use `LINTER_DEFAULT` to let the linter find it | `.jscpd.json` | +| COPYPASTE_JSCPD_RULES_PATH | Path where to find linter configuration file | Workspace folder, then MegaLinter default rules | +| COPYPASTE_JSCPD_DISABLE_ERRORS | Run linter but consider errors as warnings | `false` | +| COPYPASTE_JSCPD_DISABLE_ERRORS_IF_LESS_THAN | Maximum number of errors allowed | `0` | +| COPYPASTE_JSCPD_CLI_EXECUTABLE | Override CLI executable | `['jscpd']` | ## MegaLinter Flavours @@ -63,21 +66,23 @@ This linter is available in the following flavours | | Flavor | Description | Embedded linters | Info | |:--------------------------------------------------------------------------------------------------------------------------------------------------------:|:---------------------------------------------------------------------|:-----------------------------------------------------------------------|:----------------:|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:| -|
| [all](https://megalinter.io/6.22.2/supported-linters/) | Default MegaLinter Flavor | 114 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter) | -| | [ci_light](https://megalinter.io/6.22.2/flavors/ci_light/) | Optimized for CI items (Dockerfile, Jenkinsfile, JSON/YAML schemas,XML | 20 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-ci_light/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-ci_light) | -| | [cupcake](https://megalinter.io/6.22.2/flavors/cupcake/) | MegaLinter for the most commonly used languages | 82 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-cupcake/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-cupcake) | -| | [documentation](https://megalinter.io/6.22.2/flavors/documentation/) | MegaLinter for documentation projects | 48 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-documentation/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-documentation) | -| | [dotnet](https://megalinter.io/6.22.2/flavors/dotnet/) | Optimized for C, C++, C# or VB based projects | 60 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-dotnet/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-dotnet) | -| | [go](https://megalinter.io/6.22.2/flavors/go/) | Optimized for GO based projects | 50 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-go/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-go) | -| | [java](https://megalinter.io/6.22.2/flavors/java/) | Optimized for JAVA based projects | 51 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-java/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-java) | -| | [javascript](https://megalinter.io/6.22.2/flavors/javascript/) | Optimized for JAVASCRIPT or TYPESCRIPT based projects | 57 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-javascript/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-javascript) | -| | [php](https://megalinter.io/6.22.2/flavors/php/) | Optimized for PHP based projects | 51 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-php/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-php) | -| | [python](https://megalinter.io/6.22.2/flavors/python/) | Optimized for PYTHON based projects | 59 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-python/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-python) | -| | [ruby](https://megalinter.io/6.22.2/flavors/ruby/) | Optimized for RUBY based projects | 48 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-ruby/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-ruby) | -| | [rust](https://megalinter.io/6.22.2/flavors/rust/) | Optimized for RUST based projects | 48 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-rust/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-rust) | -| | [salesforce](https://megalinter.io/6.22.2/flavors/salesforce/) | Optimized for Salesforce based projects | 51 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-salesforce/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-salesforce) | -| | [swift](https://megalinter.io/6.22.2/flavors/swift/) | Optimized for SWIFT based projects | 48 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-swift/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-swift) | -| | [terraform](https://megalinter.io/6.22.2/flavors/terraform/) | Optimized for TERRAFORM based projects | 53 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-terraform/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-terraform) | +| | [all](https://megalinter.io/7.13.0/supported-linters/) | Default MegaLinter Flavor | 125 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter) | +| | [c_cpp](https://megalinter.io/7.13.0/flavors/c_cpp/) | Optimized for pure C/C++ projects | 56 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-c_cpp/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-c_cpp) | +| | [ci_light](https://megalinter.io/7.13.0/flavors/ci_light/) | Optimized for CI items (Dockerfile, Jenkinsfile, JSON/YAML schemas,XML | 21 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-ci_light/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-ci_light) | +| | [cupcake](https://megalinter.io/7.13.0/flavors/cupcake/) | MegaLinter for the most commonly used languages | 84 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-cupcake/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-cupcake) | +| | [documentation](https://megalinter.io/7.13.0/flavors/documentation/) | MegaLinter for documentation projects | 51 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-documentation/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-documentation) | +| | [dotnet](https://megalinter.io/7.13.0/flavors/dotnet/) | Optimized for C, C++, C# or VB based projects | 63 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-dotnet/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-dotnet) | +| | [dotnetweb](https://megalinter.io/7.13.0/flavors/dotnetweb/) | Optimized for C, C++, C# or VB based projects with JS/TS | 72 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-dotnetweb/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-dotnetweb) | +| | [go](https://megalinter.io/7.13.0/flavors/go/) | Optimized for GO based projects | 53 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-go/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-go) | +| | [java](https://megalinter.io/7.13.0/flavors/java/) | Optimized for JAVA based projects | 54 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-java/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-java) | +| | [javascript](https://megalinter.io/7.13.0/flavors/javascript/) | Optimized for JAVASCRIPT or TYPESCRIPT based projects | 61 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-javascript/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-javascript) | +| | [php](https://megalinter.io/7.13.0/flavors/php/) | Optimized for PHP based projects | 56 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-php/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-php) | +| | [python](https://megalinter.io/7.13.0/flavors/python/) | Optimized for PYTHON based projects | 64 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-python/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-python) | +| | [ruby](https://megalinter.io/7.13.0/flavors/ruby/) | Optimized for RUBY based projects | 52 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-ruby/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-ruby) | +| | [rust](https://megalinter.io/7.13.0/flavors/rust/) | Optimized for RUST based projects | 52 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-rust/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-rust) | +| | [salesforce](https://megalinter.io/7.13.0/flavors/salesforce/) | Optimized for Salesforce based projects | 56 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-salesforce/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-salesforce) | +| | [swift](https://megalinter.io/7.13.0/flavors/swift/) | Optimized for SWIFT based projects | 52 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-swift/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-swift) | +| | [terraform](https://megalinter.io/7.13.0/flavors/terraform/) | Optimized for TERRAFORM based projects | 56 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-terraform/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-terraform) | ## Behind the scenes @@ -92,7 +97,7 @@ This linter is available in the following flavours jscpd is called once on the whole project directory (`project` CLI lint mode) - filtering can not be done using MegaLinter configuration variables,it must be done using jscpd configuration or ignore file (if existing) -- `VALIDATE_ALL_CODEBASE: false` does not make jscpd analyze only updated files +- `VALIDATE_ALL_CODEBASE: false` doesn't make jscpd analyze only updated files ### Example calls @@ -132,7 +137,7 @@ Options: comma to use (Default is time,console) -o, --output [string] reporters to use (Default is ./report/) -m, --mode [string] mode of quality of search, can be "strict", "mild" and "weak" (Default is "function mild(token) { - return strict(token) && token.type !== 'empty' && token.type !== 'new_line'; + return strict(token) && token.type !== "empty" && token.type !== "new_line"; }") -f, --format [string] format or formats separated by comma (Example php,javascript,python) diff --git a/docs/descriptors/cpp.md b/docs/descriptors/cpp.md index ccc5fc79e2b..1397ce700ed 100644 --- a/docs/descriptors/cpp.md +++ b/docs/descriptors/cpp.md @@ -1,17 +1,18 @@ --- title: CPP linters in MegaLinter -description: cpplint is available to analyze CPP files in MegaLinter +description: cpplint, clang-format are available to analyze CPP files in MegaLinter --- - + # C++ ## Linters -| Linter | Additional | -|-------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------| -| [**cpplint**](cpp_cpplint.md)
[_CPP_CPPLINT_](cpp_cpplint.md) | [![GitHub stars](https://img.shields.io/github/stars/cpplint/cpplint?cacheSeconds=3600)](https://github.com/cpplint/cpplint) | +| Linter | Additional | +|---------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| [**cpplint**](cpp_cpplint.md)
[_CPP_CPPLINT_](cpp_cpplint.md) | [![GitHub stars](https://img.shields.io/github/stars/cpplint/cpplint?cacheSeconds=3600)](https://github.com/cpplint/cpplint) | +| [**clang-format**](cpp_clang_format.md)
[_CPP_CLANG_FORMAT_](cpp_clang_format.md) | [![GitHub stars](https://img.shields.io/github/stars/llvm/llvm-project?cacheSeconds=3600)](https://github.com/llvm/llvm-project) ![autofix](https://shields.io/badge/-autofix-green) | ## Linted files @@ -30,8 +31,10 @@ description: cpplint is available to analyze CPP files in MegaLinter ## Configuration in MegaLinter -| Variable | Description | Default value | -|--------------------------|-------------------------------|---------------| -| CPP_FILTER_REGEX_INCLUDE | Custom regex including filter | | -| CPP_FILTER_REGEX_EXCLUDE | Custom regex excluding filter | | +| Variable | Description | Default value | +|--------------------------|-------------------------------------------------|---------------| +| CPP_PRE_COMMANDS | List of bash commands to run before the linters | None | +| CPP_POST_COMMANDS | List of bash commands to run after the linters | None | +| CPP_FILTER_REGEX_INCLUDE | Custom regex including filter | | +| CPP_FILTER_REGEX_EXCLUDE | Custom regex excluding filter | | diff --git a/docs/descriptors/cpp_clang_format.md b/docs/descriptors/cpp_clang_format.md new file mode 100644 index 00000000000..b91ba55f8a3 --- /dev/null +++ b/docs/descriptors/cpp_clang_format.md @@ -0,0 +1,185 @@ +--- +title: clang-format configuration in MegaLinter +description: How to use clang-format (configure, ignore files, ignore errors, help & version documentations) to analyze CPP files +--- + + +# clang-format +[![GitHub stars](https://img.shields.io/github/stars/llvm/llvm-project?cacheSeconds=3600)](https://github.com/llvm/llvm-project) ![autofix](https://shields.io/badge/-autofix-green) [![GitHub release (latest SemVer)](https://img.shields.io/github/v/release/llvm/llvm-project?sort=semver)](https://github.com/llvm/llvm-project/releases) [![GitHub last commit](https://img.shields.io/github/last-commit/llvm/llvm-project)](https://github.com/llvm/llvm-project/commits) [![GitHub commit activity](https://img.shields.io/github/commit-activity/y/llvm/llvm-project)](https://github.com/llvm/llvm-project/graphs/commit-activity/) [![GitHub contributors](https://img.shields.io/github/contributors/llvm/llvm-project)](https://github.com/llvm/llvm-project/graphs/contributors/) + +## clang-format documentation + +- Version in MegaLinter: **17.0.6** +- Visit [Official Web Site](https://releases.llvm.org/17.0.1/tools/clang/docs/ClangFormat.html){target=_blank} +- See [How to disable clang-format rules in files](https://releases.llvm.org/17.0.1/tools/clang/docs/ClangFormatStyleOptions.html#disabling-formatting-on-a-piece-of-code){target=_blank} +- See [Index of problems detected by clang-format](https://releases.llvm.org/17.0.1/tools/clang/docs/ClangFormat.html){target=_blank} + +[![llvm-project - GitHub](https://gh-card.dev/repos/llvm/llvm-project.svg?fullname=)](https://github.com/llvm/llvm-project){target=_blank} + +## Configuration in MegaLinter + +- Enable clang-format by adding `CPP_CLANG_FORMAT` in [ENABLE_LINTERS variable](https://megalinter.io/7.13.0/configuration/#activation-and-deactivation) +- Disable clang-format by adding `CPP_CLANG_FORMAT` in [DISABLE_LINTERS variable](https://megalinter.io/7.13.0/configuration/#activation-and-deactivation) + +- Enable **autofixes** by adding `CPP_CLANG_FORMAT` in [APPLY_FIXES variable](https://megalinter.io/7.13.0/configuration/#apply-fixes) + +| Variable | Description | Default value | +|----------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------| +| CPP_CLANG_FORMAT_ARGUMENTS | User custom arguments to add in linter CLI call
Ex: `-s --foo "bar"` | | +| CPP_CLANG_FORMAT_COMMAND_REMOVE_ARGUMENTS | User custom arguments to remove from command line before calling the linter
Ex: `-s --foo "bar"` | | +| CPP_CLANG_FORMAT_FILTER_REGEX_INCLUDE | Custom regex including filter
Ex: `(src\|lib)` | Include every file | +| CPP_CLANG_FORMAT_FILTER_REGEX_EXCLUDE | Custom regex excluding filter
Ex: `(test\|examples)` | Exclude no file | +| CPP_CLANG_FORMAT_CLI_LINT_MODE | Override default CLI lint mode
- `file`: Calls the linter for each file
- `list_of_files`: Call the linter with the list of files as argument
- `project`: Call the linter from the root of the project | `list_of_files` | +| CPP_CLANG_FORMAT_FILE_EXTENSIONS | Allowed file extensions. `"*"` matches any extension, `""` matches empty extension. Empty list excludes all files
Ex: `[".py", ""]` | `[".cpp", ".h", ".cc", ".hpp", ".cxx", ".cu", ".hxx", ".c++", ".hh", ".h++", ".cuh"]` | +| CPP_CLANG_FORMAT_FILE_NAMES_REGEX | File name regex filters. Regular expression list for filtering files by their base names using regex full match. Empty list includes all files
Ex: `["Dockerfile(-.+)?", "Jenkinsfile"]` | Include every file | +| CPP_CLANG_FORMAT_PRE_COMMANDS | List of bash commands to run before the linter | None | +| CPP_CLANG_FORMAT_POST_COMMANDS | List of bash commands to run after the linter | None | +| CPP_CLANG_FORMAT_UNSECURED_ENV_VARIABLES | List of env variables explicitly not filtered before calling CPP_CLANG_FORMAT and its pre/post commands | None | +| CPP_CLANG_FORMAT_CONFIG_FILE | clang-format configuration file name
Use `LINTER_DEFAULT` to let the linter find it | `.clang-format` | +| CPP_CLANG_FORMAT_RULES_PATH | Path where to find linter configuration file | Workspace folder, then MegaLinter default rules | +| CPP_CLANG_FORMAT_DISABLE_ERRORS | Run linter but consider errors as warnings | `false` | +| CPP_CLANG_FORMAT_DISABLE_ERRORS_IF_LESS_THAN | Maximum number of errors allowed | `0` | +| CPP_CLANG_FORMAT_CLI_EXECUTABLE | Override CLI executable | `['clang-format']` | + +## IDE Integration + +Use clang-format in your favorite IDE to catch errors before MegaLinter ! + +| | IDE | Extension Name | Install | +|:-------------------------------------------------------------------------------------------------------------------------------------------:|------------------------------------------------------|------------------------------------------------------------------------------------------------------|:-----------------------------------------------------------------------------------------------------------------------------------------------------------------------:| +| | [Visual Studio Code](https://code.visualstudio.com/) | [Clang-Format](https://marketplace.visualstudio.com/items?itemName=xaver.clang-format) | [![Install in VSCode](https://github.com/oxsecurity/megalinter/raw/main/docs/assets/images/btn_install_vscode.png)](vscode:extension/xaver.clang-format){target=_blank} | +| | [Emacs](https://www.gnu.org/software/emacs/) | [clang-format](https://releases.llvm.org/17.0.1/tools/clang/docs/ClangFormat.html#emacs-integration) | [Visit Web Site](https://releases.llvm.org/17.0.1/tools/clang/docs/ClangFormat.html#emacs-integration){target=_blank} | + +## MegaLinter Flavours + +This linter is available in the following flavours + +| | Flavor | Description | Embedded linters | Info | +|:--------------------------------------------------------------------------------------------------------------------------------------------------------:|:-------------------------------------------------------|:----------------------------------|:----------------:|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:| +| | [all](https://megalinter.io/7.13.0/supported-linters/) | Default MegaLinter Flavor | 125 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter) | +| | [c_cpp](https://megalinter.io/7.13.0/flavors/c_cpp/) | Optimized for pure C/C++ projects | 56 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-c_cpp/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-c_cpp) | + +## Behind the scenes + +### How are identified applicable files + +- File extensions: `.cpp`, `.h`, `.cc`, `.hpp`, `.cxx`, `.cu`, `.hxx`, `.c++`, `.hh`, `.h++`, `.cuh` + + + +### How the linting is performed + +- clang-format is called once with the list of files as arguments (`list_of_files` CLI lint mode) + +### Example calls + +```shell +clang-format --Werror --dry-run myfile.cpp +``` + + +### Help content + +```shell +OVERVIEW: A tool to format C/C++/Java/JavaScript/JSON/Objective-C/Protobuf/C# code. + +If no arguments are specified, it formats the code from standard input +and writes the result to the standard output. +If s are given, it reformats the files. If -i is specified +together with s, the files are edited in-place. Otherwise, the +result is written to the standard output. + +USAGE: clang-format [options] [ ...] + +OPTIONS: + +Clang-format options: + + --Werror - If set, changes formatting warnings to errors + --Wno-error= - If set don't error out on the specified warning type. + =unknown - If set, unknown format options are only warned about. + This can be used to enable formatting, even if the + configuration contains unknown (newer) options. + Use with caution, as this might lead to dramatically + differing format depending on an option being + supported or not. + --assume-filename= - Set filename used to determine the language and to find + .clang-format file. + Only used when reading from stdin. + If this is not passed, the .clang-format file is searched + relative to the current working directory when reading stdin. + Unrecognized filenames are treated as C++. + supported: + CSharp: .cs + Java: .java + JavaScript: .mjs .js .ts + Json: .json + Objective-C: .m .mm + Proto: .proto .protodevel + TableGen: .td + TextProto: .textpb .pb.txt .textproto .asciipb + Verilog: .sv .svh .v .vh + --cursor= - The position of the cursor when invoking + clang-format from an editor integration + --dry-run - If set, do not actually make the formatting changes + --dump-config - Dump configuration options to stdout and exit. + Can be used with -style option. + --fallback-style= - The name of the predefined style used as a + fallback in case clang-format is invoked with + -style=file, but can not find the .clang-format + file to use. Defaults to 'LLVM'. + Use -fallback-style=none to skip formatting. + --ferror-limit= - Set the maximum number of clang-format errors to emit + before stopping (0 = no limit). + Used only with --dry-run or -n + --files= - A file containing a list of files to process, one per line. + -i - Inplace edit s, if specified. + --length= - Format a range of this length (in bytes). + Multiple ranges can be formatted by specifying + several -offset and -length pairs. + When only a single -offset is specified without + -length, clang-format will format up to the end + of the file. + Can only be used with one input file. + --lines= - : - format a range of + lines (both 1-based). + Multiple ranges can be formatted by specifying + several -lines arguments. + Can't be used with -offset and -length. + Can only be used with one input file. + -n - Alias for --dry-run + --offset= - Format a range starting at this byte offset. + Multiple ranges can be formatted by specifying + several -offset and -length pairs. + Can only be used with one input file. + --output-replacements-xml - Output replacements as XML. + --qualifier-alignment= - If set, overrides the qualifier alignment style + determined by the QualifierAlignment style flag + --sort-includes - If set, overrides the include sorting behavior + determined by the SortIncludes style flag + --style= - Set coding style. can be: + 1. A preset: LLVM, GNU, Google, Chromium, Microsoft, + Mozilla, WebKit. + 2. 'file' to load style configuration from a + .clang-format file in one of the parent directories + of the source file (for stdin, see --assume-filename). + If no .clang-format file is found, falls back to + --fallback-style. + --style=file is the default. + 3. 'file:' to explicitly specify + the configuration file. + 4. "{key: value, ...}" to set specific parameters, e.g.: + --style="{BasedOnStyle: llvm, IndentWidth: 8}" + --verbose - If set, shows the list of processed files + +Generic Options: + + --help - Display available options (--help-hidden for more) + --help-list - Display list of available options (--help-list-hidden for more) + --version - Display the version of this program +``` + +### Installation on mega-linter Docker image + +- APK packages (Linux): + - [clang17-extra-tools](https://pkgs.alpinelinux.org/packages?branch=edge&name=clang17-extra-tools) diff --git a/docs/descriptors/cpp_cpplint.md b/docs/descriptors/cpp_cpplint.md index 3998167ad7d..0cdd571ca4f 100644 --- a/docs/descriptors/cpp_cpplint.md +++ b/docs/descriptors/cpp_cpplint.md @@ -3,7 +3,7 @@ title: cpplint configuration in MegaLinter description: How to use cpplint (configure, ignore files, ignore errors, help & version documentations) to analyze CPP files --- - + # cpplint [![GitHub stars](https://img.shields.io/github/stars/cpplint/cpplint?cacheSeconds=3600)](https://github.com/cpplint/cpplint) [![GitHub release (latest SemVer)](https://img.shields.io/github/v/release/cpplint/cpplint?sort=semver)](https://github.com/cpplint/cpplint/releases) [![GitHub last commit](https://img.shields.io/github/last-commit/cpplint/cpplint)](https://github.com/cpplint/cpplint/commits) [![GitHub commit activity](https://img.shields.io/github/commit-activity/y/cpplint/cpplint)](https://github.com/cpplint/cpplint/graphs/commit-activity/) [![GitHub contributors](https://img.shields.io/github/contributors/cpplint/cpplint)](https://github.com/cpplint/cpplint/graphs/contributors/) @@ -17,12 +17,13 @@ description: How to use cpplint (configure, ignore files, ignore errors, help & ## Configuration in MegaLinter -- Enable cpplint by adding `CPP_CPPLINT` in [ENABLE_LINTERS variable](https://megalinter.io/6.22.2/configuration/#activation-and-deactivation) -- Disable cpplint by adding `CPP_CPPLINT` in [DISABLE_LINTERS variable](https://megalinter.io/6.22.2/configuration/#activation-and-deactivation) +- Enable cpplint by adding `CPP_CPPLINT` in [ENABLE_LINTERS variable](https://megalinter.io/7.13.0/configuration/#activation-and-deactivation) +- Disable cpplint by adding `CPP_CPPLINT` in [DISABLE_LINTERS variable](https://megalinter.io/7.13.0/configuration/#activation-and-deactivation) | Variable | Description | Default value | |-----------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------| | CPP_CPPLINT_ARGUMENTS | User custom arguments to add in linter CLI call
Ex: `-s --foo "bar"` | | +| CPP_CPPLINT_COMMAND_REMOVE_ARGUMENTS | User custom arguments to remove from command line before calling the linter
Ex: `-s --foo "bar"` | | | CPP_CPPLINT_FILTER_REGEX_INCLUDE | Custom regex including filter
Ex: `(src\|lib)` | Include every file | | CPP_CPPLINT_FILTER_REGEX_EXCLUDE | Custom regex excluding filter
Ex: `(test\|examples)` | Exclude no file | | CPP_CPPLINT_CLI_LINT_MODE | Override default CLI lint mode
- `file`: Calls the linter for each file
- `list_of_files`: Call the linter with the list of files as argument
- `project`: Call the linter from the root of the project | `list_of_files` | @@ -30,18 +31,23 @@ description: How to use cpplint (configure, ignore files, ignore errors, help & | CPP_CPPLINT_FILE_NAMES_REGEX | File name regex filters. Regular expression list for filtering files by their base names using regex full match. Empty list includes all files
Ex: `["Dockerfile(-.+)?", "Jenkinsfile"]` | Include every file | | CPP_CPPLINT_PRE_COMMANDS | List of bash commands to run before the linter | None | | CPP_CPPLINT_POST_COMMANDS | List of bash commands to run after the linter | None | +| CPP_CPPLINT_UNSECURED_ENV_VARIABLES | List of env variables explicitly not filtered before calling CPP_CPPLINT and its pre/post commands | None | | CPP_CPPLINT_DISABLE_ERRORS | Run linter but consider errors as warnings | `false` | | CPP_CPPLINT_DISABLE_ERRORS_IF_LESS_THAN | Maximum number of errors allowed | `0` | +| CPP_CPPLINT_CLI_EXECUTABLE | Override CLI executable | `['cpplint']` | ## MegaLinter Flavours This linter is available in the following flavours -| | Flavor | Description | Embedded linters | Info | -|:--------------------------------------------------------------------------------------------------------------------------------------------------------:|:---------------------------------------------------------|:------------------------------------------------|:----------------:|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:| -| | [all](https://megalinter.io/6.22.2/supported-linters/) | Default MegaLinter Flavor | 114 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter) | -| | [cupcake](https://megalinter.io/6.22.2/flavors/cupcake/) | MegaLinter for the most commonly used languages | 82 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-cupcake/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-cupcake) | -| | [dotnet](https://megalinter.io/6.22.2/flavors/dotnet/) | Optimized for C, C++, C# or VB based projects | 60 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-dotnet/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-dotnet) | +| | Flavor | Description | Embedded linters | Info | +|:--------------------------------------------------------------------------------------------------------------------------------------------------------:|:-------------------------------------------------------------|:---------------------------------------------------------|:----------------:|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:| +| | [all](https://megalinter.io/7.13.0/supported-linters/) | Default MegaLinter Flavor | 125 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter) | +| | [c_cpp](https://megalinter.io/7.13.0/flavors/c_cpp/) | Optimized for pure C/C++ projects | 56 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-c_cpp/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-c_cpp) | +| | [cupcake](https://megalinter.io/7.13.0/flavors/cupcake/) | MegaLinter for the most commonly used languages | 84 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-cupcake/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-cupcake) | +| | [dotnet](https://megalinter.io/7.13.0/flavors/dotnet/) | Optimized for C, C++, C# or VB based projects | 63 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-dotnet/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-dotnet) | +| | [dotnetweb](https://megalinter.io/7.13.0/flavors/dotnetweb/) | Optimized for C, C++, C# or VB based projects with JS/TS | 72 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-dotnetweb/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-dotnetweb) | +| | [python](https://megalinter.io/7.13.0/flavors/python/) | Optimized for PYTHON based projects | 64 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-python/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-python) | ## Behind the scenes diff --git a/docs/descriptors/csharp.md b/docs/descriptors/csharp.md index 5af6a85638e..e88d5857e24 100644 --- a/docs/descriptors/csharp.md +++ b/docs/descriptors/csharp.md @@ -1,18 +1,19 @@ --- title: CSHARP linters in MegaLinter -description: dotnet-format, csharpier are available to analyze CSHARP files in MegaLinter +description: dotnet-format, csharpier, roslynator are available to analyze CSHARP files in MegaLinter --- - + # C# ## Linters -| Linter | Additional | -|----------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| [**dotnet-format**](csharp_dotnet_format.md)
[_CSHARP_DOTNET_FORMAT_](csharp_dotnet_format.md) | [![GitHub stars](https://img.shields.io/github/stars/dotnet/format?cacheSeconds=3600)](https://github.com/dotnet/format) ![formatter](https://shields.io/badge/-format-yellow) | -| [**csharpier**](csharp_csharpier.md)
[_CSHARP_CSHARPIER_](csharp_csharpier.md) | [![GitHub stars](https://img.shields.io/github/stars/belav/csharpier?cacheSeconds=3600)](https://github.com/belav/csharpier) ![formatter](https://shields.io/badge/-format-yellow) | +| Linter | Additional | +|----------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| [**dotnet-format**](csharp_dotnet_format.md)
[_CSHARP_DOTNET_FORMAT_](csharp_dotnet_format.md) | [![GitHub stars](https://img.shields.io/github/stars/dotnet/format?cacheSeconds=3600)](https://github.com/dotnet/format) ![formatter](https://shields.io/badge/-format-yellow) | +| [**csharpier**](csharp_csharpier.md)
[_CSHARP_CSHARPIER_](csharp_csharpier.md) | [![GitHub stars](https://img.shields.io/github/stars/belav/csharpier?cacheSeconds=3600)](https://github.com/belav/csharpier) ![formatter](https://shields.io/badge/-format-yellow) | +| [**roslynator**](csharp_roslynator.md)
[_CSHARP_ROSLYNATOR_](csharp_roslynator.md) | [![GitHub stars](https://img.shields.io/github/stars/dotnet/Roslynator?cacheSeconds=3600)](https://github.com/dotnet/Roslynator) ![formatter](https://shields.io/badge/-format-yellow) | ## Linted files @@ -21,10 +22,12 @@ description: dotnet-format, csharpier are available to analyze CSHARP files in M ## Configuration in MegaLinter -| Variable | Description | Default value | -|-----------------------------|-------------------------------|---------------| -| CSHARP_FILTER_REGEX_INCLUDE | Custom regex including filter | | -| CSHARP_FILTER_REGEX_EXCLUDE | Custom regex excluding filter | | +| Variable | Description | Default value | +|-----------------------------|-------------------------------------------------|---------------| +| CSHARP_PRE_COMMANDS | List of bash commands to run before the linters | None | +| CSHARP_POST_COMMANDS | List of bash commands to run after the linters | None | +| CSHARP_FILTER_REGEX_INCLUDE | Custom regex including filter | | +| CSHARP_FILTER_REGEX_EXCLUDE | Custom regex excluding filter | | ## Behind the scenes @@ -33,19 +36,7 @@ description: dotnet-format, csharpier are available to analyze CSHARP files in M - Dockerfile commands : ```dockerfile -RUN wget --tries=5 -q -O dotnet-install.sh https://dot.net/v1/dotnet-install.sh \ - && chmod +x dotnet-install.sh \ - && ./dotnet-install.sh --install-dir /usr/share/dotnet -channel 6.0 -version latest - -ENV PATH="${PATH}:/root/.dotnet/tools:/usr/share/dotnet" +RUN apk add --no-cache dotnet8-sdk +ENV PATH="${PATH}:/root/.dotnet/tools" ``` -- APK packages (Linux): - - [icu-libs](https://pkgs.alpinelinux.org/packages?branch=edge&name=icu-libs) - - [libcurl](https://pkgs.alpinelinux.org/packages?branch=edge&name=libcurl) - - [libintl](https://pkgs.alpinelinux.org/packages?branch=edge&name=libintl) - - [libssl1.1](https://pkgs.alpinelinux.org/packages?branch=edge&name=libssl1.1) - - [libstdc++](https://pkgs.alpinelinux.org/packages?branch=edge&name=libstdc++) - - [lttng-ust-dev](https://pkgs.alpinelinux.org/packages?branch=edge&name=lttng-ust-dev) - - [zlib](https://pkgs.alpinelinux.org/packages?branch=edge&name=zlib) - - [zlib-dev](https://pkgs.alpinelinux.org/packages?branch=edge&name=zlib-dev) diff --git a/docs/descriptors/csharp_csharpier.md b/docs/descriptors/csharp_csharpier.md index 1dd1d39e3f2..e61c4752da0 100644 --- a/docs/descriptors/csharp_csharpier.md +++ b/docs/descriptors/csharp_csharpier.md @@ -3,13 +3,13 @@ title: csharpier configuration in MegaLinter description: How to use csharpier (configure, ignore files, ignore errors, help & version documentations) to analyze CSHARP files --- - + # csharpier [![GitHub stars](https://img.shields.io/github/stars/belav/csharpier?cacheSeconds=3600)](https://github.com/belav/csharpier) ![formatter](https://shields.io/badge/-format-yellow) [![GitHub release (latest SemVer)](https://img.shields.io/github/v/release/belav/csharpier?sort=semver)](https://github.com/belav/csharpier/releases) [![GitHub last commit](https://img.shields.io/github/last-commit/belav/csharpier)](https://github.com/belav/csharpier/commits) [![GitHub commit activity](https://img.shields.io/github/commit-activity/y/belav/csharpier)](https://github.com/belav/csharpier/graphs/commit-activity/) [![GitHub contributors](https://img.shields.io/github/contributors/belav/csharpier)](https://github.com/belav/csharpier/graphs/contributors/) ## csharpier documentation -- Version in MegaLinter: **0.23.0** +- Version in MegaLinter: **0.28.2** - Visit [Official Web Site](https://csharpier.com/){target=_blank} - See [How to configure csharpier rules](https://csharpier.com/docs/Configuration){target=_blank} - See [How to ignore files and directories with csharpier](https://csharpier.com/docs/Ignore){target=_blank} @@ -19,23 +19,28 @@ description: How to use csharpier (configure, ignore files, ignore errors, help ## Configuration in MegaLinter -- Enable csharpier by adding `CSHARP_CSHARPIER` in [ENABLE_LINTERS variable](https://megalinter.io/6.22.2/configuration/#activation-and-deactivation) -- Disable csharpier by adding `CSHARP_CSHARPIER` in [DISABLE_LINTERS variable](https://megalinter.io/6.22.2/configuration/#activation-and-deactivation) - -- Enable **auto-fixes** by adding `CSHARP_CSHARPIER` in [APPLY_FIXES variable](https://megalinter.io/6.22.2/configuration/#apply-fixes) - -| Variable | Description | Default value | -|----------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------| -| CSHARP_CSHARPIER_ARGUMENTS | User custom arguments to add in linter CLI call
Ex: `-s --foo "bar"` | | -| CSHARP_CSHARPIER_FILTER_REGEX_INCLUDE | Custom regex including filter
Ex: `(src\|lib)` | Include every file | -| CSHARP_CSHARPIER_FILTER_REGEX_EXCLUDE | Custom regex excluding filter
Ex: `(test\|examples)` | Exclude no file | -| CSHARP_CSHARPIER_CLI_LINT_MODE | Override default CLI lint mode
- `file`: Calls the linter for each file
- `list_of_files`: Call the linter with the list of files as argument
- `project`: Call the linter from the root of the project | `list_of_files` | -| CSHARP_CSHARPIER_FILE_EXTENSIONS | Allowed file extensions. `"*"` matches any extension, `""` matches empty extension. Empty list excludes all files
Ex: `[".py", ""]` | `[".cs"]` | -| CSHARP_CSHARPIER_FILE_NAMES_REGEX | File name regex filters. Regular expression list for filtering files by their base names using regex full match. Empty list includes all files
Ex: `["Dockerfile(-.+)?", "Jenkinsfile"]` | Include every file | -| CSHARP_CSHARPIER_PRE_COMMANDS | List of bash commands to run before the linter | None | -| CSHARP_CSHARPIER_POST_COMMANDS | List of bash commands to run after the linter | None | -| CSHARP_CSHARPIER_DISABLE_ERRORS | Run linter but consider errors as warnings | `true` | -| CSHARP_CSHARPIER_DISABLE_ERRORS_IF_LESS_THAN | Maximum number of errors allowed | `0` | +- Enable csharpier by adding `CSHARP_CSHARPIER` in [ENABLE_LINTERS variable](https://megalinter.io/7.13.0/configuration/#activation-and-deactivation) +- Disable csharpier by adding `CSHARP_CSHARPIER` in [DISABLE_LINTERS variable](https://megalinter.io/7.13.0/configuration/#activation-and-deactivation) + +- Enable **autofixes** by adding `CSHARP_CSHARPIER` in [APPLY_FIXES variable](https://megalinter.io/7.13.0/configuration/#apply-fixes) + +| Variable | Description | Default value | +|----------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------| +| CSHARP_CSHARPIER_ARGUMENTS | User custom arguments to add in linter CLI call
Ex: `-s --foo "bar"` | | +| CSHARP_CSHARPIER_COMMAND_REMOVE_ARGUMENTS | User custom arguments to remove from command line before calling the linter
Ex: `-s --foo "bar"` | | +| CSHARP_CSHARPIER_FILTER_REGEX_INCLUDE | Custom regex including filter
Ex: `(src\|lib)` | Include every file | +| CSHARP_CSHARPIER_FILTER_REGEX_EXCLUDE | Custom regex excluding filter
Ex: `(test\|examples)` | Exclude no file | +| CSHARP_CSHARPIER_CLI_LINT_MODE | Override default CLI lint mode
- `file`: Calls the linter for each file
- `list_of_files`: Call the linter with the list of files as argument
- `project`: Call the linter from the root of the project | `list_of_files` | +| CSHARP_CSHARPIER_FILE_EXTENSIONS | Allowed file extensions. `"*"` matches any extension, `""` matches empty extension. Empty list excludes all files
Ex: `[".py", ""]` | `[".cs"]` | +| CSHARP_CSHARPIER_FILE_NAMES_REGEX | File name regex filters. Regular expression list for filtering files by their base names using regex full match. Empty list includes all files
Ex: `["Dockerfile(-.+)?", "Jenkinsfile"]` | Include every file | +| CSHARP_CSHARPIER_PRE_COMMANDS | List of bash commands to run before the linter | None | +| CSHARP_CSHARPIER_POST_COMMANDS | List of bash commands to run after the linter | None | +| CSHARP_CSHARPIER_UNSECURED_ENV_VARIABLES | List of env variables explicitly not filtered before calling CSHARP_CSHARPIER and its pre/post commands | None | +| CSHARP_CSHARPIER_CONFIG_FILE | csharpier configuration file name
Use `LINTER_DEFAULT` to let the linter find it | `.csharpierrc` | +| CSHARP_CSHARPIER_RULES_PATH | Path where to find linter configuration file | Workspace folder, then MegaLinter default rules | +| CSHARP_CSHARPIER_DISABLE_ERRORS | Run linter but consider errors as warnings | `true` | +| CSHARP_CSHARPIER_DISABLE_ERRORS_IF_LESS_THAN | Maximum number of errors allowed | `0` | +| CSHARP_CSHARPIER_CLI_EXECUTABLE | Override CLI executable | `['dotnet-csharpier']` | ## IDE Integration @@ -51,10 +56,12 @@ Use csharpier in your favorite IDE to catch errors before MegaLinter ! This linter is available in the following flavours -| | Flavor | Description | Embedded linters | Info | -|:--------------------------------------------------------------------------------------------------------------------------------------------------------:|:-------------------------------------------------------|:----------------------------------------------|:----------------:|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:| -| | [all](https://megalinter.io/6.22.2/supported-linters/) | Default MegaLinter Flavor | 114 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter) | -| | [dotnet](https://megalinter.io/6.22.2/flavors/dotnet/) | Optimized for C, C++, C# or VB based projects | 60 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-dotnet/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-dotnet) | +| | Flavor | Description | Embedded linters | Info | +|:--------------------------------------------------------------------------------------------------------------------------------------------------------:|:---------------------------------------------------------------|:---------------------------------------------------------|:----------------:|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:| +| | [all](https://megalinter.io/7.13.0/supported-linters/) | Default MegaLinter Flavor | 125 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter) | +| | [dotnet](https://megalinter.io/7.13.0/flavors/dotnet/) | Optimized for C, C++, C# or VB based projects | 63 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-dotnet/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-dotnet) | +| | [dotnetweb](https://megalinter.io/7.13.0/flavors/dotnetweb/) | Optimized for C, C++, C# or VB based projects with JS/TS | 72 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-dotnetweb/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-dotnetweb) | +| | [formatters](https://megalinter.io/7.13.0/flavors/formatters/) | Contains only formatters | 17 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-formatters/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-formatters) | ## Behind the scenes @@ -92,11 +99,16 @@ Arguments: Options: --check Check that files are formatted. Will not write any changes. + --loglevel Specify the log level - Debug, Information (default), Warning, Error, None [default: Information] --no-cache Bypass the cache to determine if a file needs to be formatted. + --no-msbuild-check Bypass the check to determine if a csproj files references a different version of CSharpier.MsBuild. + --include-generated Include files generated by the SDK and files that begin with comments --fast Skip comparing syntax tree of formatted file to original file to validate changes. --skip-write Skip writing changes. Generally used for testing to ensure csharpier doesn't throw any errors or cause syntax tree validation failures. --write-stdout Write the results of formatting any files to stdout. - --pipe-multiple-files Keep csharpier running so that multiples files can be piped to it via stdin + --pipe-multiple-files Keep csharpier running so that multiples files can be piped to it via stdin. + --server Run CSharpier as a server so that multiple files may be formatted. + --server-port Specify the port that CSharpier should start on. Defaults to a random unused port. --config-path Path to the CSharpier configuration file --version Show version information -?, -h, --help Show help and usage information @@ -108,12 +120,9 @@ Options: - Dockerfile commands : ```dockerfile # Parent descriptor install -RUN wget --tries=5 -q -O dotnet-install.sh https://dot.net/v1/dotnet-install.sh \ - && chmod +x dotnet-install.sh \ - && ./dotnet-install.sh --install-dir /usr/share/dotnet -channel 6.0 -version latest - -ENV PATH="${PATH}:/root/.dotnet/tools:/usr/share/dotnet" +RUN apk add --no-cache dotnet8-sdk +ENV PATH="${PATH}:/root/.dotnet/tools" # Linter install -RUN /usr/share/dotnet/dotnet tool install -g csharpier +RUN dotnet tool install --global csharpier ``` diff --git a/docs/descriptors/csharp_dotnet_format.md b/docs/descriptors/csharp_dotnet_format.md index 3184cc28ddf..3795c73abce 100644 --- a/docs/descriptors/csharp_dotnet_format.md +++ b/docs/descriptors/csharp_dotnet_format.md @@ -3,7 +3,7 @@ title: dotnet-format configuration in MegaLinter description: How to use dotnet-format (configure, ignore files, ignore errors, help & version documentations) to analyze CSHARP files --- - + # dotnet-format [![GitHub stars](https://img.shields.io/github/stars/dotnet/format?cacheSeconds=3600)](https://github.com/dotnet/format) ![formatter](https://shields.io/badge/-format-yellow) [![GitHub release (latest SemVer)](https://img.shields.io/github/v/release/dotnet/format?sort=semver)](https://github.com/dotnet/format/releases) [![GitHub last commit](https://img.shields.io/github/last-commit/dotnet/format)](https://github.com/dotnet/format/commits) [![GitHub commit activity](https://img.shields.io/github/commit-activity/y/dotnet/format)](https://github.com/dotnet/format/graphs/commit-activity/) [![GitHub contributors](https://img.shields.io/github/contributors/dotnet/format)](https://github.com/dotnet/format/graphs/contributors/) @@ -11,21 +11,22 @@ dotnet-format requires a `.sln` or `.csproj` file to run correctly. ## dotnet-format documentation -- Version in MegaLinter: **6.0.407** +- Version in MegaLinter: **8.0.106** - Visit [Official Web Site](https://docs.microsoft.com/en-us/dotnet/core/tools/dotnet-format){target=_blank} [![format - GitHub](https://gh-card.dev/repos/dotnet/format.svg?fullname=)](https://github.com/dotnet/format){target=_blank} ## Configuration in MegaLinter -- Enable dotnet-format by adding `CSHARP_DOTNET_FORMAT` in [ENABLE_LINTERS variable](https://megalinter.io/6.22.2/configuration/#activation-and-deactivation) -- Disable dotnet-format by adding `CSHARP_DOTNET_FORMAT` in [DISABLE_LINTERS variable](https://megalinter.io/6.22.2/configuration/#activation-and-deactivation) +- Enable dotnet-format by adding `CSHARP_DOTNET_FORMAT` in [ENABLE_LINTERS variable](https://megalinter.io/7.13.0/configuration/#activation-and-deactivation) +- Disable dotnet-format by adding `CSHARP_DOTNET_FORMAT` in [DISABLE_LINTERS variable](https://megalinter.io/7.13.0/configuration/#activation-and-deactivation) -- Enable **auto-fixes** by adding `CSHARP_DOTNET_FORMAT` in [APPLY_FIXES variable](https://megalinter.io/6.22.2/configuration/#apply-fixes) +- Enable **autofixes** by adding `CSHARP_DOTNET_FORMAT` in [APPLY_FIXES variable](https://megalinter.io/7.13.0/configuration/#apply-fixes) | Variable | Description | Default value | |--------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------| | CSHARP_DOTNET_FORMAT_ARGUMENTS | User custom arguments to add in linter CLI call
Ex: `-s --foo "bar"` | | +| CSHARP_DOTNET_FORMAT_COMMAND_REMOVE_ARGUMENTS | User custom arguments to remove from command line before calling the linter
Ex: `-s --foo "bar"` | | | CSHARP_DOTNET_FORMAT_FILTER_REGEX_INCLUDE | Custom regex including filter
Ex: `(src\|lib)` | Include every file | | CSHARP_DOTNET_FORMAT_FILTER_REGEX_EXCLUDE | Custom regex excluding filter
Ex: `(test\|examples)` | Exclude no file | | CSHARP_DOTNET_FORMAT_CLI_LINT_MODE | Override default CLI lint mode
- `file`: Calls the linter for each file
- `project`: Call the linter from the root of the project | `file` | @@ -33,17 +34,21 @@ dotnet-format requires a `.sln` or `.csproj` file to run correctly. | CSHARP_DOTNET_FORMAT_FILE_NAMES_REGEX | File name regex filters. Regular expression list for filtering files by their base names using regex full match. Empty list includes all files
Ex: `["Dockerfile(-.+)?", "Jenkinsfile"]` | Include every file | | CSHARP_DOTNET_FORMAT_PRE_COMMANDS | List of bash commands to run before the linter | None | | CSHARP_DOTNET_FORMAT_POST_COMMANDS | List of bash commands to run after the linter | None | +| CSHARP_DOTNET_FORMAT_UNSECURED_ENV_VARIABLES | List of env variables explicitly not filtered before calling CSHARP_DOTNET_FORMAT and its pre/post commands | None | | CSHARP_DOTNET_FORMAT_DISABLE_ERRORS | Run linter but consider errors as warnings | `true` | | CSHARP_DOTNET_FORMAT_DISABLE_ERRORS_IF_LESS_THAN | Maximum number of errors allowed | `0` | +| CSHARP_DOTNET_FORMAT_CLI_EXECUTABLE | Override CLI executable | `['dotnet']` | ## MegaLinter Flavours This linter is available in the following flavours -| | Flavor | Description | Embedded linters | Info | -|:--------------------------------------------------------------------------------------------------------------------------------------------------------:|:-------------------------------------------------------|:----------------------------------------------|:----------------:|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:| -| | [all](https://megalinter.io/6.22.2/supported-linters/) | Default MegaLinter Flavor | 114 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter) | -| | [dotnet](https://megalinter.io/6.22.2/flavors/dotnet/) | Optimized for C, C++, C# or VB based projects | 60 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-dotnet/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-dotnet) | +| | Flavor | Description | Embedded linters | Info | +|:--------------------------------------------------------------------------------------------------------------------------------------------------------:|:---------------------------------------------------------------|:---------------------------------------------------------|:----------------:|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:| +| | [all](https://megalinter.io/7.13.0/supported-linters/) | Default MegaLinter Flavor | 125 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter) | +| | [dotnet](https://megalinter.io/7.13.0/flavors/dotnet/) | Optimized for C, C++, C# or VB based projects | 63 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-dotnet/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-dotnet) | +| | [dotnetweb](https://megalinter.io/7.13.0/flavors/dotnetweb/) | Optimized for C, C++, C# or VB based projects with JS/TS | 72 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-dotnetweb/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-dotnetweb) | +| | [formatters](https://megalinter.io/7.13.0/flavors/formatters/) | Contains only formatters | 17 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-formatters/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-formatters) | ## Behind the scenes @@ -75,31 +80,31 @@ Description: Formats code to match editorconfig settings. Usage: - dotnet-format [] [command] [options] + dotnet-format [] [command] [options] Arguments: - The project or solution file to operate on. If a file is not specified, the command will search the current directory for one. [default: /] + The project or solution file to operate on. If a file is not specified, the command will search the current directory for one. [default: /] Options: - --diagnostics A space separated list of diagnostic ids to use as a filter when fixing code style or 3rd party issues. [] - --exclude-diagnostics A space separated list of diagnostic ids to ignore when fixing code style or 3rd party issues. [] + -?, -h, --help Show help and usage information + --version Show version information + --diagnostics A space separated list of diagnostic ids to use as a filter when fixing code style or 3rd party issues. [] + --exclude-diagnostics A space separated list of diagnostic ids to ignore when fixing code style or 3rd party issues. [] --severity The severity of diagnostics to fix. Allowed values are info, warn, and error. --no-restore Doesn't execute an implicit restore before formatting. --verify-no-changes Verify no formatting changes would be performed. Terminates with a non-zero exit code if any files would have been formatted. - --include A list of relative file or folder paths to include in formatting. All files are formatted if empty. [] - --exclude A list of relative file or folder paths to exclude from formatting. [] + --include A list of relative file or folder paths to include in formatting. All files are formatted if empty. [] + --exclude A list of relative file or folder paths to exclude from formatting. [] --include-generated Format files generated by the SDK. -v, --verbosity Set the verbosity level. Allowed values are q[uiet], m[inimal], n[ormal], d[etailed], and diag[nostic] --binarylog Log all project or solution load information to a binary log file. --report Accepts a file path which if provided will produce a json report in the given directory. - --version Show version information - -?, -h, --help Show help and usage information Commands: - whitespace Run whitespace formatting. [default: /] - style Run code style analyzers and apply fixes. [default: /] - analyzers Run 3rd party analyzers and apply fixes. [default: /] + whitespace Run whitespace formatting. [default: /] + style Run code style analyzers and apply fixes. [default: /] + analyzers Run 3rd party analyzers and apply fixes. [default: /] ``` diff --git a/docs/descriptors/csharp_roslynator.md b/docs/descriptors/csharp_roslynator.md new file mode 100644 index 00000000000..9e6ab5e1f41 --- /dev/null +++ b/docs/descriptors/csharp_roslynator.md @@ -0,0 +1,119 @@ +--- +title: roslynator configuration in MegaLinter +description: How to use roslynator (configure, ignore files, ignore errors, help & version documentations) to analyze CSHARP files +--- + + +# roslynator +[![GitHub stars](https://img.shields.io/github/stars/dotnet/Roslynator?cacheSeconds=3600)](https://github.com/dotnet/Roslynator) ![formatter](https://shields.io/badge/-format-yellow) [![GitHub release (latest SemVer)](https://img.shields.io/github/v/release/dotnet/Roslynator?sort=semver)](https://github.com/dotnet/Roslynator/releases) [![GitHub last commit](https://img.shields.io/github/last-commit/dotnet/Roslynator)](https://github.com/dotnet/Roslynator/commits) [![GitHub commit activity](https://img.shields.io/github/commit-activity/y/dotnet/Roslynator)](https://github.com/dotnet/Roslynator/graphs/commit-activity/) [![GitHub contributors](https://img.shields.io/github/contributors/dotnet/Roslynator)](https://github.com/dotnet/Roslynator/graphs/contributors/) + +## roslynator documentation + +- Version in MegaLinter: **0.8.9.0** +- Visit [Official Web Site](https://github.com/dotnet/Roslynator#readme){target=_blank} +- See [How to configure roslynator rules](https://josefpihrt.github.io/docs/roslynator/configuration){target=_blank} +- See [How to disable roslynator rules in files](https://josefpihrt.github.io/docs/roslynator/how-to-suppress-diagnostic){target=_blank} +- See [Index of problems detected by roslynator](https://josefpihrt.github.io/docs/roslynator/analyzers){target=_blank} + +[![Roslynator - GitHub](https://gh-card.dev/repos/dotnet/Roslynator.svg?fullname=)](https://github.com/dotnet/Roslynator){target=_blank} + +## Configuration in MegaLinter + +- Enable roslynator by adding `CSHARP_ROSLYNATOR` in [ENABLE_LINTERS variable](https://megalinter.io/7.13.0/configuration/#activation-and-deactivation) +- Disable roslynator by adding `CSHARP_ROSLYNATOR` in [DISABLE_LINTERS variable](https://megalinter.io/7.13.0/configuration/#activation-and-deactivation) + +- Enable **autofixes** by adding `CSHARP_ROSLYNATOR` in [APPLY_FIXES variable](https://megalinter.io/7.13.0/configuration/#apply-fixes) + +| Variable | Description | Default value | +|-----------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------| +| CSHARP_ROSLYNATOR_ARGUMENTS | User custom arguments to add in linter CLI call
Ex: `-s --foo "bar"` | | +| CSHARP_ROSLYNATOR_COMMAND_REMOVE_ARGUMENTS | User custom arguments to remove from command line before calling the linter
Ex: `-s --foo "bar"` | | +| CSHARP_ROSLYNATOR_FILTER_REGEX_INCLUDE | Custom regex including filter
Ex: `(src\|lib)` | Include every file | +| CSHARP_ROSLYNATOR_FILTER_REGEX_EXCLUDE | Custom regex excluding filter
Ex: `(test\|examples)` | Exclude no file | +| CSHARP_ROSLYNATOR_CLI_LINT_MODE | Override default CLI lint mode
- `file`: Calls the linter for each file
- `project`: Call the linter from the root of the project | `file` | +| CSHARP_ROSLYNATOR_FILE_EXTENSIONS | Allowed file extensions. `"*"` matches any extension, `""` matches empty extension. Empty list excludes all files
Ex: `[".py", ""]` | `[".csproj"]` | +| CSHARP_ROSLYNATOR_FILE_NAMES_REGEX | File name regex filters. Regular expression list for filtering files by their base names using regex full match. Empty list includes all files
Ex: `["Dockerfile(-.+)?", "Jenkinsfile"]` | Include every file | +| CSHARP_ROSLYNATOR_PRE_COMMANDS | List of bash commands to run before the linter | None | +| CSHARP_ROSLYNATOR_POST_COMMANDS | List of bash commands to run after the linter | None | +| CSHARP_ROSLYNATOR_UNSECURED_ENV_VARIABLES | List of env variables explicitly not filtered before calling CSHARP_ROSLYNATOR and its pre/post commands | None | +| CSHARP_ROSLYNATOR_DISABLE_ERRORS | Run linter but consider errors as warnings | `true` | +| CSHARP_ROSLYNATOR_DISABLE_ERRORS_IF_LESS_THAN | Maximum number of errors allowed | `0` | +| CSHARP_ROSLYNATOR_CLI_EXECUTABLE | Override CLI executable | `['roslynator']` | + +## IDE Integration + +Use roslynator in your favorite IDE to catch errors before MegaLinter ! + +| | IDE | Extension Name | Install | +|:--------------------------------------------------------------------------------------------------------------------------------------------:|------------------------------------------------------|--------------------------------------------------------------------------------------------------|:---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:| +| | visual_studio | [Roslynator 2022](https://marketplace.visualstudio.com/items?itemName=josefpihrt.Roslynator2022) | [Visit Web Site](https://marketplace.visualstudio.com/items?itemName=josefpihrt.Roslynator2022){target=_blank} | +| | [Visual Studio Code](https://code.visualstudio.com/) | [Roslynator](https://marketplace.visualstudio.com/items?itemName=josefpihrt-vscode.roslynator) | [![Install in VSCode](https://github.com/oxsecurity/megalinter/raw/main/docs/assets/images/btn_install_vscode.png)](vscode:extension/josefpihrt-vscode.roslynator){target=_blank} | + +## MegaLinter Flavours + +This linter is available in the following flavours + +| | Flavor | Description | Embedded linters | Info | +|:--------------------------------------------------------------------------------------------------------------------------------------------------------:|:---------------------------------------------------------------|:---------------------------------------------------------|:----------------:|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:| +| | [all](https://megalinter.io/7.13.0/supported-linters/) | Default MegaLinter Flavor | 125 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter) | +| | [dotnet](https://megalinter.io/7.13.0/flavors/dotnet/) | Optimized for C, C++, C# or VB based projects | 63 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-dotnet/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-dotnet) | +| | [dotnetweb](https://megalinter.io/7.13.0/flavors/dotnetweb/) | Optimized for C, C++, C# or VB based projects with JS/TS | 72 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-dotnetweb/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-dotnetweb) | +| | [formatters](https://megalinter.io/7.13.0/flavors/formatters/) | Contains only formatters | 17 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-formatters/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-formatters) | + +## Behind the scenes + +### How are identified applicable files + +- File extensions: `.csproj` + + + +### How the linting is performed + +- roslynator is called one time by identified file (`file` CLI lint mode) + +### Example calls + +```shell +roslynator analyze myproject.csproj +``` + +```shell +roslynator fix myproject.csproj +``` + + +### Help content + +```shell +Roslynator Command Line Tool version 0.8.9.0 (Roslyn version 4.9.0.0) +Usage: roslynator [command] [arguments] + +Commands: + analyze Analyzes specified project or solution and reports diagnostics. + find-symbol Finds symbols in the specified project or solution. + fix Fixes diagnostics in the specified project or solution. + format Formats whitespace in the specified project or solution. + generate-doc Generates reference documentation from specified project/solution. + generate-doc-root [deprecated] Generates root documentation file from specified project/solution. + list-symbols Lists symbols from the specified project or solution. + lloc Counts logical lines of code in the specified project or solution. + loc Counts physical lines of code in the specified project or solution. + migrate Migrates analyzers to a new version. + rename-symbol Rename symbols in the specified project or solution. + spellcheck Searches the specified project or solution for possible misspellings or typos. + +Run 'roslynator help [command]' for more information on a command. +``` + +### Installation on mega-linter Docker image + +- Dockerfile commands : +```dockerfile +# Parent descriptor install +RUN apk add --no-cache dotnet8-sdk +ENV PATH="${PATH}:/root/.dotnet/tools" +# Linter install +RUN dotnet tool install -g roslynator.dotnet.cli +``` + diff --git a/docs/descriptors/css.md b/docs/descriptors/css.md index d03d19e616c..63a6395eb53 100644 --- a/docs/descriptors/css.md +++ b/docs/descriptors/css.md @@ -3,7 +3,7 @@ title: CSS linters in MegaLinter description: stylelint, scss-lint are available to analyze CSS files in MegaLinter --- - + # CSS @@ -12,7 +12,7 @@ description: stylelint, scss-lint are available to analyze CSS files in MegaLint | Linter | Additional | |---------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | [**stylelint**](css_stylelint.md)
[_CSS_STYLELINT_](css_stylelint.md) | [![GitHub stars](https://img.shields.io/github/stars/stylelint/stylelint?cacheSeconds=3600)](https://github.com/stylelint/stylelint) ![autofix](https://shields.io/badge/-autofix-green) | -| [**scss-lint**](css_scss_lint.md)
[_CSS_SCSS_LINT_](css_scss_lint.md) | [![GitHub stars](https://img.shields.io/github/stars/sds/scss-lint?cacheSeconds=3600)](https://github.com/sds/scss-lint) | +| [**scss-lint**](css_scss_lint.md)
[_CSS_SCSS_LINT_](css_scss_lint.md) | ![deprecated](https://shields.io/badge/-deprecated-red) [![GitHub stars](https://img.shields.io/github/stars/sds/scss-lint?cacheSeconds=3600)](https://github.com/sds/scss-lint) | ## Linted files @@ -23,8 +23,10 @@ description: stylelint, scss-lint are available to analyze CSS files in MegaLint ## Configuration in MegaLinter -| Variable | Description | Default value | -|--------------------------|-------------------------------|---------------| -| CSS_FILTER_REGEX_INCLUDE | Custom regex including filter | | -| CSS_FILTER_REGEX_EXCLUDE | Custom regex excluding filter | | +| Variable | Description | Default value | +|--------------------------|-------------------------------------------------|---------------| +| CSS_PRE_COMMANDS | List of bash commands to run before the linters | None | +| CSS_POST_COMMANDS | List of bash commands to run after the linters | None | +| CSS_FILTER_REGEX_INCLUDE | Custom regex including filter | | +| CSS_FILTER_REGEX_EXCLUDE | Custom regex excluding filter | | diff --git a/docs/descriptors/css_scss_lint.md b/docs/descriptors/css_scss_lint.md index 2377a21eafc..e7fb793c743 100644 --- a/docs/descriptors/css_scss_lint.md +++ b/docs/descriptors/css_scss_lint.md @@ -3,7 +3,7 @@ title: scss-lint configuration in MegaLinter description: How to use scss-lint (configure, ignore files, ignore errors, help & version documentations) to analyze CSS files --- - + -[![GitHub stars](https://img.shields.io/github/stars/sds/scss-lint?cacheSeconds=3600)](https://github.com/sds/scss-lint) [![GitHub release (latest SemVer)](https://img.shields.io/github/v/release/sds/scss-lint?sort=semver)](https://github.com/sds/scss-lint/releases) [![GitHub last commit](https://img.shields.io/github/last-commit/sds/scss-lint)](https://github.com/sds/scss-lint/commits) [![GitHub commit activity](https://img.shields.io/github/commit-activity/y/sds/scss-lint)](https://github.com/sds/scss-lint/graphs/commit-activity/) [![GitHub contributors](https://img.shields.io/github/contributors/sds/scss-lint)](https://github.com/sds/scss-lint/graphs/contributors/) +![deprecated](https://shields.io/badge/-deprecated-red) [![GitHub stars](https://img.shields.io/github/stars/sds/scss-lint?cacheSeconds=3600)](https://github.com/sds/scss-lint) [![GitHub release (latest SemVer)](https://img.shields.io/github/v/release/sds/scss-lint?sort=semver)](https://github.com/sds/scss-lint/releases) [![GitHub last commit](https://img.shields.io/github/last-commit/sds/scss-lint)](https://github.com/sds/scss-lint/commits) [![GitHub commit activity](https://img.shields.io/github/commit-activity/y/sds/scss-lint)](https://github.com/sds/scss-lint/graphs/commit-activity/) [![GitHub contributors](https://img.shields.io/github/contributors/sds/scss-lint)](https://github.com/sds/scss-lint/graphs/contributors/) + +> This linter has been deprecated. +> +> https://github.com/sds/scss-lint#notice-consider-other-tools-before-adopting-scss-lint +> +> You should disable scss-lint by adding it in DISABLE_LINTERS property. +> +> It will be maintained at least until the next major release. ## scss-lint documentation @@ -24,12 +32,13 @@ description: How to use scss-lint (configure, ignore files, ignore errors, help ## Configuration in MegaLinter -- Enable scss-lint by adding `CSS_SCSS_LINT` in [ENABLE_LINTERS variable](https://megalinter.io/6.22.2/configuration/#activation-and-deactivation) -- Disable scss-lint by adding `CSS_SCSS_LINT` in [DISABLE_LINTERS variable](https://megalinter.io/6.22.2/configuration/#activation-and-deactivation) +- Enable scss-lint by adding `CSS_SCSS_LINT` in [ENABLE_LINTERS variable](https://megalinter.io/7.13.0/configuration/#activation-and-deactivation) +- Disable scss-lint by adding `CSS_SCSS_LINT` in [DISABLE_LINTERS variable](https://megalinter.io/7.13.0/configuration/#activation-and-deactivation) | Variable | Description | Default value | |-------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------| | CSS_SCSS_LINT_ARGUMENTS | User custom arguments to add in linter CLI call
Ex: `-s --foo "bar"` | | +| CSS_SCSS_LINT_COMMAND_REMOVE_ARGUMENTS | User custom arguments to remove from command line before calling the linter
Ex: `-s --foo "bar"` | | | CSS_SCSS_LINT_FILTER_REGEX_INCLUDE | Custom regex including filter
Ex: `(src\|lib)` | Include every file | | CSS_SCSS_LINT_FILTER_REGEX_EXCLUDE | Custom regex excluding filter
Ex: `(test\|examples)` | Exclude no file | | CSS_SCSS_LINT_CLI_LINT_MODE | Override default CLI lint mode
- `file`: Calls the linter for each file
- `project`: Call the linter from the root of the project | `file` | @@ -37,10 +46,12 @@ description: How to use scss-lint (configure, ignore files, ignore errors, help | CSS_SCSS_LINT_FILE_NAMES_REGEX | File name regex filters. Regular expression list for filtering files by their base names using regex full match. Empty list includes all files
Ex: `["Dockerfile(-.+)?", "Jenkinsfile"]` | Include every file | | CSS_SCSS_LINT_PRE_COMMANDS | List of bash commands to run before the linter | None | | CSS_SCSS_LINT_POST_COMMANDS | List of bash commands to run after the linter | None | +| CSS_SCSS_LINT_UNSECURED_ENV_VARIABLES | List of env variables explicitly not filtered before calling CSS_SCSS_LINT and its pre/post commands | None | | CSS_SCSS_LINT_CONFIG_FILE | scss-lint configuration file name
Use `LINTER_DEFAULT` to let the linter find it | `.scss-lint.yml` | | CSS_SCSS_LINT_RULES_PATH | Path where to find linter configuration file | Workspace folder, then MegaLinter default rules | | CSS_SCSS_LINT_DISABLE_ERRORS | Run linter but consider errors as warnings | `false` | | CSS_SCSS_LINT_DISABLE_ERRORS_IF_LESS_THAN | Maximum number of errors allowed | `0` | +| CSS_SCSS_LINT_CLI_EXECUTABLE | Override CLI executable | `['scss-lint']` | ## IDE Integration @@ -56,22 +67,24 @@ Use scss-lint in your favorite IDE to catch errors before MegaLinter ! This linter is available in the following flavours -| | Flavor | Description | Embedded linters | Info | -|:--------------------------------------------------------------------------------------------------------------------------------------------------------:|:---------------------------------------------------------------------|:------------------------------------------------------|:----------------:|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:| -| | [all](https://megalinter.io/6.22.2/supported-linters/) | Default MegaLinter Flavor | 114 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter) | -| | [cupcake](https://megalinter.io/6.22.2/flavors/cupcake/) | MegaLinter for the most commonly used languages | 82 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-cupcake/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-cupcake) | -| | [documentation](https://megalinter.io/6.22.2/flavors/documentation/) | MegaLinter for documentation projects | 48 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-documentation/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-documentation) | -| | [dotnet](https://megalinter.io/6.22.2/flavors/dotnet/) | Optimized for C, C++, C# or VB based projects | 60 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-dotnet/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-dotnet) | -| | [go](https://megalinter.io/6.22.2/flavors/go/) | Optimized for GO based projects | 50 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-go/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-go) | -| | [java](https://megalinter.io/6.22.2/flavors/java/) | Optimized for JAVA based projects | 51 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-java/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-java) | -| | [javascript](https://megalinter.io/6.22.2/flavors/javascript/) | Optimized for JAVASCRIPT or TYPESCRIPT based projects | 57 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-javascript/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-javascript) | -| | [php](https://megalinter.io/6.22.2/flavors/php/) | Optimized for PHP based projects | 51 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-php/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-php) | -| | [python](https://megalinter.io/6.22.2/flavors/python/) | Optimized for PYTHON based projects | 59 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-python/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-python) | -| | [ruby](https://megalinter.io/6.22.2/flavors/ruby/) | Optimized for RUBY based projects | 48 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-ruby/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-ruby) | -| | [rust](https://megalinter.io/6.22.2/flavors/rust/) | Optimized for RUST based projects | 48 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-rust/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-rust) | -| | [salesforce](https://megalinter.io/6.22.2/flavors/salesforce/) | Optimized for Salesforce based projects | 51 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-salesforce/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-salesforce) | -| | [swift](https://megalinter.io/6.22.2/flavors/swift/) | Optimized for SWIFT based projects | 48 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-swift/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-swift) | -| | [terraform](https://megalinter.io/6.22.2/flavors/terraform/) | Optimized for TERRAFORM based projects | 53 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-terraform/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-terraform) | +| | Flavor | Description | Embedded linters | Info | +|:--------------------------------------------------------------------------------------------------------------------------------------------------------:|:---------------------------------------------------------------------|:---------------------------------------------------------|:----------------:|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:| +| | [all](https://megalinter.io/7.13.0/supported-linters/) | Default MegaLinter Flavor | 125 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter) | +| | [c_cpp](https://megalinter.io/7.13.0/flavors/c_cpp/) | Optimized for pure C/C++ projects | 56 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-c_cpp/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-c_cpp) | +| | [cupcake](https://megalinter.io/7.13.0/flavors/cupcake/) | MegaLinter for the most commonly used languages | 84 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-cupcake/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-cupcake) | +| | [documentation](https://megalinter.io/7.13.0/flavors/documentation/) | MegaLinter for documentation projects | 51 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-documentation/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-documentation) | +| | [dotnet](https://megalinter.io/7.13.0/flavors/dotnet/) | Optimized for C, C++, C# or VB based projects | 63 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-dotnet/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-dotnet) | +| | [dotnetweb](https://megalinter.io/7.13.0/flavors/dotnetweb/) | Optimized for C, C++, C# or VB based projects with JS/TS | 72 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-dotnetweb/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-dotnetweb) | +| | [go](https://megalinter.io/7.13.0/flavors/go/) | Optimized for GO based projects | 53 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-go/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-go) | +| | [java](https://megalinter.io/7.13.0/flavors/java/) | Optimized for JAVA based projects | 54 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-java/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-java) | +| | [javascript](https://megalinter.io/7.13.0/flavors/javascript/) | Optimized for JAVASCRIPT or TYPESCRIPT based projects | 61 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-javascript/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-javascript) | +| | [php](https://megalinter.io/7.13.0/flavors/php/) | Optimized for PHP based projects | 56 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-php/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-php) | +| | [python](https://megalinter.io/7.13.0/flavors/python/) | Optimized for PYTHON based projects | 64 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-python/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-python) | +| | [ruby](https://megalinter.io/7.13.0/flavors/ruby/) | Optimized for RUBY based projects | 52 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-ruby/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-ruby) | +| | [rust](https://megalinter.io/7.13.0/flavors/rust/) | Optimized for RUST based projects | 52 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-rust/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-rust) | +| | [salesforce](https://megalinter.io/7.13.0/flavors/salesforce/) | Optimized for Salesforce based projects | 56 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-salesforce/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-salesforce) | +| | [swift](https://megalinter.io/7.13.0/flavors/swift/) | Optimized for SWIFT based projects | 52 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-swift/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-swift) | +| | [terraform](https://megalinter.io/7.13.0/flavors/terraform/) | Optimized for TERRAFORM based projects | 56 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-terraform/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-terraform) | ## Behind the scenes diff --git a/docs/descriptors/css_stylelint.md b/docs/descriptors/css_stylelint.md index 6e2906cf408..8f8134ad4ed 100644 --- a/docs/descriptors/css_stylelint.md +++ b/docs/descriptors/css_stylelint.md @@ -3,11 +3,11 @@ title: stylelint configuration in MegaLinter description: How to use stylelint (configure, ignore files, ignore errors, help & version documentations) to analyze CSS files --- - + @@ -15,10 +15,10 @@ description: How to use stylelint (configure, ignore files, ignore errors, help ## stylelint documentation -- Version in MegaLinter: **15.4.0** +- Version in MegaLinter: **16.6.1** - Visit [Official Web Site](https://stylelint.io){target=_blank} - See [How to configure stylelint rules](https://stylelint.io/user-guide/configure){target=_blank} - - If custom `.stylelintrc.json` config file is not found, [.stylelintrc.json](https://github.com/oxsecurity/megalinter/tree/main/TEMPLATES/.stylelintrc.json){target=_blank} will be used + - If custom `.stylelintrc.json` config file isn't found, [.stylelintrc.json](https://github.com/oxsecurity/megalinter/tree/main/TEMPLATES/.stylelintrc.json){target=_blank} will be used - See [How to disable stylelint rules in files](https://stylelint.io/user-guide/ignore-code){target=_blank} - See [Index of problems detected by stylelint](https://stylelint.io/user-guide/rules/list){target=_blank} @@ -26,14 +26,15 @@ description: How to use stylelint (configure, ignore files, ignore errors, help ## Configuration in MegaLinter -- Enable stylelint by adding `CSS_STYLELINT` in [ENABLE_LINTERS variable](https://megalinter.io/6.22.2/configuration/#activation-and-deactivation) -- Disable stylelint by adding `CSS_STYLELINT` in [DISABLE_LINTERS variable](https://megalinter.io/6.22.2/configuration/#activation-and-deactivation) +- Enable stylelint by adding `CSS_STYLELINT` in [ENABLE_LINTERS variable](https://megalinter.io/7.13.0/configuration/#activation-and-deactivation) +- Disable stylelint by adding `CSS_STYLELINT` in [DISABLE_LINTERS variable](https://megalinter.io/7.13.0/configuration/#activation-and-deactivation) -- Enable **auto-fixes** by adding `CSS_STYLELINT` in [APPLY_FIXES variable](https://megalinter.io/6.22.2/configuration/#apply-fixes) +- Enable **autofixes** by adding `CSS_STYLELINT` in [APPLY_FIXES variable](https://megalinter.io/7.13.0/configuration/#apply-fixes) | Variable | Description | Default value | |-------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------| | CSS_STYLELINT_ARGUMENTS | User custom arguments to add in linter CLI call
Ex: `-s --foo "bar"` | | +| CSS_STYLELINT_COMMAND_REMOVE_ARGUMENTS | User custom arguments to remove from command line before calling the linter
Ex: `-s --foo "bar"` | | | CSS_STYLELINT_FILTER_REGEX_INCLUDE | Custom regex including filter
Ex: `(src\|lib)` | Include every file | | CSS_STYLELINT_FILTER_REGEX_EXCLUDE | Custom regex excluding filter
Ex: `(test\|examples)` | Exclude no file | | CSS_STYLELINT_CLI_LINT_MODE | Override default CLI lint mode
- `file`: Calls the linter for each file
- `list_of_files`: Call the linter with the list of files as argument
- `project`: Call the linter from the root of the project | `list_of_files` | @@ -41,10 +42,12 @@ description: How to use stylelint (configure, ignore files, ignore errors, help | CSS_STYLELINT_FILE_NAMES_REGEX | File name regex filters. Regular expression list for filtering files by their base names using regex full match. Empty list includes all files
Ex: `["Dockerfile(-.+)?", "Jenkinsfile"]` | Include every file | | CSS_STYLELINT_PRE_COMMANDS | List of bash commands to run before the linter | None | | CSS_STYLELINT_POST_COMMANDS | List of bash commands to run after the linter | None | +| CSS_STYLELINT_UNSECURED_ENV_VARIABLES | List of env variables explicitly not filtered before calling CSS_STYLELINT and its pre/post commands | None | | CSS_STYLELINT_CONFIG_FILE | stylelint configuration file name
Use `LINTER_DEFAULT` to let the linter find it | `.stylelintrc.json` | | CSS_STYLELINT_RULES_PATH | Path where to find linter configuration file | Workspace folder, then MegaLinter default rules | | CSS_STYLELINT_DISABLE_ERRORS | Run linter but consider errors as warnings | `false` | | CSS_STYLELINT_DISABLE_ERRORS_IF_LESS_THAN | Maximum number of errors allowed | `0` | +| CSS_STYLELINT_CLI_EXECUTABLE | Override CLI executable | `['stylelint']` | ## IDE Integration @@ -63,22 +66,24 @@ Use stylelint in your favorite IDE to catch errors before MegaLinter ! This linter is available in the following flavours -| | Flavor | Description | Embedded linters | Info | -|:--------------------------------------------------------------------------------------------------------------------------------------------------------:|:---------------------------------------------------------------------|:------------------------------------------------------|:----------------:|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:| -| | [all](https://megalinter.io/6.22.2/supported-linters/) | Default MegaLinter Flavor | 114 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter) | -| | [cupcake](https://megalinter.io/6.22.2/flavors/cupcake/) | MegaLinter for the most commonly used languages | 82 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-cupcake/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-cupcake) | -| | [documentation](https://megalinter.io/6.22.2/flavors/documentation/) | MegaLinter for documentation projects | 48 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-documentation/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-documentation) | -| | [dotnet](https://megalinter.io/6.22.2/flavors/dotnet/) | Optimized for C, C++, C# or VB based projects | 60 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-dotnet/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-dotnet) | -| | [go](https://megalinter.io/6.22.2/flavors/go/) | Optimized for GO based projects | 50 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-go/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-go) | -| | [java](https://megalinter.io/6.22.2/flavors/java/) | Optimized for JAVA based projects | 51 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-java/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-java) | -| | [javascript](https://megalinter.io/6.22.2/flavors/javascript/) | Optimized for JAVASCRIPT or TYPESCRIPT based projects | 57 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-javascript/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-javascript) | -| | [php](https://megalinter.io/6.22.2/flavors/php/) | Optimized for PHP based projects | 51 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-php/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-php) | -| | [python](https://megalinter.io/6.22.2/flavors/python/) | Optimized for PYTHON based projects | 59 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-python/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-python) | -| | [ruby](https://megalinter.io/6.22.2/flavors/ruby/) | Optimized for RUBY based projects | 48 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-ruby/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-ruby) | -| | [rust](https://megalinter.io/6.22.2/flavors/rust/) | Optimized for RUST based projects | 48 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-rust/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-rust) | -| | [salesforce](https://megalinter.io/6.22.2/flavors/salesforce/) | Optimized for Salesforce based projects | 51 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-salesforce/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-salesforce) | -| | [swift](https://megalinter.io/6.22.2/flavors/swift/) | Optimized for SWIFT based projects | 48 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-swift/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-swift) | -| | [terraform](https://megalinter.io/6.22.2/flavors/terraform/) | Optimized for TERRAFORM based projects | 53 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-terraform/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-terraform) | +| | Flavor | Description | Embedded linters | Info | +|:--------------------------------------------------------------------------------------------------------------------------------------------------------:|:---------------------------------------------------------------------|:---------------------------------------------------------|:----------------:|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:| +| | [all](https://megalinter.io/7.13.0/supported-linters/) | Default MegaLinter Flavor | 125 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter) | +| | [c_cpp](https://megalinter.io/7.13.0/flavors/c_cpp/) | Optimized for pure C/C++ projects | 56 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-c_cpp/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-c_cpp) | +| | [cupcake](https://megalinter.io/7.13.0/flavors/cupcake/) | MegaLinter for the most commonly used languages | 84 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-cupcake/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-cupcake) | +| | [documentation](https://megalinter.io/7.13.0/flavors/documentation/) | MegaLinter for documentation projects | 51 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-documentation/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-documentation) | +| | [dotnet](https://megalinter.io/7.13.0/flavors/dotnet/) | Optimized for C, C++, C# or VB based projects | 63 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-dotnet/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-dotnet) | +| | [dotnetweb](https://megalinter.io/7.13.0/flavors/dotnetweb/) | Optimized for C, C++, C# or VB based projects with JS/TS | 72 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-dotnetweb/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-dotnetweb) | +| | [go](https://megalinter.io/7.13.0/flavors/go/) | Optimized for GO based projects | 53 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-go/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-go) | +| | [java](https://megalinter.io/7.13.0/flavors/java/) | Optimized for JAVA based projects | 54 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-java/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-java) | +| | [javascript](https://megalinter.io/7.13.0/flavors/javascript/) | Optimized for JAVASCRIPT or TYPESCRIPT based projects | 61 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-javascript/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-javascript) | +| | [php](https://megalinter.io/7.13.0/flavors/php/) | Optimized for PHP based projects | 56 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-php/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-php) | +| | [python](https://megalinter.io/7.13.0/flavors/python/) | Optimized for PYTHON based projects | 64 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-python/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-python) | +| | [ruby](https://megalinter.io/7.13.0/flavors/ruby/) | Optimized for RUBY based projects | 52 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-ruby/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-ruby) | +| | [rust](https://megalinter.io/7.13.0/flavors/rust/) | Optimized for RUST based projects | 52 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-rust/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-rust) | +| | [salesforce](https://megalinter.io/7.13.0/flavors/salesforce/) | Optimized for Salesforce based projects | 56 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-salesforce/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-salesforce) | +| | [swift](https://megalinter.io/7.13.0/flavors/swift/) | Optimized for SWIFT based projects | 52 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-swift/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-swift) | +| | [terraform](https://megalinter.io/7.13.0/flavors/terraform/) | Optimized for TERRAFORM based projects | 56 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-terraform/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-terraform) | ## Behind the scenes @@ -118,25 +123,27 @@ stylelint --fix --config .stylelintrc.json myfile.css myfile2.css myfile3.css Input: Files(s), glob(s), or nothing to use stdin. If an input argument is wrapped in quotation marks, it will be passed to - globby for cross-platform glob support. node_modules are always ignored. + globby for cross-platform glob support. "node_modules" are always ignored. You can also pass no input and use stdin, instead. Options: - --config, -c + --config, -c + + A path to a specific configuration file (JSON, YAML, CommonJS, or ES module), + or a module name in "node_modules" that points to one. If no argument is + provided, Stylelint will search for configuration files in the following + places, in this order: + + - a "stylelint" property in "package.json" + - a ".stylelintrc" file + - a ".stylelintrc.{cjs,mjs,js,json,yaml,yml}" file + - a "stylelint.config.{cjs,mjs,js}" file - Path to a specific configuration file (JSON, YAML, or CommonJS), or the - name of a module in node_modules that points to one. If no --config - argument is provided, stylelint will search for configuration files in - the following places, in this order: - - a stylelint property in package.json - - a .stylelintrc file (with or without filename extension: - .json, .yaml, .yml, and .js are available) - - a stylelint.config.js file exporting a JS object The search will begin in the working directory and move up the directory tree until a configuration file is found. - --config-basedir + --config-basedir An absolute path to the directory that relative paths defining "extends", "plugins", and "customSyntax" are *relative to*. Only necessary if these @@ -144,77 +151,88 @@ stylelint --fix --config .stylelintrc.json myfile.css myfile2.css myfile3.css --print-config - Print the configuration for the given path. + Print the configuration for the given input file path. Globs are unsupported. - --ignore-path, -i + --ignore-path, -i - Path to a file containing patterns that describe files to ignore. The - path can be absolute or relative to process.cwd(). You can repeat the + A path to a file containing patterns that describe files to ignore. The + path can be absolute or relative to "process.cwd()". You can repeat the option to provide multiple paths. By default, Stylelint looks for - .stylelintignore in process.cwd(). + ".stylelintignore" in "process.cwd()". Multiple can be set. - --ignore-pattern, --ip + --ignore-pattern, --ip - Pattern of files to ignore (in addition to those in .stylelintignore) + A pattern of files to ignore (in addition to those in ".stylelintignore"). + Multiple can be set. --fix Automatically fix problems of certain rules. - --custom-syntax + --custom-syntax - Module name or path to a JS file exporting a PostCSS-compatible syntax. + A module name or path to a JS file exporting a PostCSS-compatible syntax. --stdin Accept stdin input even if it is empty. - --stdin-filename + --stdin-filename A filename to assign stdin input. --ignore-disables, --id - Ignore stylelint-disable comments. + Ignore "stylelint-disable" comments. --disable-default-ignores, --di - Allow linting of node_modules. + Allow linting of "node_modules". - --cache [default: false] + --[no-]cache Store the info about processed files in order to only operate on the - changed ones the next time you run stylelint. By default, the cache - is stored in "./.stylelintcache". To adjust this, use --cache-location. + changed ones the next time you run Stylelint. By default, the cache is + stored in "./.stylelintcache". To adjust this, use "--cache-location". + Cache is disabled by default. - --cache-location [default: '.stylelintcache'] + --cache-location - Path to a file or directory to be used for the cache location. - Default is "./.stylelintcache". If a directory is specified, a cache - file will be created inside the specified folder, with a name derived - from a hash of the current working directory. + A path to a file or directory to be used for the cache location. If a + directory is specified, a cache file will be created inside the specified + folder, with a name derived from a hash of the current working directory. If the directory for the cache does not exist, make sure you add a trailing "/" - on *nix systems or "\" on Windows. Otherwise the path will be assumed to be a file. + on *nix systems or "\" on Windows. Otherwise the path will be assumed to + be a file. + + --cache-strategy - --cache-strategy [default: "metadata"] + A strategy for the cache to use for detecting changed files. Either one of: - Strategy for the cache to use for detecting changed files. Can be either - "metadata" or "content". + metadata by metadata of a file (default) + content by content of a file - The "content" strategy can be useful in cases where the modification time of - your files changes even if their contents have not. For example, this can happen - during git operations like "git clone" because git does not track file modification - time. + The "content" strategy can be useful in cases where the modification time + of your files changes even if their contents have not. For example, this can + happen during git operations like "git clone" because git does not track file + modification time. - --formatter, -f [default: "string"] + --formatter, -f - The output formatter: "compact", "github", "json", "string", "tap", "unix" or "verbose". + An output formatter. The variants are as follows: - --custom-formatter + string human-readable strings (default) + compact similar to ESLint's compact formatter + github workflow commands for GitHub Actions + json JSON format + tap TAP format + unix C compiler-like format + verbose extend "string" to include a file list and a tally - Path to a JS file exporting a custom formatting function. - The file can either be a filesystem path, a module name, or a file to load from a dependency. + --custom-formatter + + A path to a JS file or module name exporting a custom formatting function. --quiet, -q @@ -225,48 +243,52 @@ stylelint --fix --config .stylelintrc.json myfile.css myfile2.css myfile3.css Ignore deprecations warnings. - --color - --no-color + --[no-]color Force enabling/disabling of color. --report-needless-disables, --rd - Also report errors for stylelint-disable comments that are not blocking a lint warning. - The process will exit with code 2 if needless disables are found. + Also report errors for "stylelint-disable" comments that are not blocking + a lint warning. The process will exit with code 2 if needless disables are found. --report-invalid-scope-disables, --risd - Report stylelint-disable comments that used for rules that don't exist within the configuration object. - The process will exit with code 2 if invalid scope disables are found. + Report "stylelint-disable" comments that used for rules that don't exist + within the configuration object. The process will exit with code 2 if invalid + scope disables are found. --report-descriptionless-disables, --rdd - Report stylelint-disable comments without a description. - The process will exit with code 2 if descriptionless disables are found. - - --max-warnings, --mw - - Number of warnings above which the process will exit with code 2. - Useful when setting "defaultSeverity" to "warning" and expecting the - process to fail on warnings (e.g. CI build). + Report "stylelint-disable" comments without a description. The process will + exit with code 2 if descriptionless disables are found. - --output-file, -o + --max-warnings, --mw - Path of file to write report. + The number of warnings above which the process will exit with code 2. + Useful when setting "defaultSeverity" to "warning" and expecting the process + to fail on warnings (e.g. CI build). - --version, -v + --output-file, -o - Show the currently installed version of stylelint. + A file path to write a report. --allow-empty-input, --aei - When glob pattern matches no files, the process will exit without throwing an error. + When a glob pattern matches no files, the process will exit without throwing an error. - --globby-options, --go + --globby-options, --go Options in JSON format passed to globby. + --version, -v + + Show the version. + + --help, -h + + Show the help. + ``` ### Installation on mega-linter Docker image diff --git a/docs/descriptors/dart.md b/docs/descriptors/dart.md index f7f3eee69dc..d186bdacb57 100644 --- a/docs/descriptors/dart.md +++ b/docs/descriptors/dart.md @@ -3,7 +3,7 @@ title: DART linters in MegaLinter description: dartanalyzer is available to analyze DART files in MegaLinter --- - + # DART @@ -20,8 +20,60 @@ description: dartanalyzer is available to analyze DART files in MegaLinter ## Configuration in MegaLinter -| Variable | Description | Default value | -|---------------------------|-------------------------------|---------------| -| DART_FILTER_REGEX_INCLUDE | Custom regex including filter | | -| DART_FILTER_REGEX_EXCLUDE | Custom regex excluding filter | | +| Variable | Description | Default value | +|---------------------------|-------------------------------------------------|---------------| +| DART_PRE_COMMANDS | List of bash commands to run before the linters | None | +| DART_POST_COMMANDS | List of bash commands to run after the linters | None | +| DART_FILTER_REGEX_INCLUDE | Custom regex including filter | | +| DART_FILTER_REGEX_EXCLUDE | Custom regex excluding filter | | + + +## Behind the scenes + +### Installation + +- Dockerfile commands : +```dockerfile +ENV LANG=C.UTF-8 +RUN ALPINE_GLIBC_BASE_URL="https://github.com/sgerrand/alpine-pkg-glibc/releases/download" && \ + ALPINE_GLIBC_PACKAGE_VERSION="2.34-r0" && \ + ALPINE_GLIBC_BASE_PACKAGE_FILENAME="glibc-$ALPINE_GLIBC_PACKAGE_VERSION.apk" && \ + ALPINE_GLIBC_BIN_PACKAGE_FILENAME="glibc-bin-$ALPINE_GLIBC_PACKAGE_VERSION.apk" && \ + ALPINE_GLIBC_I18N_PACKAGE_FILENAME="glibc-i18n-$ALPINE_GLIBC_PACKAGE_VERSION.apk" && \ + apk add --no-cache --virtual=.build-dependencies wget ca-certificates && \ + echo \ + "-----BEGIN PUBLIC KEY-----\ + MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApZ2u1KJKUu/fW4A25y9m\ + y70AGEa/J3Wi5ibNVGNn1gT1r0VfgeWd0pUybS4UmcHdiNzxJPgoWQhV2SSW1JYu\ + tOqKZF5QSN6X937PTUpNBjUvLtTQ1ve1fp39uf/lEXPpFpOPL88LKnDBgbh7wkCp\ + m2KzLVGChf83MS0ShL6G9EQIAUxLm99VpgRjwqTQ/KfzGtpke1wqws4au0Ab4qPY\ + KXvMLSPLUp7cfulWvhmZSegr5AdhNw5KNizPqCJT8ZrGvgHypXyiFvvAH5YRtSsc\ + Zvo9GI2e2MaZyo9/lvb+LbLEJZKEQckqRj4P26gmASrZEPStwc+yqy1ShHLA0j6m\ + 1QIDAQAB\ + -----END PUBLIC KEY-----" | sed 's/ */\\n/g' > "/etc/apk/keys/sgerrand.rsa.pub" && \ + wget --quiet --tries=10 --waitretry=10 \ + "$ALPINE_GLIBC_BASE_URL/$ALPINE_GLIBC_PACKAGE_VERSION/$ALPINE_GLIBC_BASE_PACKAGE_FILENAME" \ + "$ALPINE_GLIBC_BASE_URL/$ALPINE_GLIBC_PACKAGE_VERSION/$ALPINE_GLIBC_BIN_PACKAGE_FILENAME" \ + "$ALPINE_GLIBC_BASE_URL/$ALPINE_GLIBC_PACKAGE_VERSION/$ALPINE_GLIBC_I18N_PACKAGE_FILENAME" && \ + mv /etc/nsswitch.conf /etc/nsswitch.conf.bak && \ + apk add --no-cache --force-overwrite \ + "$ALPINE_GLIBC_BASE_PACKAGE_FILENAME" \ + "$ALPINE_GLIBC_BIN_PACKAGE_FILENAME" \ + "$ALPINE_GLIBC_I18N_PACKAGE_FILENAME" && \ + \ + mv /etc/nsswitch.conf.bak /etc/nsswitch.conf && \ + rm "/etc/apk/keys/sgerrand.rsa.pub" && \ + (/usr/glibc-compat/bin/localedef --force --inputfile POSIX --charmap UTF-8 "$LANG" || true) && \ + echo "export LANG=$LANG" > /etc/profile.d/locale.sh && \ + \ + apk del glibc-i18n && \ + \ + rm "/root/.wget-hsts" && \ + apk del .build-dependencies && \ + rm \ + "$ALPINE_GLIBC_BASE_PACKAGE_FILENAME" \ + "$ALPINE_GLIBC_BIN_PACKAGE_FILENAME" \ + "$ALPINE_GLIBC_I18N_PACKAGE_FILENAME" + +``` diff --git a/docs/descriptors/dart_dartanalyzer.md b/docs/descriptors/dart_dartanalyzer.md index 52a8a346ad0..3410f577b1b 100644 --- a/docs/descriptors/dart_dartanalyzer.md +++ b/docs/descriptors/dart_dartanalyzer.md @@ -3,33 +3,28 @@ title: dartanalyzer configuration in MegaLinter description: How to use dartanalyzer (configure, ignore files, ignore errors, help & version documentations) to analyze DART files --- - - - - + +# dartanalyzer ![downgraded version](https://shields.io/badge/-downgraded%20version-orange) [![GitHub stars](https://img.shields.io/github/stars/dart-lang/sdk?cacheSeconds=3600)](https://github.com/dart-lang/sdk) [![GitHub release (latest SemVer)](https://img.shields.io/github/v/release/dart-lang/sdk?sort=semver)](https://github.com/dart-lang/sdk/releases) [![GitHub last commit](https://img.shields.io/github/last-commit/dart-lang/sdk)](https://github.com/dart-lang/sdk/commits) [![GitHub commit activity](https://img.shields.io/github/commit-activity/y/dart-lang/sdk)](https://github.com/dart-lang/sdk/graphs/commit-activity/) [![GitHub contributors](https://img.shields.io/github/contributors/dart-lang/sdk)](https://github.com/dart-lang/sdk/graphs/contributors/) ## dartanalyzer documentation - Visit [Official Web Site](https://github.com/dart-lang/sdk/tree/master/pkg/analyzer_cli#readme){target=_blank} - See [How to configure dartanalyzer rules](https://dart.dev/guides/language/analysis-options#the-analysis-options-file){target=_blank} - - If custom `analysis_options.yml` config file is not found, [analysis_options.yml](https://github.com/oxsecurity/megalinter/tree/main/TEMPLATES/analysis_options.yml){target=_blank} will be used + - If custom `analysis_options.yml` config file isn't found, [analysis_options.yml](https://github.com/oxsecurity/megalinter/tree/main/TEMPLATES/analysis_options.yml){target=_blank} will be used - See [How to disable dartanalyzer rules in files](https://dart.dev/guides/language/analysis-options#suppressing-rules-for-a-file){target=_blank} [![sdk - GitHub](https://gh-card.dev/repos/dart-lang/sdk.svg?fullname=)](https://github.com/dart-lang/sdk){target=_blank} ## Configuration in MegaLinter -- Enable dartanalyzer by adding `DART_DARTANALYZER` in [ENABLE_LINTERS variable](https://megalinter.io/6.22.2/configuration/#activation-and-deactivation) -- Disable dartanalyzer by adding `DART_DARTANALYZER` in [DISABLE_LINTERS variable](https://megalinter.io/6.22.2/configuration/#activation-and-deactivation) +- Enable dartanalyzer by adding `DART_DARTANALYZER` in [ENABLE_LINTERS variable](https://megalinter.io/7.13.0/configuration/#activation-and-deactivation) +- Disable dartanalyzer by adding `DART_DARTANALYZER` in [DISABLE_LINTERS variable](https://megalinter.io/7.13.0/configuration/#activation-and-deactivation) | Variable | Description | Default value | |-----------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------| | DART_DARTANALYZER_ARGUMENTS | User custom arguments to add in linter CLI call
Ex: `-s --foo "bar"` | | +| DART_DARTANALYZER_COMMAND_REMOVE_ARGUMENTS | User custom arguments to remove from command line before calling the linter
Ex: `-s --foo "bar"` | | | DART_DARTANALYZER_FILTER_REGEX_INCLUDE | Custom regex including filter
Ex: `(src\|lib)` | Include every file | | DART_DARTANALYZER_FILTER_REGEX_EXCLUDE | Custom regex excluding filter
Ex: `(test\|examples)` | Exclude no file | | DART_DARTANALYZER_CLI_LINT_MODE | Override default CLI lint mode
- `file`: Calls the linter for each file
- `project`: Call the linter from the root of the project | `file` | @@ -37,10 +32,12 @@ description: How to use dartanalyzer (configure, ignore files, ignore errors, he | DART_DARTANALYZER_FILE_NAMES_REGEX | File name regex filters. Regular expression list for filtering files by their base names using regex full match. Empty list includes all files
Ex: `["Dockerfile(-.+)?", "Jenkinsfile"]` | Include every file | | DART_DARTANALYZER_PRE_COMMANDS | List of bash commands to run before the linter | None | | DART_DARTANALYZER_POST_COMMANDS | List of bash commands to run after the linter | None | +| DART_DARTANALYZER_UNSECURED_ENV_VARIABLES | List of env variables explicitly not filtered before calling DART_DARTANALYZER and its pre/post commands | None | | DART_DARTANALYZER_CONFIG_FILE | dartanalyzer configuration file name
Use `LINTER_DEFAULT` to let the linter find it | `analysis_options.yml` | | DART_DARTANALYZER_RULES_PATH | Path where to find linter configuration file | Workspace folder, then MegaLinter default rules | | DART_DARTANALYZER_DISABLE_ERRORS | Run linter but consider errors as warnings | `false` | | DART_DARTANALYZER_DISABLE_ERRORS_IF_LESS_THAN | Maximum number of errors allowed | `0` | +| DART_DARTANALYZER_CLI_EXECUTABLE | Override CLI executable | `['dartanalyzer']` | ## IDE Integration @@ -57,7 +54,7 @@ This linter is available in the following flavours | | Flavor | Description | Embedded linters | Info | |:--------------------------------------------------------------------------------------------------------------------------------------------------------:|:-------------------------------------------------------|:--------------------------|:----------------:|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:| -| | [all](https://megalinter.io/6.22.2/supported-linters/) | Default MegaLinter Flavor | 114 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter) | +| | [all](https://megalinter.io/7.13.0/supported-linters/) | Default MegaLinter Flavor | 125 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter) | ## Behind the scenes @@ -116,12 +113,51 @@ For more information, see https://www.dartlang.org/tools/analyzer. - Dockerfile commands : ```dockerfile +# Parent descriptor install +ENV LANG=C.UTF-8 +RUN ALPINE_GLIBC_BASE_URL="https://github.com/sgerrand/alpine-pkg-glibc/releases/download" && \ + ALPINE_GLIBC_PACKAGE_VERSION="2.34-r0" && \ + ALPINE_GLIBC_BASE_PACKAGE_FILENAME="glibc-$ALPINE_GLIBC_PACKAGE_VERSION.apk" && \ + ALPINE_GLIBC_BIN_PACKAGE_FILENAME="glibc-bin-$ALPINE_GLIBC_PACKAGE_VERSION.apk" && \ + ALPINE_GLIBC_I18N_PACKAGE_FILENAME="glibc-i18n-$ALPINE_GLIBC_PACKAGE_VERSION.apk" && \ + apk add --no-cache --virtual=.build-dependencies wget ca-certificates && \ + echo \ + "-----BEGIN PUBLIC KEY-----\ + MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApZ2u1KJKUu/fW4A25y9m\ + y70AGEa/J3Wi5ibNVGNn1gT1r0VfgeWd0pUybS4UmcHdiNzxJPgoWQhV2SSW1JYu\ + tOqKZF5QSN6X937PTUpNBjUvLtTQ1ve1fp39uf/lEXPpFpOPL88LKnDBgbh7wkCp\ + m2KzLVGChf83MS0ShL6G9EQIAUxLm99VpgRjwqTQ/KfzGtpke1wqws4au0Ab4qPY\ + KXvMLSPLUp7cfulWvhmZSegr5AdhNw5KNizPqCJT8ZrGvgHypXyiFvvAH5YRtSsc\ + Zvo9GI2e2MaZyo9/lvb+LbLEJZKEQckqRj4P26gmASrZEPStwc+yqy1ShHLA0j6m\ + 1QIDAQAB\ + -----END PUBLIC KEY-----" | sed 's/ */\\n/g' > "/etc/apk/keys/sgerrand.rsa.pub" && \ + wget --quiet --tries=10 --waitretry=10 \ + "$ALPINE_GLIBC_BASE_URL/$ALPINE_GLIBC_PACKAGE_VERSION/$ALPINE_GLIBC_BASE_PACKAGE_FILENAME" \ + "$ALPINE_GLIBC_BASE_URL/$ALPINE_GLIBC_PACKAGE_VERSION/$ALPINE_GLIBC_BIN_PACKAGE_FILENAME" \ + "$ALPINE_GLIBC_BASE_URL/$ALPINE_GLIBC_PACKAGE_VERSION/$ALPINE_GLIBC_I18N_PACKAGE_FILENAME" && \ + mv /etc/nsswitch.conf /etc/nsswitch.conf.bak && \ + apk add --no-cache --force-overwrite \ + "$ALPINE_GLIBC_BASE_PACKAGE_FILENAME" \ + "$ALPINE_GLIBC_BIN_PACKAGE_FILENAME" \ + "$ALPINE_GLIBC_I18N_PACKAGE_FILENAME" && \ + \ + mv /etc/nsswitch.conf.bak /etc/nsswitch.conf && \ + rm "/etc/apk/keys/sgerrand.rsa.pub" && \ + (/usr/glibc-compat/bin/localedef --force --inputfile POSIX --charmap UTF-8 "$LANG" || true) && \ + echo "export LANG=$LANG" > /etc/profile.d/locale.sh && \ + \ + apk del glibc-i18n && \ + \ + rm "/root/.wget-hsts" && \ + apk del .build-dependencies && \ + rm \ + "$ALPINE_GLIBC_BASE_PACKAGE_FILENAME" \ + "$ALPINE_GLIBC_BIN_PACKAGE_FILENAME" \ + "$ALPINE_GLIBC_I18N_PACKAGE_FILENAME" + +# Linter install ARG DART_VERSION='2.8.4' -ARG GLIBC_VERSION='2.34-r0' -RUN wget --tries=50 -q -O /etc/apk/keys/sgerrand.rsa.pub https://alpine-pkgs.sgerrand.com/sgerrand.rsa.pub \ - && wget --tries=5 -q https://github.com/sgerrand/alpine-pkg-glibc/releases/download/${GLIBC_VERSION}/glibc-${GLIBC_VERSION}.apk \ - && apk add --force-overwrite --no-cache glibc-${GLIBC_VERSION}.apk && rm glibc-${GLIBC_VERSION}.apk \ - && wget --tries=5 https://storage.googleapis.com/dart-archive/channels/stable/release/${DART_VERSION}/sdk/dartsdk-linux-x64-release.zip -O - -q | unzip -q - \ +RUN wget --tries=5 https://storage.googleapis.com/dart-archive/channels/stable/release/${DART_VERSION}/sdk/dartsdk-linux-x64-release.zip -O - -q | unzip -q - \ && chmod +x dart-sdk/bin/dart* \ && mv dart-sdk/bin/* /usr/bin/ && mv dart-sdk/lib/* /usr/lib/ && mv dart-sdk/include/* /usr/include/ \ && rm -r dart-sdk/ diff --git a/docs/descriptors/dockerfile.md b/docs/descriptors/dockerfile.md index fc068506838..68958f90e24 100644 --- a/docs/descriptors/dockerfile.md +++ b/docs/descriptors/dockerfile.md @@ -3,7 +3,7 @@ title: DOCKERFILE linters in MegaLinter description: hadolint is available to analyze DOCKERFILE files in MegaLinter --- - + # DOCKERFILE @@ -16,12 +16,15 @@ description: hadolint is available to analyze DOCKERFILE files in MegaLinter ## Linted files - File names: + - `Containerfile` - `Dockerfile` ## Configuration in MegaLinter -| Variable | Description | Default value | -|---------------------------------|-------------------------------|---------------| -| DOCKERFILE_FILTER_REGEX_INCLUDE | Custom regex including filter | | -| DOCKERFILE_FILTER_REGEX_EXCLUDE | Custom regex excluding filter | | +| Variable | Description | Default value | +|---------------------------------|-------------------------------------------------|---------------| +| DOCKERFILE_PRE_COMMANDS | List of bash commands to run before the linters | None | +| DOCKERFILE_POST_COMMANDS | List of bash commands to run after the linters | None | +| DOCKERFILE_FILTER_REGEX_INCLUDE | Custom regex including filter | | +| DOCKERFILE_FILTER_REGEX_EXCLUDE | Custom regex excluding filter | | diff --git a/docs/descriptors/dockerfile_hadolint.md b/docs/descriptors/dockerfile_hadolint.md index 7a2ee7f3081..6c765a4dbfb 100644 --- a/docs/descriptors/dockerfile_hadolint.md +++ b/docs/descriptors/dockerfile_hadolint.md @@ -3,7 +3,7 @@ title: hadolint configuration in MegaLinter description: How to use hadolint (configure, ignore files, ignore errors, help & version documentations) to analyze DOCKERFILE files --- - + # hadolint [![GitHub stars](https://img.shields.io/github/stars/hadolint/hadolint?cacheSeconds=3600)](https://github.com/hadolint/hadolint) ![sarif](https://shields.io/badge/-SARIF-orange) [![GitHub release (latest SemVer)](https://img.shields.io/github/v/release/hadolint/hadolint?sort=semver)](https://github.com/hadolint/hadolint/releases) [![GitHub last commit](https://img.shields.io/github/last-commit/hadolint/hadolint)](https://github.com/hadolint/hadolint/commits) [![GitHub commit activity](https://img.shields.io/github/commit-activity/y/hadolint/hadolint)](https://github.com/hadolint/hadolint/graphs/commit-activity/) [![GitHub contributors](https://img.shields.io/github/contributors/hadolint/hadolint)](https://github.com/hadolint/hadolint/graphs/contributors/) @@ -12,6 +12,7 @@ description: How to use hadolint (configure, ignore files, ignore errors, help & - Version in MegaLinter: **2.12.0** - Visit [Official Web Site](https://github.com/hadolint/hadolint#readme){target=_blank} - See [How to configure hadolint rules](https://github.com/hadolint/hadolint#configure){target=_blank} + - If custom `.hadolint.yaml` config file isn't found, [.hadolint.yaml](https://github.com/oxsecurity/megalinter/tree/main/TEMPLATES/.hadolint.yaml){target=_blank} will be used - See [How to disable hadolint rules in files](https://github.com/hadolint/hadolint#inline-ignores){target=_blank} - See [Index of problems detected by hadolint](https://github.com/hadolint/hadolint#rules){target=_blank} @@ -19,23 +20,26 @@ description: How to use hadolint (configure, ignore files, ignore errors, help & ## Configuration in MegaLinter -- Enable hadolint by adding `DOCKERFILE_HADOLINT` in [ENABLE_LINTERS variable](https://megalinter.io/6.22.2/configuration/#activation-and-deactivation) -- Disable hadolint by adding `DOCKERFILE_HADOLINT` in [DISABLE_LINTERS variable](https://megalinter.io/6.22.2/configuration/#activation-and-deactivation) +- Enable hadolint by adding `DOCKERFILE_HADOLINT` in [ENABLE_LINTERS variable](https://megalinter.io/7.13.0/configuration/#activation-and-deactivation) +- Disable hadolint by adding `DOCKERFILE_HADOLINT` in [DISABLE_LINTERS variable](https://megalinter.io/7.13.0/configuration/#activation-and-deactivation) | Variable | Description | Default value | |-------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------| | DOCKERFILE_HADOLINT_ARGUMENTS | User custom arguments to add in linter CLI call
Ex: `-s --foo "bar"` | | +| DOCKERFILE_HADOLINT_COMMAND_REMOVE_ARGUMENTS | User custom arguments to remove from command line before calling the linter
Ex: `-s --foo "bar"` | | | DOCKERFILE_HADOLINT_FILTER_REGEX_INCLUDE | Custom regex including filter
Ex: `(src\|lib)` | Include every file | | DOCKERFILE_HADOLINT_FILTER_REGEX_EXCLUDE | Custom regex excluding filter
Ex: `(test\|examples)` | Exclude no file | | DOCKERFILE_HADOLINT_CLI_LINT_MODE | Override default CLI lint mode
- `file`: Calls the linter for each file
- `list_of_files`: Call the linter with the list of files as argument
- `project`: Call the linter from the root of the project | `list_of_files` | | DOCKERFILE_HADOLINT_FILE_EXTENSIONS | Allowed file extensions. `"*"` matches any extension, `""` matches empty extension. Empty list excludes all files
Ex: `[".py", ""]` | Exclude every file | -| DOCKERFILE_HADOLINT_FILE_NAMES_REGEX | File name regex filters. Regular expression list for filtering files by their base names using regex full match. Empty list includes all files
Ex: `["Dockerfile(-.+)?", "Jenkinsfile"]` | `["Dockerfile"]` | +| DOCKERFILE_HADOLINT_FILE_NAMES_REGEX | File name regex filters. Regular expression list for filtering files by their base names using regex full match. Empty list includes all files
Ex: `["Dockerfile(-.+)?", "Jenkinsfile"]` | `["Containerfile", "Dockerfile"]` | | DOCKERFILE_HADOLINT_PRE_COMMANDS | List of bash commands to run before the linter | None | | DOCKERFILE_HADOLINT_POST_COMMANDS | List of bash commands to run after the linter | None | +| DOCKERFILE_HADOLINT_UNSECURED_ENV_VARIABLES | List of env variables explicitly not filtered before calling DOCKERFILE_HADOLINT and its pre/post commands | None | | DOCKERFILE_HADOLINT_CONFIG_FILE | hadolint configuration file name
Use `LINTER_DEFAULT` to let the linter find it | `.hadolint.yaml` | | DOCKERFILE_HADOLINT_RULES_PATH | Path where to find linter configuration file | Workspace folder, then MegaLinter default rules | | DOCKERFILE_HADOLINT_DISABLE_ERRORS | Run linter but consider errors as warnings | `false` | | DOCKERFILE_HADOLINT_DISABLE_ERRORS_IF_LESS_THAN | Maximum number of errors allowed | `0` | +| DOCKERFILE_HADOLINT_CLI_EXECUTABLE | Override CLI executable | `['hadolint']` | ## IDE Integration @@ -52,28 +56,30 @@ This linter is available in the following flavours | | Flavor | Description | Embedded linters | Info | |:--------------------------------------------------------------------------------------------------------------------------------------------------------:|:---------------------------------------------------------------------|:-----------------------------------------------------------------------|:----------------:|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:| -| | [all](https://megalinter.io/6.22.2/supported-linters/) | Default MegaLinter Flavor | 114 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter) | -| | [ci_light](https://megalinter.io/6.22.2/flavors/ci_light/) | Optimized for CI items (Dockerfile, Jenkinsfile, JSON/YAML schemas,XML | 20 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-ci_light/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-ci_light) | -| | [cupcake](https://megalinter.io/6.22.2/flavors/cupcake/) | MegaLinter for the most commonly used languages | 82 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-cupcake/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-cupcake) | -| | [documentation](https://megalinter.io/6.22.2/flavors/documentation/) | MegaLinter for documentation projects | 48 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-documentation/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-documentation) | -| | [dotnet](https://megalinter.io/6.22.2/flavors/dotnet/) | Optimized for C, C++, C# or VB based projects | 60 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-dotnet/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-dotnet) | -| | [go](https://megalinter.io/6.22.2/flavors/go/) | Optimized for GO based projects | 50 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-go/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-go) | -| | [java](https://megalinter.io/6.22.2/flavors/java/) | Optimized for JAVA based projects | 51 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-java/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-java) | -| | [javascript](https://megalinter.io/6.22.2/flavors/javascript/) | Optimized for JAVASCRIPT or TYPESCRIPT based projects | 57 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-javascript/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-javascript) | -| | [php](https://megalinter.io/6.22.2/flavors/php/) | Optimized for PHP based projects | 51 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-php/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-php) | -| | [python](https://megalinter.io/6.22.2/flavors/python/) | Optimized for PYTHON based projects | 59 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-python/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-python) | -| | [ruby](https://megalinter.io/6.22.2/flavors/ruby/) | Optimized for RUBY based projects | 48 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-ruby/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-ruby) | -| | [rust](https://megalinter.io/6.22.2/flavors/rust/) | Optimized for RUST based projects | 48 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-rust/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-rust) | -| | [salesforce](https://megalinter.io/6.22.2/flavors/salesforce/) | Optimized for Salesforce based projects | 51 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-salesforce/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-salesforce) | -| | [security](https://megalinter.io/6.22.2/flavors/security/) | Optimized for security | 22 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-security/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-security) | -| | [swift](https://megalinter.io/6.22.2/flavors/swift/) | Optimized for SWIFT based projects | 48 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-swift/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-swift) | -| | [terraform](https://megalinter.io/6.22.2/flavors/terraform/) | Optimized for TERRAFORM based projects | 53 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-terraform/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-terraform) | +| | [all](https://megalinter.io/7.13.0/supported-linters/) | Default MegaLinter Flavor | 125 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter) | +| | [c_cpp](https://megalinter.io/7.13.0/flavors/c_cpp/) | Optimized for pure C/C++ projects | 56 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-c_cpp/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-c_cpp) | +| | [ci_light](https://megalinter.io/7.13.0/flavors/ci_light/) | Optimized for CI items (Dockerfile, Jenkinsfile, JSON/YAML schemas,XML | 21 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-ci_light/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-ci_light) | +| | [cupcake](https://megalinter.io/7.13.0/flavors/cupcake/) | MegaLinter for the most commonly used languages | 84 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-cupcake/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-cupcake) | +| | [documentation](https://megalinter.io/7.13.0/flavors/documentation/) | MegaLinter for documentation projects | 51 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-documentation/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-documentation) | +| | [dotnet](https://megalinter.io/7.13.0/flavors/dotnet/) | Optimized for C, C++, C# or VB based projects | 63 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-dotnet/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-dotnet) | +| | [dotnetweb](https://megalinter.io/7.13.0/flavors/dotnetweb/) | Optimized for C, C++, C# or VB based projects with JS/TS | 72 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-dotnetweb/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-dotnetweb) | +| | [go](https://megalinter.io/7.13.0/flavors/go/) | Optimized for GO based projects | 53 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-go/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-go) | +| | [java](https://megalinter.io/7.13.0/flavors/java/) | Optimized for JAVA based projects | 54 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-java/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-java) | +| | [javascript](https://megalinter.io/7.13.0/flavors/javascript/) | Optimized for JAVASCRIPT or TYPESCRIPT based projects | 61 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-javascript/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-javascript) | +| | [php](https://megalinter.io/7.13.0/flavors/php/) | Optimized for PHP based projects | 56 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-php/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-php) | +| | [python](https://megalinter.io/7.13.0/flavors/python/) | Optimized for PYTHON based projects | 64 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-python/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-python) | +| | [ruby](https://megalinter.io/7.13.0/flavors/ruby/) | Optimized for RUBY based projects | 52 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-ruby/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-ruby) | +| | [rust](https://megalinter.io/7.13.0/flavors/rust/) | Optimized for RUST based projects | 52 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-rust/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-rust) | +| | [salesforce](https://megalinter.io/7.13.0/flavors/salesforce/) | Optimized for Salesforce based projects | 56 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-salesforce/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-salesforce) | +| | [security](https://megalinter.io/7.13.0/flavors/security/) | Optimized for security | 24 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-security/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-security) | +| | [swift](https://megalinter.io/7.13.0/flavors/swift/) | Optimized for SWIFT based projects | 52 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-swift/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-swift) | +| | [terraform](https://megalinter.io/7.13.0/flavors/terraform/) | Optimized for TERRAFORM based projects | 56 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-terraform/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-terraform) | ## Behind the scenes ### How are identified applicable files -- File names (regex): `Dockerfile` +- File names (regex): `Containerfile`, `Dockerfile` @@ -154,7 +160,9 @@ Available options: - Dockerfile commands : ```dockerfile -FROM hadolint/hadolint:v2.12.0-alpine as hadolint +# renovate: datasource=docker depName=hadolint/hadolint +ARG DOCKERFILE_HADOLINT_VERSION=v2.12.0-alpine +FROM hadolint/hadolint:${DOCKERFILE_HADOLINT_VERSION} as hadolint COPY --link --from=hadolint /bin/hadolint /usr/bin/hadolint ``` diff --git a/docs/descriptors/editorconfig.md b/docs/descriptors/editorconfig.md index 9ec2029f994..78bb411feb7 100644 --- a/docs/descriptors/editorconfig.md +++ b/docs/descriptors/editorconfig.md @@ -3,7 +3,7 @@ title: EDITORCONFIG linters in MegaLinter description: editorconfig-checker is available to analyze EDITORCONFIG files in MegaLinter --- - + # EDITORCONFIG @@ -21,8 +21,10 @@ description: editorconfig-checker is available to analyze EDITORCONFIG files in ## Configuration in MegaLinter -| Variable | Description | Default value | -|-----------------------------------|-------------------------------|---------------| -| EDITORCONFIG_FILTER_REGEX_INCLUDE | Custom regex including filter | | -| EDITORCONFIG_FILTER_REGEX_EXCLUDE | Custom regex excluding filter | | +| Variable | Description | Default value | +|-----------------------------------|-------------------------------------------------|---------------| +| EDITORCONFIG_PRE_COMMANDS | List of bash commands to run before the linters | None | +| EDITORCONFIG_POST_COMMANDS | List of bash commands to run after the linters | None | +| EDITORCONFIG_FILTER_REGEX_INCLUDE | Custom regex including filter | | +| EDITORCONFIG_FILTER_REGEX_EXCLUDE | Custom regex excluding filter | | diff --git a/docs/descriptors/editorconfig_editorconfig_checker.md b/docs/descriptors/editorconfig_editorconfig_checker.md index 97864eb1f3f..8763260cfe7 100644 --- a/docs/descriptors/editorconfig_editorconfig_checker.md +++ b/docs/descriptors/editorconfig_editorconfig_checker.md @@ -3,7 +3,7 @@ title: editorconfig-checker configuration in MegaLinter description: How to use editorconfig-checker (configure, ignore files, ignore errors, help & version documentations) to analyze EDITORCONFIG files --- - +
@@ -15,7 +15,7 @@ description: How to use editorconfig-checker (configure, ignore files, ignore er ## editorconfig-checker documentation -- Version in MegaLinter: **2.7.0** +- Version in MegaLinter: **3.0.3** - Visit [Official Web Site](https://editorconfig-checker.github.io/){target=_blank} - See [How to configure editorconfig-checker rules](https://github.com/editorconfig-checker/editorconfig-checker#configuration){target=_blank} - See [How to disable editorconfig-checker rules in files](https://github.com/editorconfig-checker/editorconfig-checker#excluding){target=_blank} @@ -24,12 +24,13 @@ description: How to use editorconfig-checker (configure, ignore files, ignore er ## Configuration in MegaLinter -- Enable editorconfig-checker by adding `EDITORCONFIG_EDITORCONFIG_CHECKER` in [ENABLE_LINTERS variable](https://megalinter.io/6.22.2/configuration/#activation-and-deactivation) -- Disable editorconfig-checker by adding `EDITORCONFIG_EDITORCONFIG_CHECKER` in [DISABLE_LINTERS variable](https://megalinter.io/6.22.2/configuration/#activation-and-deactivation) +- Enable editorconfig-checker by adding `EDITORCONFIG_EDITORCONFIG_CHECKER` in [ENABLE_LINTERS variable](https://megalinter.io/7.13.0/configuration/#activation-and-deactivation) +- Disable editorconfig-checker by adding `EDITORCONFIG_EDITORCONFIG_CHECKER` in [DISABLE_LINTERS variable](https://megalinter.io/7.13.0/configuration/#activation-and-deactivation) | Variable | Description | Default value | |---------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------| | EDITORCONFIG_EDITORCONFIG_CHECKER_ARGUMENTS | User custom arguments to add in linter CLI call
Ex: `-s --foo "bar"` | | +| EDITORCONFIG_EDITORCONFIG_CHECKER_COMMAND_REMOVE_ARGUMENTS | User custom arguments to remove from command line before calling the linter
Ex: `-s --foo "bar"` | | | EDITORCONFIG_EDITORCONFIG_CHECKER_FILTER_REGEX_INCLUDE | Custom regex including filter
Ex: `(src\|lib)` | Include every file | | EDITORCONFIG_EDITORCONFIG_CHECKER_FILTER_REGEX_EXCLUDE | Custom regex excluding filter
Ex: `(test\|examples)` | Exclude no file | | EDITORCONFIG_EDITORCONFIG_CHECKER_CLI_LINT_MODE | Override default CLI lint mode
- `file`: Calls the linter for each file
- `list_of_files`: Call the linter with the list of files as argument
- `project`: Call the linter from the root of the project | `list_of_files` | @@ -37,31 +38,35 @@ description: How to use editorconfig-checker (configure, ignore files, ignore er | EDITORCONFIG_EDITORCONFIG_CHECKER_FILE_NAMES_REGEX | File name regex filters. Regular expression list for filtering files by their base names using regex full match. Empty list includes all files
Ex: `["Dockerfile(-.+)?", "Jenkinsfile"]` | Include every file | | EDITORCONFIG_EDITORCONFIG_CHECKER_PRE_COMMANDS | List of bash commands to run before the linter | None | | EDITORCONFIG_EDITORCONFIG_CHECKER_POST_COMMANDS | List of bash commands to run after the linter | None | +| EDITORCONFIG_EDITORCONFIG_CHECKER_UNSECURED_ENV_VARIABLES | List of env variables explicitly not filtered before calling EDITORCONFIG_EDITORCONFIG_CHECKER and its pre/post commands | None | | EDITORCONFIG_EDITORCONFIG_CHECKER_CONFIG_FILE | editorconfig-checker configuration file name
Use `LINTER_DEFAULT` to let the linter find it | `.ecrc` | | EDITORCONFIG_EDITORCONFIG_CHECKER_RULES_PATH | Path where to find linter configuration file | Workspace folder, then MegaLinter default rules | | EDITORCONFIG_EDITORCONFIG_CHECKER_DISABLE_ERRORS | Run linter but consider errors as warnings | `false` | | EDITORCONFIG_EDITORCONFIG_CHECKER_DISABLE_ERRORS_IF_LESS_THAN | Maximum number of errors allowed | `0` | +| EDITORCONFIG_EDITORCONFIG_CHECKER_CLI_EXECUTABLE | Override CLI executable | `['editorconfig-checker']` | ## MegaLinter Flavours This linter is available in the following flavours -| | Flavor | Description | Embedded linters | Info | -|:--------------------------------------------------------------------------------------------------------------------------------------------------------:|:---------------------------------------------------------------------|:------------------------------------------------------|:----------------:|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:| -|
| [all](https://megalinter.io/6.22.2/supported-linters/) | Default MegaLinter Flavor | 114 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter) | -| | [cupcake](https://megalinter.io/6.22.2/flavors/cupcake/) | MegaLinter for the most commonly used languages | 82 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-cupcake/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-cupcake) | -| | [documentation](https://megalinter.io/6.22.2/flavors/documentation/) | MegaLinter for documentation projects | 48 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-documentation/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-documentation) | -| | [dotnet](https://megalinter.io/6.22.2/flavors/dotnet/) | Optimized for C, C++, C# or VB based projects | 60 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-dotnet/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-dotnet) | -| | [go](https://megalinter.io/6.22.2/flavors/go/) | Optimized for GO based projects | 50 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-go/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-go) | -| | [java](https://megalinter.io/6.22.2/flavors/java/) | Optimized for JAVA based projects | 51 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-java/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-java) | -| | [javascript](https://megalinter.io/6.22.2/flavors/javascript/) | Optimized for JAVASCRIPT or TYPESCRIPT based projects | 57 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-javascript/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-javascript) | -| | [php](https://megalinter.io/6.22.2/flavors/php/) | Optimized for PHP based projects | 51 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-php/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-php) | -| | [python](https://megalinter.io/6.22.2/flavors/python/) | Optimized for PYTHON based projects | 59 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-python/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-python) | -| | [ruby](https://megalinter.io/6.22.2/flavors/ruby/) | Optimized for RUBY based projects | 48 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-ruby/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-ruby) | -| | [rust](https://megalinter.io/6.22.2/flavors/rust/) | Optimized for RUST based projects | 48 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-rust/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-rust) | -| | [salesforce](https://megalinter.io/6.22.2/flavors/salesforce/) | Optimized for Salesforce based projects | 51 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-salesforce/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-salesforce) | -| | [swift](https://megalinter.io/6.22.2/flavors/swift/) | Optimized for SWIFT based projects | 48 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-swift/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-swift) | -| | [terraform](https://megalinter.io/6.22.2/flavors/terraform/) | Optimized for TERRAFORM based projects | 53 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-terraform/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-terraform) | +| | Flavor | Description | Embedded linters | Info | +|:--------------------------------------------------------------------------------------------------------------------------------------------------------:|:---------------------------------------------------------------------|:---------------------------------------------------------|:----------------:|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:| +| | [all](https://megalinter.io/7.13.0/supported-linters/) | Default MegaLinter Flavor | 125 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter) | +| | [c_cpp](https://megalinter.io/7.13.0/flavors/c_cpp/) | Optimized for pure C/C++ projects | 56 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-c_cpp/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-c_cpp) | +| | [cupcake](https://megalinter.io/7.13.0/flavors/cupcake/) | MegaLinter for the most commonly used languages | 84 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-cupcake/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-cupcake) | +| | [documentation](https://megalinter.io/7.13.0/flavors/documentation/) | MegaLinter for documentation projects | 51 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-documentation/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-documentation) | +| | [dotnet](https://megalinter.io/7.13.0/flavors/dotnet/) | Optimized for C, C++, C# or VB based projects | 63 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-dotnet/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-dotnet) | +| | [dotnetweb](https://megalinter.io/7.13.0/flavors/dotnetweb/) | Optimized for C, C++, C# or VB based projects with JS/TS | 72 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-dotnetweb/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-dotnetweb) | +| | [go](https://megalinter.io/7.13.0/flavors/go/) | Optimized for GO based projects | 53 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-go/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-go) | +| | [java](https://megalinter.io/7.13.0/flavors/java/) | Optimized for JAVA based projects | 54 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-java/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-java) | +| | [javascript](https://megalinter.io/7.13.0/flavors/javascript/) | Optimized for JAVASCRIPT or TYPESCRIPT based projects | 61 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-javascript/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-javascript) | +| | [php](https://megalinter.io/7.13.0/flavors/php/) | Optimized for PHP based projects | 56 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-php/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-php) | +| | [python](https://megalinter.io/7.13.0/flavors/python/) | Optimized for PYTHON based projects | 64 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-python/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-python) | +| | [ruby](https://megalinter.io/7.13.0/flavors/ruby/) | Optimized for RUBY based projects | 52 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-ruby/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-ruby) | +| | [rust](https://megalinter.io/7.13.0/flavors/rust/) | Optimized for RUST based projects | 52 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-rust/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-rust) | +| | [salesforce](https://megalinter.io/7.13.0/flavors/salesforce/) | Optimized for Salesforce based projects | 56 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-salesforce/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-salesforce) | +| | [swift](https://megalinter.io/7.13.0/flavors/swift/) | Optimized for SWIFT based projects | 52 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-swift/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-swift) | +| | [terraform](https://megalinter.io/7.13.0/flavors/terraform/) | Optimized for TERRAFORM based projects | 56 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-terraform/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-terraform) | ## Behind the scenes @@ -107,6 +112,10 @@ USAGE: show which files would be checked -exclude string a regex which files should be excluded from checking - needs to be a valid regular expression + -f string + specify the output format: default, gcc (default "default") + -format string + specify the output format: default, gcc (default "default") -h print the help -help print the help @@ -127,7 +136,9 @@ USAGE: - Dockerfile commands : ```dockerfile -FROM mstruebing/editorconfig-checker:2.7.0 as editorconfig-checker +# renovate: datasource=docker depName=mstruebing/editorconfig-checker +ARG EDITORCONFIG_EDITORCONFIG_CHECKER_VERSION=v3.0.3 +FROM mstruebing/editorconfig-checker:${EDITORCONFIG_EDITORCONFIG_CHECKER_VERSION} as editorconfig-checker COPY --link --from=editorconfig-checker /usr/bin/ec /usr/bin/editorconfig-checker ``` diff --git a/docs/descriptors/env.md b/docs/descriptors/env.md index bce49e486be..70618f58b34 100644 --- a/docs/descriptors/env.md +++ b/docs/descriptors/env.md @@ -3,7 +3,7 @@ title: ENV linters in MegaLinter description: dotenv-linter is available to analyze ENV files in MegaLinter --- - + # ENV @@ -20,8 +20,10 @@ description: dotenv-linter is available to analyze ENV files in MegaLinter ## Configuration in MegaLinter -| Variable | Description | Default value | -|--------------------------|-------------------------------|---------------| -| ENV_FILTER_REGEX_INCLUDE | Custom regex including filter | | -| ENV_FILTER_REGEX_EXCLUDE | Custom regex excluding filter | | +| Variable | Description | Default value | +|--------------------------|-------------------------------------------------|---------------| +| ENV_PRE_COMMANDS | List of bash commands to run before the linters | None | +| ENV_POST_COMMANDS | List of bash commands to run after the linters | None | +| ENV_FILTER_REGEX_INCLUDE | Custom regex including filter | | +| ENV_FILTER_REGEX_EXCLUDE | Custom regex excluding filter | | diff --git a/docs/descriptors/env_dotenv_linter.md b/docs/descriptors/env_dotenv_linter.md index 53ec49894fc..175bb0f1041 100644 --- a/docs/descriptors/env_dotenv_linter.md +++ b/docs/descriptors/env_dotenv_linter.md @@ -3,7 +3,7 @@ title: dotenv-linter configuration in MegaLinter description: How to use dotenv-linter (configure, ignore files, ignore errors, help & version documentations) to analyze ENV files --- - +
@@ -23,23 +23,26 @@ description: How to use dotenv-linter (configure, ignore files, ignore errors, h ## Configuration in MegaLinter -- Enable dotenv-linter by adding `ENV_DOTENV_LINTER` in [ENABLE_LINTERS variable](https://megalinter.io/6.22.2/configuration/#activation-and-deactivation) -- Disable dotenv-linter by adding `ENV_DOTENV_LINTER` in [DISABLE_LINTERS variable](https://megalinter.io/6.22.2/configuration/#activation-and-deactivation) - -- Enable **auto-fixes** by adding `ENV_DOTENV_LINTER` in [APPLY_FIXES variable](https://megalinter.io/6.22.2/configuration/#apply-fixes) - -| Variable | Description | Default value | -|-----------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------| -| ENV_DOTENV_LINTER_ARGUMENTS | User custom arguments to add in linter CLI call
Ex: `-s --foo "bar"` | | -| ENV_DOTENV_LINTER_FILTER_REGEX_INCLUDE | Custom regex including filter
Ex: `(src\|lib)` | Include every file | -| ENV_DOTENV_LINTER_FILTER_REGEX_EXCLUDE | Custom regex excluding filter
Ex: `(test\|examples)` | Exclude no file | -| ENV_DOTENV_LINTER_CLI_LINT_MODE | Override default CLI lint mode
- `file`: Calls the linter for each file
- `project`: Call the linter from the root of the project | `file` | -| ENV_DOTENV_LINTER_FILE_EXTENSIONS | Allowed file extensions. `"*"` matches any extension, `""` matches empty extension. Empty list excludes all files
Ex: `[".py", ""]` | `[".env"]` | -| ENV_DOTENV_LINTER_FILE_NAMES_REGEX | File name regex filters. Regular expression list for filtering files by their base names using regex full match. Empty list includes all files
Ex: `["Dockerfile(-.+)?", "Jenkinsfile"]` | Include every file | -| ENV_DOTENV_LINTER_PRE_COMMANDS | List of bash commands to run before the linter | None | -| ENV_DOTENV_LINTER_POST_COMMANDS | List of bash commands to run after the linter | None | -| ENV_DOTENV_LINTER_DISABLE_ERRORS | Run linter but consider errors as warnings | `false` | -| ENV_DOTENV_LINTER_DISABLE_ERRORS_IF_LESS_THAN | Maximum number of errors allowed | `0` | +- Enable dotenv-linter by adding `ENV_DOTENV_LINTER` in [ENABLE_LINTERS variable](https://megalinter.io/7.13.0/configuration/#activation-and-deactivation) +- Disable dotenv-linter by adding `ENV_DOTENV_LINTER` in [DISABLE_LINTERS variable](https://megalinter.io/7.13.0/configuration/#activation-and-deactivation) + +- Enable **autofixes** by adding `ENV_DOTENV_LINTER` in [APPLY_FIXES variable](https://megalinter.io/7.13.0/configuration/#apply-fixes) + +| Variable | Description | Default value | +|-----------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------| +| ENV_DOTENV_LINTER_ARGUMENTS | User custom arguments to add in linter CLI call
Ex: `-s --foo "bar"` | | +| ENV_DOTENV_LINTER_COMMAND_REMOVE_ARGUMENTS | User custom arguments to remove from command line before calling the linter
Ex: `-s --foo "bar"` | | +| ENV_DOTENV_LINTER_FILTER_REGEX_INCLUDE | Custom regex including filter
Ex: `(src\|lib)` | Include every file | +| ENV_DOTENV_LINTER_FILTER_REGEX_EXCLUDE | Custom regex excluding filter
Ex: `(test\|examples)` | Exclude no file | +| ENV_DOTENV_LINTER_CLI_LINT_MODE | Override default CLI lint mode
- `file`: Calls the linter for each file
- `project`: Call the linter from the root of the project | `file` | +| ENV_DOTENV_LINTER_FILE_EXTENSIONS | Allowed file extensions. `"*"` matches any extension, `""` matches empty extension. Empty list excludes all files
Ex: `[".py", ""]` | `[".env"]` | +| ENV_DOTENV_LINTER_FILE_NAMES_REGEX | File name regex filters. Regular expression list for filtering files by their base names using regex full match. Empty list includes all files
Ex: `["Dockerfile(-.+)?", "Jenkinsfile"]` | Include every file | +| ENV_DOTENV_LINTER_PRE_COMMANDS | List of bash commands to run before the linter | None | +| ENV_DOTENV_LINTER_POST_COMMANDS | List of bash commands to run after the linter | None | +| ENV_DOTENV_LINTER_UNSECURED_ENV_VARIABLES | List of env variables explicitly not filtered before calling ENV_DOTENV_LINTER and its pre/post commands | None | +| ENV_DOTENV_LINTER_DISABLE_ERRORS | Run linter but consider errors as warnings | `false` | +| ENV_DOTENV_LINTER_DISABLE_ERRORS_IF_LESS_THAN | Maximum number of errors allowed | `0` | +| ENV_DOTENV_LINTER_CLI_EXECUTABLE | Override CLI executable | `['dotenv-linter']` | ## MegaLinter Flavours @@ -47,21 +50,23 @@ This linter is available in the following flavours | | Flavor | Description | Embedded linters | Info | |:--------------------------------------------------------------------------------------------------------------------------------------------------------:|:---------------------------------------------------------------------|:-----------------------------------------------------------------------|:----------------:|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:| -|
| [all](https://megalinter.io/6.22.2/supported-linters/) | Default MegaLinter Flavor | 114 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter) | -| | [ci_light](https://megalinter.io/6.22.2/flavors/ci_light/) | Optimized for CI items (Dockerfile, Jenkinsfile, JSON/YAML schemas,XML | 20 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-ci_light/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-ci_light) | -| | [cupcake](https://megalinter.io/6.22.2/flavors/cupcake/) | MegaLinter for the most commonly used languages | 82 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-cupcake/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-cupcake) | -| | [documentation](https://megalinter.io/6.22.2/flavors/documentation/) | MegaLinter for documentation projects | 48 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-documentation/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-documentation) | -| | [dotnet](https://megalinter.io/6.22.2/flavors/dotnet/) | Optimized for C, C++, C# or VB based projects | 60 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-dotnet/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-dotnet) | -| | [go](https://megalinter.io/6.22.2/flavors/go/) | Optimized for GO based projects | 50 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-go/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-go) | -| | [java](https://megalinter.io/6.22.2/flavors/java/) | Optimized for JAVA based projects | 51 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-java/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-java) | -| | [javascript](https://megalinter.io/6.22.2/flavors/javascript/) | Optimized for JAVASCRIPT or TYPESCRIPT based projects | 57 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-javascript/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-javascript) | -| | [php](https://megalinter.io/6.22.2/flavors/php/) | Optimized for PHP based projects | 51 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-php/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-php) | -| | [python](https://megalinter.io/6.22.2/flavors/python/) | Optimized for PYTHON based projects | 59 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-python/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-python) | -| | [ruby](https://megalinter.io/6.22.2/flavors/ruby/) | Optimized for RUBY based projects | 48 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-ruby/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-ruby) | -| | [rust](https://megalinter.io/6.22.2/flavors/rust/) | Optimized for RUST based projects | 48 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-rust/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-rust) | -| | [salesforce](https://megalinter.io/6.22.2/flavors/salesforce/) | Optimized for Salesforce based projects | 51 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-salesforce/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-salesforce) | -| | [swift](https://megalinter.io/6.22.2/flavors/swift/) | Optimized for SWIFT based projects | 48 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-swift/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-swift) | -| | [terraform](https://megalinter.io/6.22.2/flavors/terraform/) | Optimized for TERRAFORM based projects | 53 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-terraform/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-terraform) | +| | [all](https://megalinter.io/7.13.0/supported-linters/) | Default MegaLinter Flavor | 125 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter) | +| | [c_cpp](https://megalinter.io/7.13.0/flavors/c_cpp/) | Optimized for pure C/C++ projects | 56 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-c_cpp/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-c_cpp) | +| | [ci_light](https://megalinter.io/7.13.0/flavors/ci_light/) | Optimized for CI items (Dockerfile, Jenkinsfile, JSON/YAML schemas,XML | 21 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-ci_light/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-ci_light) | +| | [cupcake](https://megalinter.io/7.13.0/flavors/cupcake/) | MegaLinter for the most commonly used languages | 84 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-cupcake/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-cupcake) | +| | [documentation](https://megalinter.io/7.13.0/flavors/documentation/) | MegaLinter for documentation projects | 51 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-documentation/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-documentation) | +| | [dotnet](https://megalinter.io/7.13.0/flavors/dotnet/) | Optimized for C, C++, C# or VB based projects | 63 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-dotnet/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-dotnet) | +| | [dotnetweb](https://megalinter.io/7.13.0/flavors/dotnetweb/) | Optimized for C, C++, C# or VB based projects with JS/TS | 72 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-dotnetweb/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-dotnetweb) | +| | [go](https://megalinter.io/7.13.0/flavors/go/) | Optimized for GO based projects | 53 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-go/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-go) | +| | [java](https://megalinter.io/7.13.0/flavors/java/) | Optimized for JAVA based projects | 54 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-java/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-java) | +| | [javascript](https://megalinter.io/7.13.0/flavors/javascript/) | Optimized for JAVASCRIPT or TYPESCRIPT based projects | 61 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-javascript/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-javascript) | +| | [php](https://megalinter.io/7.13.0/flavors/php/) | Optimized for PHP based projects | 56 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-php/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-php) | +| | [python](https://megalinter.io/7.13.0/flavors/python/) | Optimized for PYTHON based projects | 64 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-python/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-python) | +| | [ruby](https://megalinter.io/7.13.0/flavors/ruby/) | Optimized for RUBY based projects | 52 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-ruby/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-ruby) | +| | [rust](https://megalinter.io/7.13.0/flavors/rust/) | Optimized for RUST based projects | 52 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-rust/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-rust) | +| | [salesforce](https://megalinter.io/7.13.0/flavors/salesforce/) | Optimized for Salesforce based projects | 56 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-salesforce/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-salesforce) | +| | [swift](https://megalinter.io/7.13.0/flavors/swift/) | Optimized for SWIFT based projects | 52 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-swift/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-swift) | +| | [terraform](https://megalinter.io/7.13.0/flavors/terraform/) | Optimized for TERRAFORM based projects | 56 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-terraform/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-terraform) | ## Behind the scenes diff --git a/docs/descriptors/gherkin.md b/docs/descriptors/gherkin.md index c7057ee59aa..ac4f43116bb 100644 --- a/docs/descriptors/gherkin.md +++ b/docs/descriptors/gherkin.md @@ -3,7 +3,7 @@ title: GHERKIN linters in MegaLinter description: gherkin-lint is available to analyze GHERKIN files in MegaLinter --- - + # GHERKIN @@ -20,8 +20,10 @@ description: gherkin-lint is available to analyze GHERKIN files in MegaLinter ## Configuration in MegaLinter -| Variable | Description | Default value | -|------------------------------|-------------------------------|---------------| -| GHERKIN_FILTER_REGEX_INCLUDE | Custom regex including filter | | -| GHERKIN_FILTER_REGEX_EXCLUDE | Custom regex excluding filter | | +| Variable | Description | Default value | +|------------------------------|-------------------------------------------------|---------------| +| GHERKIN_PRE_COMMANDS | List of bash commands to run before the linters | None | +| GHERKIN_POST_COMMANDS | List of bash commands to run after the linters | None | +| GHERKIN_FILTER_REGEX_INCLUDE | Custom regex including filter | | +| GHERKIN_FILTER_REGEX_EXCLUDE | Custom regex excluding filter | | diff --git a/docs/descriptors/gherkin_gherkin_lint.md b/docs/descriptors/gherkin_gherkin_lint.md index 9b490958de7..e53a0713670 100644 --- a/docs/descriptors/gherkin_gherkin_lint.md +++ b/docs/descriptors/gherkin_gherkin_lint.md @@ -3,7 +3,7 @@ title: gherkin-lint configuration in MegaLinter description: How to use gherkin-lint (configure, ignore files, ignore errors, help & version documentations) to analyze GHERKIN files --- - + # gherkin-lint [![GitHub stars](https://img.shields.io/github/stars/vsiakka/gherkin-lint?cacheSeconds=3600)](https://github.com/vsiakka/gherkin-lint) [![GitHub release (latest SemVer)](https://img.shields.io/github/v/release/vsiakka/gherkin-lint?sort=semver)](https://github.com/vsiakka/gherkin-lint/releases) [![GitHub last commit](https://img.shields.io/github/last-commit/vsiakka/gherkin-lint)](https://github.com/vsiakka/gherkin-lint/commits) [![GitHub commit activity](https://img.shields.io/github/commit-activity/y/vsiakka/gherkin-lint)](https://github.com/vsiakka/gherkin-lint/graphs/commit-activity/) [![GitHub contributors](https://img.shields.io/github/contributors/vsiakka/gherkin-lint)](https://github.com/vsiakka/gherkin-lint/graphs/contributors/) @@ -11,19 +11,20 @@ description: How to use gherkin-lint (configure, ignore files, ignore errors, he - Visit [Official Web Site](https://github.com/vsiakka/gherkin-lint#readme){target=_blank} - See [How to configure gherkin-lint rules](https://github.com/vsiakka/gherkin-lint#rule-configuration){target=_blank} - - If custom `.gherkin-lintrc` config file is not found, [.gherkin-lintrc](https://github.com/oxsecurity/megalinter/tree/main/TEMPLATES/.gherkin-lintrc){target=_blank} will be used + - If custom `.gherkin-lintrc` config file isn't found, [.gherkin-lintrc](https://github.com/oxsecurity/megalinter/tree/main/TEMPLATES/.gherkin-lintrc){target=_blank} will be used - See [Index of problems detected by gherkin-lint](https://github.com/vsiakka/gherkin-lint#available-rules){target=_blank} [![gherkin-lint - GitHub](https://gh-card.dev/repos/vsiakka/gherkin-lint.svg?fullname=)](https://github.com/vsiakka/gherkin-lint){target=_blank} ## Configuration in MegaLinter -- Enable gherkin-lint by adding `GHERKIN_GHERKIN_LINT` in [ENABLE_LINTERS variable](https://megalinter.io/6.22.2/configuration/#activation-and-deactivation) -- Disable gherkin-lint by adding `GHERKIN_GHERKIN_LINT` in [DISABLE_LINTERS variable](https://megalinter.io/6.22.2/configuration/#activation-and-deactivation) +- Enable gherkin-lint by adding `GHERKIN_GHERKIN_LINT` in [ENABLE_LINTERS variable](https://megalinter.io/7.13.0/configuration/#activation-and-deactivation) +- Disable gherkin-lint by adding `GHERKIN_GHERKIN_LINT` in [DISABLE_LINTERS variable](https://megalinter.io/7.13.0/configuration/#activation-and-deactivation) | Variable | Description | Default value | |--------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------| | GHERKIN_GHERKIN_LINT_ARGUMENTS | User custom arguments to add in linter CLI call
Ex: `-s --foo "bar"` | | +| GHERKIN_GHERKIN_LINT_COMMAND_REMOVE_ARGUMENTS | User custom arguments to remove from command line before calling the linter
Ex: `-s --foo "bar"` | | | GHERKIN_GHERKIN_LINT_FILTER_REGEX_INCLUDE | Custom regex including filter
Ex: `(src\|lib)` | Include every file | | GHERKIN_GHERKIN_LINT_FILTER_REGEX_EXCLUDE | Custom regex excluding filter
Ex: `(test\|examples)` | Exclude no file | | GHERKIN_GHERKIN_LINT_CLI_LINT_MODE | Override default CLI lint mode
- `file`: Calls the linter for each file
- `project`: Call the linter from the root of the project | `file` | @@ -31,19 +32,23 @@ description: How to use gherkin-lint (configure, ignore files, ignore errors, he | GHERKIN_GHERKIN_LINT_FILE_NAMES_REGEX | File name regex filters. Regular expression list for filtering files by their base names using regex full match. Empty list includes all files
Ex: `["Dockerfile(-.+)?", "Jenkinsfile"]` | Include every file | | GHERKIN_GHERKIN_LINT_PRE_COMMANDS | List of bash commands to run before the linter | None | | GHERKIN_GHERKIN_LINT_POST_COMMANDS | List of bash commands to run after the linter | None | +| GHERKIN_GHERKIN_LINT_UNSECURED_ENV_VARIABLES | List of env variables explicitly not filtered before calling GHERKIN_GHERKIN_LINT and its pre/post commands | None | | GHERKIN_GHERKIN_LINT_CONFIG_FILE | gherkin-lint configuration file name
Use `LINTER_DEFAULT` to let the linter find it | `.gherkin-lintrc` | | GHERKIN_GHERKIN_LINT_RULES_PATH | Path where to find linter configuration file | Workspace folder, then MegaLinter default rules | | GHERKIN_GHERKIN_LINT_DISABLE_ERRORS | Run linter but consider errors as warnings | `false` | | GHERKIN_GHERKIN_LINT_DISABLE_ERRORS_IF_LESS_THAN | Maximum number of errors allowed | `0` | +| GHERKIN_GHERKIN_LINT_CLI_EXECUTABLE | Override CLI executable | `['gherkin-lint']` | ## MegaLinter Flavours This linter is available in the following flavours -| | Flavor | Description | Embedded linters | Info | -|:--------------------------------------------------------------------------------------------------------------------------------------------------------:|:-------------------------------------------------------|:----------------------------------------------|:----------------:|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:| -| | [all](https://megalinter.io/6.22.2/supported-linters/) | Default MegaLinter Flavor | 114 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter) | -| | [dotnet](https://megalinter.io/6.22.2/flavors/dotnet/) | Optimized for C, C++, C# or VB based projects | 60 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-dotnet/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-dotnet) | +| | Flavor | Description | Embedded linters | Info | +|:--------------------------------------------------------------------------------------------------------------------------------------------------------:|:-------------------------------------------------------------|:---------------------------------------------------------|:----------------:|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:| +| | [all](https://megalinter.io/7.13.0/supported-linters/) | Default MegaLinter Flavor | 125 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter) | +| | [c_cpp](https://megalinter.io/7.13.0/flavors/c_cpp/) | Optimized for pure C/C++ projects | 56 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-c_cpp/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-c_cpp) | +| | [dotnet](https://megalinter.io/7.13.0/flavors/dotnet/) | Optimized for C, C++, C# or VB based projects | 63 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-dotnet/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-dotnet) | +| | [dotnetweb](https://megalinter.io/7.13.0/flavors/dotnetweb/) | Optimized for C, C++, C# or VB based projects with JS/TS | 72 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-dotnetweb/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-dotnetweb) | ## Behind the scenes diff --git a/docs/descriptors/go.md b/docs/descriptors/go.md index 04f58cfa89b..da0741e10f3 100644 --- a/docs/descriptors/go.md +++ b/docs/descriptors/go.md @@ -3,16 +3,16 @@ title: GO linters in MegaLinter description: golangci-lint, revive are available to analyze GO files in MegaLinter --- - + # GO ## Linters -| Linter | Additional | -|----------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| [**golangci-lint**](go_golangci_lint.md)
[_GO_GOLANGCI_LINT_](go_golangci_lint.md) | [![GitHub stars](https://img.shields.io/github/stars/golangci/golangci-lint?cacheSeconds=3600)](https://github.com/golangci/golangci-lint) | -| [**revive**](go_revive.md)
[_GO_REVIVE_](go_revive.md) | [![GitHub stars](https://img.shields.io/github/stars/mgechev/revive?cacheSeconds=3600)](https://github.com/mgechev/revive) ![sarif](https://shields.io/badge/-SARIF-orange) | +| Linter | Additional | +|----------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| [**golangci-lint**](go_golangci_lint.md)
[_GO_GOLANGCI_LINT_](go_golangci_lint.md) | [![GitHub stars](https://img.shields.io/github/stars/golangci/golangci-lint?cacheSeconds=3600)](https://github.com/golangci/golangci-lint) ![autofix](https://shields.io/badge/-autofix-green) | +| [**revive**](go_revive.md)
[_GO_REVIVE_](go_revive.md) | [![GitHub stars](https://img.shields.io/github/stars/mgechev/revive?cacheSeconds=3600)](https://github.com/mgechev/revive) ![sarif](https://shields.io/badge/-SARIF-orange) | ## Linted files @@ -21,8 +21,10 @@ description: golangci-lint, revive are available to analyze GO files in MegaLint ## Configuration in MegaLinter -| Variable | Description | Default value | -|-------------------------|-------------------------------|---------------| -| GO_FILTER_REGEX_INCLUDE | Custom regex including filter | | -| GO_FILTER_REGEX_EXCLUDE | Custom regex excluding filter | | +| Variable | Description | Default value | +|-------------------------|-------------------------------------------------|---------------| +| GO_PRE_COMMANDS | List of bash commands to run before the linters | None | +| GO_POST_COMMANDS | List of bash commands to run after the linters | None | +| GO_FILTER_REGEX_INCLUDE | Custom regex including filter | | +| GO_FILTER_REGEX_EXCLUDE | Custom regex excluding filter | | diff --git a/docs/descriptors/go_golangci_lint.md b/docs/descriptors/go_golangci_lint.md index 516a56d7b2a..162668dce14 100644 --- a/docs/descriptors/go_golangci_lint.md +++ b/docs/descriptors/go_golangci_lint.md @@ -3,7 +3,7 @@ title: golangci-lint configuration in MegaLinter description: How to use golangci-lint (configure, ignore files, ignore errors, help & version documentations) to analyze GO files --- - + -[![GitHub stars](https://img.shields.io/github/stars/golangci/golangci-lint?cacheSeconds=3600)](https://github.com/golangci/golangci-lint) [![GitHub release (latest SemVer)](https://img.shields.io/github/v/release/golangci/golangci-lint?sort=semver)](https://github.com/golangci/golangci-lint/releases) [![GitHub last commit](https://img.shields.io/github/last-commit/golangci/golangci-lint)](https://github.com/golangci/golangci-lint/commits) [![GitHub commit activity](https://img.shields.io/github/commit-activity/y/golangci/golangci-lint)](https://github.com/golangci/golangci-lint/graphs/commit-activity/) [![GitHub contributors](https://img.shields.io/github/contributors/golangci/golangci-lint)](https://github.com/golangci/golangci-lint/graphs/contributors/) +[![GitHub stars](https://img.shields.io/github/stars/golangci/golangci-lint?cacheSeconds=3600)](https://github.com/golangci/golangci-lint) ![autofix](https://shields.io/badge/-autofix-green) [![GitHub release (latest SemVer)](https://img.shields.io/github/v/release/golangci/golangci-lint?sort=semver)](https://github.com/golangci/golangci-lint/releases) [![GitHub last commit](https://img.shields.io/github/last-commit/golangci/golangci-lint)](https://github.com/golangci/golangci-lint/commits) [![GitHub commit activity](https://img.shields.io/github/commit-activity/y/golangci/golangci-lint)](https://github.com/golangci/golangci-lint/graphs/commit-activity/) [![GitHub contributors](https://img.shields.io/github/contributors/golangci/golangci-lint)](https://github.com/golangci/golangci-lint/graphs/contributors/) ## golangci-lint documentation -- Version in MegaLinter: **1.52.2** +- Version in MegaLinter: **1.59.1** - Visit [Official Web Site](https://golangci-lint.run/){target=_blank} - See [How to configure golangci-lint rules](https://golangci-lint.run/usage/configuration/#config-file){target=_blank} - - If custom `.golangci.yml` config file is not found, [.golangci.yml](https://github.com/oxsecurity/megalinter/tree/main/TEMPLATES/.golangci.yml){target=_blank} will be used + - If custom `.golangci.yml` config file isn't found, [.golangci.yml](https://github.com/oxsecurity/megalinter/tree/main/TEMPLATES/.golangci.yml){target=_blank} will be used - See [How to disable golangci-lint rules in files](https://golangci-lint.run/usage/false-positives/#nolint){target=_blank} - See [Index of problems detected by golangci-lint](https://golangci-lint.run/usage/linters/){target=_blank} @@ -26,23 +26,25 @@ description: How to use golangci-lint (configure, ignore files, ignore errors, h ## Configuration in MegaLinter -- Enable golangci-lint by adding `GO_GOLANGCI_LINT` in [ENABLE_LINTERS variable](https://megalinter.io/6.22.2/configuration/#activation-and-deactivation) -- Disable golangci-lint by adding `GO_GOLANGCI_LINT` in [DISABLE_LINTERS variable](https://megalinter.io/6.22.2/configuration/#activation-and-deactivation) - -| Variable | Description | Default value | -|----------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------| -| GO_GOLANGCI_LINT_ARGUMENTS | User custom arguments to add in linter CLI call
Ex: `-s --foo "bar"` | | -| GO_GOLANGCI_LINT_FILTER_REGEX_INCLUDE | Custom regex including filter
Ex: `(src\|lib)` | Include every file | -| GO_GOLANGCI_LINT_FILTER_REGEX_EXCLUDE | Custom regex excluding filter
Ex: `(test\|examples)` | Exclude no file | -| GO_GOLANGCI_LINT_CLI_LINT_MODE | Override default CLI lint mode
- `file`: Calls the linter for each file
- `list_of_files`: Call the linter with the list of files as argument
- `project`: Call the linter from the root of the project | `list_of_files` | -| GO_GOLANGCI_LINT_FILE_EXTENSIONS | Allowed file extensions. `"*"` matches any extension, `""` matches empty extension. Empty list excludes all files
Ex: `[".py", ""]` | `[".go"]` | -| GO_GOLANGCI_LINT_FILE_NAMES_REGEX | File name regex filters. Regular expression list for filtering files by their base names using regex full match. Empty list includes all files
Ex: `["Dockerfile(-.+)?", "Jenkinsfile"]` | Include every file | -| GO_GOLANGCI_LINT_PRE_COMMANDS | List of bash commands to run before the linter | None | -| GO_GOLANGCI_LINT_POST_COMMANDS | List of bash commands to run after the linter | None | -| GO_GOLANGCI_LINT_CONFIG_FILE | golangci-lint configuration file name
Use `LINTER_DEFAULT` to let the linter find it | `.golangci.yml` | -| GO_GOLANGCI_LINT_RULES_PATH | Path where to find linter configuration file | Workspace folder, then MegaLinter default rules | -| GO_GOLANGCI_LINT_DISABLE_ERRORS | Run linter but consider errors as warnings | `false` | -| GO_GOLANGCI_LINT_DISABLE_ERRORS_IF_LESS_THAN | Maximum number of errors allowed | `0` | +- Enable golangci-lint by adding `GO_GOLANGCI_LINT` in [ENABLE_LINTERS variable](https://megalinter.io/7.13.0/configuration/#activation-and-deactivation) +- Disable golangci-lint by adding `GO_GOLANGCI_LINT` in [DISABLE_LINTERS variable](https://megalinter.io/7.13.0/configuration/#activation-and-deactivation) + +- Enable **autofixes** by adding `GO_GOLANGCI_LINT` in [APPLY_FIXES variable](https://megalinter.io/7.13.0/configuration/#apply-fixes) + +| Variable | Description | Default value | +|----------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------| +| GO_GOLANGCI_LINT_ARGUMENTS | User custom arguments to add in linter CLI call
Ex: `-s --foo "bar"` | | +| GO_GOLANGCI_LINT_COMMAND_REMOVE_ARGUMENTS | User custom arguments to remove from command line before calling the linter
Ex: `-s --foo "bar"` | | +| GO_GOLANGCI_LINT_FILE_EXTENSIONS | Allowed file extensions. `"*"` matches any extension, `""` matches empty extension. Empty list excludes all files
Ex: `[".py", ""]` | `[".go"]` | +| GO_GOLANGCI_LINT_FILE_NAMES_REGEX | File name regex filters. Regular expression list for filtering files by their base names using regex full match. Empty list includes all files
Ex: `["Dockerfile(-.+)?", "Jenkinsfile"]` | Include every file | +| GO_GOLANGCI_LINT_PRE_COMMANDS | List of bash commands to run before the linter | None | +| GO_GOLANGCI_LINT_POST_COMMANDS | List of bash commands to run after the linter | None | +| GO_GOLANGCI_LINT_UNSECURED_ENV_VARIABLES | List of env variables explicitly not filtered before calling GO_GOLANGCI_LINT and its pre/post commands | None | +| GO_GOLANGCI_LINT_CONFIG_FILE | golangci-lint configuration file name
Use `LINTER_DEFAULT` to let the linter find it | `.golangci.yml` | +| GO_GOLANGCI_LINT_RULES_PATH | Path where to find linter configuration file | Workspace folder, then MegaLinter default rules | +| GO_GOLANGCI_LINT_DISABLE_ERRORS | Run linter but consider errors as warnings | `false` | +| GO_GOLANGCI_LINT_DISABLE_ERRORS_IF_LESS_THAN | Maximum number of errors allowed | `0` | +| GO_GOLANGCI_LINT_CLI_EXECUTABLE | Override CLI executable | `['golangci-lint']` | ## IDE Integration @@ -64,9 +66,9 @@ This linter is available in the following flavours | | Flavor | Description | Embedded linters | Info | |:--------------------------------------------------------------------------------------------------------------------------------------------------------:|:---------------------------------------------------------|:------------------------------------------------|:----------------:|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:| -| | [all](https://megalinter.io/6.22.2/supported-linters/) | Default MegaLinter Flavor | 114 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter) | -| | [cupcake](https://megalinter.io/6.22.2/flavors/cupcake/) | MegaLinter for the most commonly used languages | 82 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-cupcake/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-cupcake) | -| | [go](https://megalinter.io/6.22.2/flavors/go/) | Optimized for GO based projects | 50 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-go/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-go) | +| | [all](https://megalinter.io/7.13.0/supported-linters/) | Default MegaLinter Flavor | 125 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter) | +| | [cupcake](https://megalinter.io/7.13.0/flavors/cupcake/) | MegaLinter for the most commonly used languages | 84 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-cupcake/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-cupcake) | +| | [go](https://megalinter.io/7.13.0/flavors/go/) | Optimized for GO based projects | 53 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-go/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-go) | ## Behind the scenes @@ -78,7 +80,10 @@ This linter is available in the following flavours ### How the linting is performed -- golangci-lint is called once with the list of files as arguments (`list_of_files` CLI lint mode) +golangci-lint is called once on the whole project directory (`project` CLI lint mode) + +- filtering can not be done using MegaLinter configuration variables,it must be done using golangci-lint configuration or ignore file (if existing) +- `VALIDATE_ALL_CODEBASE: false` doesn't make golangci-lint analyze only updated files ### Example calls @@ -103,21 +108,18 @@ Usage: Available Commands: cache Cache control and information completion Generate the autocompletion script for the specified shell - config Config + config Config file information + custom Build a version of golangci-lint with custom linters help Help linters List current linters configuration run Run the linters version Version Flags: - --color string Use color when printing; can be 'always', 'auto', or 'never' (default "auto") - -j, --concurrency int Concurrency (default NumCPU) (default 2) - --cpu-profile-path string Path to CPU profile output file - -h, --help help for golangci-lint - --mem-profile-path string Path to memory profile output file - --trace-path string Path to trace output file - -v, --verbose verbose output - --version Print version + --color string Use color when printing; can be 'always', 'auto', or 'never' (default "auto") + -h, --help Help for a command + -v, --verbose Verbose output + --version Print version Use "golangci-lint [command] --help" for more information about a command. ``` diff --git a/docs/descriptors/go_revive.md b/docs/descriptors/go_revive.md index 5ad30cd61b2..655f3e7d3a3 100644 --- a/docs/descriptors/go_revive.md +++ b/docs/descriptors/go_revive.md @@ -3,13 +3,13 @@ title: revive configuration in MegaLinter description: How to use revive (configure, ignore files, ignore errors, help & version documentations) to analyze GO files --- - + # revive [![GitHub stars](https://img.shields.io/github/stars/mgechev/revive?cacheSeconds=3600)](https://github.com/mgechev/revive) ![sarif](https://shields.io/badge/-SARIF-orange) [![GitHub release (latest SemVer)](https://img.shields.io/github/v/release/mgechev/revive?sort=semver)](https://github.com/mgechev/revive/releases) [![GitHub last commit](https://img.shields.io/github/last-commit/mgechev/revive)](https://github.com/mgechev/revive/commits) [![GitHub commit activity](https://img.shields.io/github/commit-activity/y/mgechev/revive)](https://github.com/mgechev/revive/graphs/commit-activity/) [![GitHub contributors](https://img.shields.io/github/contributors/mgechev/revive)](https://github.com/mgechev/revive/graphs/contributors/) ## revive documentation -- Version in MegaLinter: **1.3.1** +- Version in MegaLinter: **1.3.7** - Visit [Official Web Site](https://revive.run/){target=_blank} - See [How to configure revive rules](https://revive.run/docs#custom-configuration){target=_blank} - See [Index of problems detected by revive](https://revive.run/r){target=_blank} @@ -18,12 +18,13 @@ description: How to use revive (configure, ignore files, ignore errors, help & v ## Configuration in MegaLinter -- Enable revive by adding `GO_REVIVE` in [ENABLE_LINTERS variable](https://megalinter.io/6.22.2/configuration/#activation-and-deactivation) -- Disable revive by adding `GO_REVIVE` in [DISABLE_LINTERS variable](https://megalinter.io/6.22.2/configuration/#activation-and-deactivation) +- Enable revive by adding `GO_REVIVE` in [ENABLE_LINTERS variable](https://megalinter.io/7.13.0/configuration/#activation-and-deactivation) +- Disable revive by adding `GO_REVIVE` in [DISABLE_LINTERS variable](https://megalinter.io/7.13.0/configuration/#activation-and-deactivation) | Variable | Description | Default value | |---------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------| | GO_REVIVE_ARGUMENTS | User custom arguments to add in linter CLI call
Ex: `-s --foo "bar"` | | +| GO_REVIVE_COMMAND_REMOVE_ARGUMENTS | User custom arguments to remove from command line before calling the linter
Ex: `-s --foo "bar"` | | | GO_REVIVE_FILTER_REGEX_INCLUDE | Custom regex including filter
Ex: `(src\|lib)` | Include every file | | GO_REVIVE_FILTER_REGEX_EXCLUDE | Custom regex excluding filter
Ex: `(test\|examples)` | Exclude no file | | GO_REVIVE_CLI_LINT_MODE | Override default CLI lint mode
- `file`: Calls the linter for each file
- `list_of_files`: Call the linter with the list of files as argument
- `project`: Call the linter from the root of the project | `list_of_files` | @@ -31,10 +32,12 @@ description: How to use revive (configure, ignore files, ignore errors, help & v | GO_REVIVE_FILE_NAMES_REGEX | File name regex filters. Regular expression list for filtering files by their base names using regex full match. Empty list includes all files
Ex: `["Dockerfile(-.+)?", "Jenkinsfile"]` | Include every file | | GO_REVIVE_PRE_COMMANDS | List of bash commands to run before the linter | None | | GO_REVIVE_POST_COMMANDS | List of bash commands to run after the linter | None | +| GO_REVIVE_UNSECURED_ENV_VARIABLES | List of env variables explicitly not filtered before calling GO_REVIVE and its pre/post commands | None | | GO_REVIVE_CONFIG_FILE | revive configuration file name
Use `LINTER_DEFAULT` to let the linter find it | `revive.toml` | | GO_REVIVE_RULES_PATH | Path where to find linter configuration file | Workspace folder, then MegaLinter default rules | | GO_REVIVE_DISABLE_ERRORS | Run linter but consider errors as warnings | `false` | | GO_REVIVE_DISABLE_ERRORS_IF_LESS_THAN | Maximum number of errors allowed | `0` | +| GO_REVIVE_CLI_EXECUTABLE | Override CLI executable | `['revive']` | ## IDE Integration @@ -52,9 +55,9 @@ This linter is available in the following flavours | | Flavor | Description | Embedded linters | Info | |:--------------------------------------------------------------------------------------------------------------------------------------------------------:|:---------------------------------------------------------|:------------------------------------------------|:----------------:|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:| -| | [all](https://megalinter.io/6.22.2/supported-linters/) | Default MegaLinter Flavor | 114 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter) | -| | [cupcake](https://megalinter.io/6.22.2/flavors/cupcake/) | MegaLinter for the most commonly used languages | 82 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-cupcake/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-cupcake) | -| | [go](https://megalinter.io/6.22.2/flavors/go/) | Optimized for GO based projects | 50 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-go/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-go) | +| | [all](https://megalinter.io/7.13.0/supported-linters/) | Default MegaLinter Flavor | 125 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter) | +| | [cupcake](https://megalinter.io/7.13.0/flavors/cupcake/) | MegaLinter for the most commonly used languages | 84 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-cupcake/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-cupcake) | +| | [go](https://megalinter.io/7.13.0/flavors/go/) | Optimized for GO based projects | 53 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-go/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-go) | ## Behind the scenes @@ -93,7 +96,7 @@ Example: Usage of revive: -config string - path to the configuration TOML file, defaults to $HOME/revive.toml, if present (i.e. -config myconf.toml) + path to the configuration TOML file, defaults to $XDG_CONFIG_HOME/revive.toml or $HOME/revive.toml, if present (i.e. -config myconf.toml) -exclude value list of globs which specify files to be excluded (i.e. -exclude foo/...) -formatter string @@ -111,11 +114,10 @@ Usage of revive: - Dockerfile commands : ```dockerfile FROM golang:1-alpine as revive -## The golang image used as a builder is a temporary workaround +## The golang image used as a builder is a temporary workaround (https://github.com/mgechev/revive/issues/787) ## for the released revive binaries not returning version numbers (devel). ## The install command should then be what is commented in the go.megalinter-descriptor.yml RUN GOBIN=/usr/bin go install github.com/mgechev/revive@latest - COPY --link --from=revive /usr/bin/revive /usr/bin/revive ``` diff --git a/docs/descriptors/graphql.md b/docs/descriptors/graphql.md index b417322f4b4..6c44e349cbd 100644 --- a/docs/descriptors/graphql.md +++ b/docs/descriptors/graphql.md @@ -3,7 +3,7 @@ title: GRAPHQL linters in MegaLinter description: graphql-schema-linter is available to analyze GRAPHQL files in MegaLinter --- - + # GRAPHQL @@ -20,8 +20,10 @@ description: graphql-schema-linter is available to analyze GRAPHQL files in Mega ## Configuration in MegaLinter -| Variable | Description | Default value | -|------------------------------|-------------------------------|---------------| -| GRAPHQL_FILTER_REGEX_INCLUDE | Custom regex including filter | | -| GRAPHQL_FILTER_REGEX_EXCLUDE | Custom regex excluding filter | | +| Variable | Description | Default value | +|------------------------------|-------------------------------------------------|---------------| +| GRAPHQL_PRE_COMMANDS | List of bash commands to run before the linters | None | +| GRAPHQL_POST_COMMANDS | List of bash commands to run after the linters | None | +| GRAPHQL_FILTER_REGEX_INCLUDE | Custom regex including filter | | +| GRAPHQL_FILTER_REGEX_EXCLUDE | Custom regex excluding filter | | diff --git a/docs/descriptors/graphql_graphql_schema_linter.md b/docs/descriptors/graphql_graphql_schema_linter.md index fb554b3f24f..7a5daeb236f 100644 --- a/docs/descriptors/graphql_graphql_schema_linter.md +++ b/docs/descriptors/graphql_graphql_schema_linter.md @@ -3,7 +3,7 @@ title: graphql-schema-linter configuration in MegaLinter description: How to use graphql-schema-linter (configure, ignore files, ignore errors, help & version documentations) to analyze GRAPHQL files --- - + # graphql-schema-linter [![GitHub stars](https://img.shields.io/github/stars/cjoudrey/graphql-schema-linter?cacheSeconds=3600)](https://github.com/cjoudrey/graphql-schema-linter) [![GitHub release (latest SemVer)](https://img.shields.io/github/v/release/cjoudrey/graphql-schema-linter?sort=semver)](https://github.com/cjoudrey/graphql-schema-linter/releases) [![GitHub last commit](https://img.shields.io/github/last-commit/cjoudrey/graphql-schema-linter)](https://github.com/cjoudrey/graphql-schema-linter/commits) [![GitHub commit activity](https://img.shields.io/github/commit-activity/y/cjoudrey/graphql-schema-linter)](https://github.com/cjoudrey/graphql-schema-linter/graphs/commit-activity/) [![GitHub contributors](https://img.shields.io/github/contributors/cjoudrey/graphql-schema-linter)](https://github.com/cjoudrey/graphql-schema-linter/graphs/contributors/) @@ -19,12 +19,13 @@ description: How to use graphql-schema-linter (configure, ignore files, ignore e ## Configuration in MegaLinter -- Enable graphql-schema-linter by adding `GRAPHQL_GRAPHQL_SCHEMA_LINTER` in [ENABLE_LINTERS variable](https://megalinter.io/6.22.2/configuration/#activation-and-deactivation) -- Disable graphql-schema-linter by adding `GRAPHQL_GRAPHQL_SCHEMA_LINTER` in [DISABLE_LINTERS variable](https://megalinter.io/6.22.2/configuration/#activation-and-deactivation) +- Enable graphql-schema-linter by adding `GRAPHQL_GRAPHQL_SCHEMA_LINTER` in [ENABLE_LINTERS variable](https://megalinter.io/7.13.0/configuration/#activation-and-deactivation) +- Disable graphql-schema-linter by adding `GRAPHQL_GRAPHQL_SCHEMA_LINTER` in [DISABLE_LINTERS variable](https://megalinter.io/7.13.0/configuration/#activation-and-deactivation) | Variable | Description | Default value | |-----------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------| | GRAPHQL_GRAPHQL_SCHEMA_LINTER_ARGUMENTS | User custom arguments to add in linter CLI call
Ex: `-s --foo "bar"` | | +| GRAPHQL_GRAPHQL_SCHEMA_LINTER_COMMAND_REMOVE_ARGUMENTS | User custom arguments to remove from command line before calling the linter
Ex: `-s --foo "bar"` | | | GRAPHQL_GRAPHQL_SCHEMA_LINTER_FILTER_REGEX_INCLUDE | Custom regex including filter
Ex: `(src\|lib)` | Include every file | | GRAPHQL_GRAPHQL_SCHEMA_LINTER_FILTER_REGEX_EXCLUDE | Custom regex excluding filter
Ex: `(test\|examples)` | Exclude no file | | GRAPHQL_GRAPHQL_SCHEMA_LINTER_CLI_LINT_MODE | Override default CLI lint mode
- `file`: Calls the linter for each file
- `project`: Call the linter from the root of the project | `file` | @@ -32,31 +33,35 @@ description: How to use graphql-schema-linter (configure, ignore files, ignore e | GRAPHQL_GRAPHQL_SCHEMA_LINTER_FILE_NAMES_REGEX | File name regex filters. Regular expression list for filtering files by their base names using regex full match. Empty list includes all files
Ex: `["Dockerfile(-.+)?", "Jenkinsfile"]` | Include every file | | GRAPHQL_GRAPHQL_SCHEMA_LINTER_PRE_COMMANDS | List of bash commands to run before the linter | None | | GRAPHQL_GRAPHQL_SCHEMA_LINTER_POST_COMMANDS | List of bash commands to run after the linter | None | +| GRAPHQL_GRAPHQL_SCHEMA_LINTER_UNSECURED_ENV_VARIABLES | List of env variables explicitly not filtered before calling GRAPHQL_GRAPHQL_SCHEMA_LINTER and its pre/post commands | None | | GRAPHQL_GRAPHQL_SCHEMA_LINTER_CONFIG_FILE | graphql-schema-linter configuration file name
Use `LINTER_DEFAULT` to let the linter find it | `.graphql-schema-linterrc` | | GRAPHQL_GRAPHQL_SCHEMA_LINTER_RULES_PATH | Path where to find linter configuration file | Workspace folder, then MegaLinter default rules | | GRAPHQL_GRAPHQL_SCHEMA_LINTER_DISABLE_ERRORS | Run linter but consider errors as warnings | `false` | | GRAPHQL_GRAPHQL_SCHEMA_LINTER_DISABLE_ERRORS_IF_LESS_THAN | Maximum number of errors allowed | `0` | +| GRAPHQL_GRAPHQL_SCHEMA_LINTER_CLI_EXECUTABLE | Override CLI executable | `['graphql-schema-linter']` | ## MegaLinter Flavours This linter is available in the following flavours -| | Flavor | Description | Embedded linters | Info | -|:--------------------------------------------------------------------------------------------------------------------------------------------------------:|:---------------------------------------------------------------------|:------------------------------------------------------|:----------------:|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:| -| | [all](https://megalinter.io/6.22.2/supported-linters/) | Default MegaLinter Flavor | 114 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter) | -| | [cupcake](https://megalinter.io/6.22.2/flavors/cupcake/) | MegaLinter for the most commonly used languages | 82 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-cupcake/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-cupcake) | -| | [documentation](https://megalinter.io/6.22.2/flavors/documentation/) | MegaLinter for documentation projects | 48 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-documentation/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-documentation) | -| | [dotnet](https://megalinter.io/6.22.2/flavors/dotnet/) | Optimized for C, C++, C# or VB based projects | 60 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-dotnet/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-dotnet) | -| | [go](https://megalinter.io/6.22.2/flavors/go/) | Optimized for GO based projects | 50 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-go/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-go) | -| | [java](https://megalinter.io/6.22.2/flavors/java/) | Optimized for JAVA based projects | 51 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-java/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-java) | -| | [javascript](https://megalinter.io/6.22.2/flavors/javascript/) | Optimized for JAVASCRIPT or TYPESCRIPT based projects | 57 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-javascript/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-javascript) | -| | [php](https://megalinter.io/6.22.2/flavors/php/) | Optimized for PHP based projects | 51 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-php/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-php) | -| | [python](https://megalinter.io/6.22.2/flavors/python/) | Optimized for PYTHON based projects | 59 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-python/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-python) | -| | [ruby](https://megalinter.io/6.22.2/flavors/ruby/) | Optimized for RUBY based projects | 48 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-ruby/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-ruby) | -| | [rust](https://megalinter.io/6.22.2/flavors/rust/) | Optimized for RUST based projects | 48 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-rust/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-rust) | -| | [salesforce](https://megalinter.io/6.22.2/flavors/salesforce/) | Optimized for Salesforce based projects | 51 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-salesforce/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-salesforce) | -| | [swift](https://megalinter.io/6.22.2/flavors/swift/) | Optimized for SWIFT based projects | 48 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-swift/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-swift) | -| | [terraform](https://megalinter.io/6.22.2/flavors/terraform/) | Optimized for TERRAFORM based projects | 53 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-terraform/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-terraform) | +| | Flavor | Description | Embedded linters | Info | +|:--------------------------------------------------------------------------------------------------------------------------------------------------------:|:---------------------------------------------------------------------|:---------------------------------------------------------|:----------------:|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:| +| | [all](https://megalinter.io/7.13.0/supported-linters/) | Default MegaLinter Flavor | 125 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter) | +| | [c_cpp](https://megalinter.io/7.13.0/flavors/c_cpp/) | Optimized for pure C/C++ projects | 56 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-c_cpp/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-c_cpp) | +| | [cupcake](https://megalinter.io/7.13.0/flavors/cupcake/) | MegaLinter for the most commonly used languages | 84 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-cupcake/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-cupcake) | +| | [documentation](https://megalinter.io/7.13.0/flavors/documentation/) | MegaLinter for documentation projects | 51 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-documentation/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-documentation) | +| | [dotnet](https://megalinter.io/7.13.0/flavors/dotnet/) | Optimized for C, C++, C# or VB based projects | 63 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-dotnet/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-dotnet) | +| | [dotnetweb](https://megalinter.io/7.13.0/flavors/dotnetweb/) | Optimized for C, C++, C# or VB based projects with JS/TS | 72 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-dotnetweb/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-dotnetweb) | +| | [go](https://megalinter.io/7.13.0/flavors/go/) | Optimized for GO based projects | 53 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-go/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-go) | +| | [java](https://megalinter.io/7.13.0/flavors/java/) | Optimized for JAVA based projects | 54 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-java/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-java) | +| | [javascript](https://megalinter.io/7.13.0/flavors/javascript/) | Optimized for JAVASCRIPT or TYPESCRIPT based projects | 61 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-javascript/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-javascript) | +| | [php](https://megalinter.io/7.13.0/flavors/php/) | Optimized for PHP based projects | 56 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-php/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-php) | +| | [python](https://megalinter.io/7.13.0/flavors/python/) | Optimized for PYTHON based projects | 64 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-python/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-python) | +| | [ruby](https://megalinter.io/7.13.0/flavors/ruby/) | Optimized for RUBY based projects | 52 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-ruby/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-ruby) | +| | [rust](https://megalinter.io/7.13.0/flavors/rust/) | Optimized for RUST based projects | 52 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-rust/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-rust) | +| | [salesforce](https://megalinter.io/7.13.0/flavors/salesforce/) | Optimized for Salesforce based projects | 56 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-salesforce/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-salesforce) | +| | [swift](https://megalinter.io/7.13.0/flavors/swift/) | Optimized for SWIFT based projects | 52 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-swift/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-swift) | +| | [terraform](https://megalinter.io/7.13.0/flavors/terraform/) | Optimized for TERRAFORM based projects | 56 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-terraform/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-terraform) | ## Behind the scenes diff --git a/docs/descriptors/groovy.md b/docs/descriptors/groovy.md index 4d344331c6a..45e7f9b7949 100644 --- a/docs/descriptors/groovy.md +++ b/docs/descriptors/groovy.md @@ -3,7 +3,7 @@ title: GROOVY linters in MegaLinter description: npm-groovy-lint is available to analyze GROOVY files in MegaLinter --- - + # GROOVY @@ -26,8 +26,10 @@ description: npm-groovy-lint is available to analyze GROOVY files in MegaLinter ## Configuration in MegaLinter -| Variable | Description | Default value | -|-----------------------------|-------------------------------|---------------| -| GROOVY_FILTER_REGEX_INCLUDE | Custom regex including filter | | -| GROOVY_FILTER_REGEX_EXCLUDE | Custom regex excluding filter | | +| Variable | Description | Default value | +|-----------------------------|-------------------------------------------------|---------------| +| GROOVY_PRE_COMMANDS | List of bash commands to run before the linters | None | +| GROOVY_POST_COMMANDS | List of bash commands to run after the linters | None | +| GROOVY_FILTER_REGEX_INCLUDE | Custom regex including filter | | +| GROOVY_FILTER_REGEX_EXCLUDE | Custom regex excluding filter | | diff --git a/docs/descriptors/groovy_npm_groovy_lint.md b/docs/descriptors/groovy_npm_groovy_lint.md index 8a6ca32d68e..8c2498e83a8 100644 --- a/docs/descriptors/groovy_npm_groovy_lint.md +++ b/docs/descriptors/groovy_npm_groovy_lint.md @@ -3,16 +3,16 @@ title: npm-groovy-lint configuration in MegaLinter description: How to use npm-groovy-lint (configure, ignore files, ignore errors, help & version documentations) to analyze GROOVY files --- - + # npm-groovy-lint [![GitHub stars](https://img.shields.io/github/stars/nvuillam/npm-groovy-lint?cacheSeconds=3600)](https://github.com/nvuillam/npm-groovy-lint) ![autofix](https://shields.io/badge/-autofix-green) ![sarif](https://shields.io/badge/-SARIF-orange) [![GitHub release (latest SemVer)](https://img.shields.io/github/v/release/nvuillam/npm-groovy-lint?sort=semver)](https://github.com/nvuillam/npm-groovy-lint/releases) [![GitHub last commit](https://img.shields.io/github/last-commit/nvuillam/npm-groovy-lint)](https://github.com/nvuillam/npm-groovy-lint/commits) [![GitHub commit activity](https://img.shields.io/github/commit-activity/y/nvuillam/npm-groovy-lint)](https://github.com/nvuillam/npm-groovy-lint/graphs/commit-activity/) [![GitHub contributors](https://img.shields.io/github/contributors/nvuillam/npm-groovy-lint)](https://github.com/nvuillam/npm-groovy-lint/graphs/contributors/) ## npm-groovy-lint documentation -- Version in MegaLinter: **11.1.1** +- Version in MegaLinter: **14.6.0** - Visit [Official Web Site](https://nvuillam.github.io/npm-groovy-lint/){target=_blank} - See [How to configure npm-groovy-lint rules](https://github.com/nvuillam/npm-groovy-lint#configuration){target=_blank} - - If custom `.groovylintrc.json` config file is not found, [.groovylintrc.json](https://github.com/oxsecurity/megalinter/tree/main/TEMPLATES/.groovylintrc.json){target=_blank} will be used + - If custom `.groovylintrc.json` config file isn't found, [.groovylintrc.json](https://github.com/oxsecurity/megalinter/tree/main/TEMPLATES/.groovylintrc.json){target=_blank} will be used - See [How to disable npm-groovy-lint rules in files](https://github.com/nvuillam/npm-groovy-lint#disabling-rules-in-source){target=_blank} - See [Index of problems detected by npm-groovy-lint](https://codenarc.org/codenarc-rule-index.html){target=_blank} @@ -20,14 +20,15 @@ description: How to use npm-groovy-lint (configure, ignore files, ignore errors, ## Configuration in MegaLinter -- Enable npm-groovy-lint by adding `GROOVY_NPM_GROOVY_LINT` in [ENABLE_LINTERS variable](https://megalinter.io/6.22.2/configuration/#activation-and-deactivation) -- Disable npm-groovy-lint by adding `GROOVY_NPM_GROOVY_LINT` in [DISABLE_LINTERS variable](https://megalinter.io/6.22.2/configuration/#activation-and-deactivation) +- Enable npm-groovy-lint by adding `GROOVY_NPM_GROOVY_LINT` in [ENABLE_LINTERS variable](https://megalinter.io/7.13.0/configuration/#activation-and-deactivation) +- Disable npm-groovy-lint by adding `GROOVY_NPM_GROOVY_LINT` in [DISABLE_LINTERS variable](https://megalinter.io/7.13.0/configuration/#activation-and-deactivation) -- Enable **auto-fixes** by adding `GROOVY_NPM_GROOVY_LINT` in [APPLY_FIXES variable](https://megalinter.io/6.22.2/configuration/#apply-fixes) +- Enable **autofixes** by adding `GROOVY_NPM_GROOVY_LINT` in [APPLY_FIXES variable](https://megalinter.io/7.13.0/configuration/#apply-fixes) | Variable | Description | Default value | |----------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------| | GROOVY_NPM_GROOVY_LINT_ARGUMENTS | User custom arguments to add in linter CLI call
Ex: `-s --foo "bar"` | | +| GROOVY_NPM_GROOVY_LINT_COMMAND_REMOVE_ARGUMENTS | User custom arguments to remove from command line before calling the linter
Ex: `-s --foo "bar"` | | | GROOVY_NPM_GROOVY_LINT_FILTER_REGEX_INCLUDE | Custom regex including filter
Ex: `(src\|lib)` | Include every file | | GROOVY_NPM_GROOVY_LINT_FILTER_REGEX_EXCLUDE | Custom regex excluding filter
Ex: `(test\|examples)` | Exclude no file | | GROOVY_NPM_GROOVY_LINT_CLI_LINT_MODE | Override default CLI lint mode
- `file`: Calls the linter for each file
- `list_of_files`: Call the linter with the list of files as argument
- `project`: Call the linter from the root of the project | `list_of_files` | @@ -35,10 +36,12 @@ description: How to use npm-groovy-lint (configure, ignore files, ignore errors, | GROOVY_NPM_GROOVY_LINT_FILE_NAMES_REGEX | File name regex filters. Regular expression list for filtering files by their base names using regex full match. Empty list includes all files
Ex: `["Dockerfile(-.+)?", "Jenkinsfile"]` | `["Jenkinsfile"]` | | GROOVY_NPM_GROOVY_LINT_PRE_COMMANDS | List of bash commands to run before the linter | None | | GROOVY_NPM_GROOVY_LINT_POST_COMMANDS | List of bash commands to run after the linter | None | +| GROOVY_NPM_GROOVY_LINT_UNSECURED_ENV_VARIABLES | List of env variables explicitly not filtered before calling GROOVY_NPM_GROOVY_LINT and its pre/post commands | None | | GROOVY_NPM_GROOVY_LINT_CONFIG_FILE | npm-groovy-lint configuration file name
Use `LINTER_DEFAULT` to let the linter find it | `.groovylintrc.json` | | GROOVY_NPM_GROOVY_LINT_RULES_PATH | Path where to find linter configuration file | Workspace folder, then MegaLinter default rules | | GROOVY_NPM_GROOVY_LINT_DISABLE_ERRORS | Run linter but consider errors as warnings | `false` | | GROOVY_NPM_GROOVY_LINT_DISABLE_ERRORS_IF_LESS_THAN | Maximum number of errors allowed | `0` | +| GROOVY_NPM_GROOVY_LINT_CLI_EXECUTABLE | Override CLI executable | `['npm-groovy-lint']` | ## IDE Integration @@ -54,21 +57,23 @@ This linter is available in the following flavours | | Flavor | Description | Embedded linters | Info | |:--------------------------------------------------------------------------------------------------------------------------------------------------------:|:---------------------------------------------------------------------|:-----------------------------------------------------------------------|:----------------:|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:| -| | [all](https://megalinter.io/6.22.2/supported-linters/) | Default MegaLinter Flavor | 114 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter) | -| | [ci_light](https://megalinter.io/6.22.2/flavors/ci_light/) | Optimized for CI items (Dockerfile, Jenkinsfile, JSON/YAML schemas,XML | 20 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-ci_light/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-ci_light) | -| | [cupcake](https://megalinter.io/6.22.2/flavors/cupcake/) | MegaLinter for the most commonly used languages | 82 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-cupcake/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-cupcake) | -| | [documentation](https://megalinter.io/6.22.2/flavors/documentation/) | MegaLinter for documentation projects | 48 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-documentation/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-documentation) | -| | [dotnet](https://megalinter.io/6.22.2/flavors/dotnet/) | Optimized for C, C++, C# or VB based projects | 60 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-dotnet/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-dotnet) | -| | [go](https://megalinter.io/6.22.2/flavors/go/) | Optimized for GO based projects | 50 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-go/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-go) | -| | [java](https://megalinter.io/6.22.2/flavors/java/) | Optimized for JAVA based projects | 51 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-java/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-java) | -| | [javascript](https://megalinter.io/6.22.2/flavors/javascript/) | Optimized for JAVASCRIPT or TYPESCRIPT based projects | 57 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-javascript/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-javascript) | -| | [php](https://megalinter.io/6.22.2/flavors/php/) | Optimized for PHP based projects | 51 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-php/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-php) | -| | [python](https://megalinter.io/6.22.2/flavors/python/) | Optimized for PYTHON based projects | 59 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-python/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-python) | -| | [ruby](https://megalinter.io/6.22.2/flavors/ruby/) | Optimized for RUBY based projects | 48 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-ruby/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-ruby) | -| | [rust](https://megalinter.io/6.22.2/flavors/rust/) | Optimized for RUST based projects | 48 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-rust/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-rust) | -| | [salesforce](https://megalinter.io/6.22.2/flavors/salesforce/) | Optimized for Salesforce based projects | 51 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-salesforce/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-salesforce) | -| | [swift](https://megalinter.io/6.22.2/flavors/swift/) | Optimized for SWIFT based projects | 48 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-swift/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-swift) | -| | [terraform](https://megalinter.io/6.22.2/flavors/terraform/) | Optimized for TERRAFORM based projects | 53 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-terraform/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-terraform) | +| | [all](https://megalinter.io/7.13.0/supported-linters/) | Default MegaLinter Flavor | 125 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter) | +| | [c_cpp](https://megalinter.io/7.13.0/flavors/c_cpp/) | Optimized for pure C/C++ projects | 56 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-c_cpp/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-c_cpp) | +| | [ci_light](https://megalinter.io/7.13.0/flavors/ci_light/) | Optimized for CI items (Dockerfile, Jenkinsfile, JSON/YAML schemas,XML | 21 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-ci_light/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-ci_light) | +| | [cupcake](https://megalinter.io/7.13.0/flavors/cupcake/) | MegaLinter for the most commonly used languages | 84 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-cupcake/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-cupcake) | +| | [documentation](https://megalinter.io/7.13.0/flavors/documentation/) | MegaLinter for documentation projects | 51 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-documentation/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-documentation) | +| | [dotnet](https://megalinter.io/7.13.0/flavors/dotnet/) | Optimized for C, C++, C# or VB based projects | 63 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-dotnet/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-dotnet) | +| | [dotnetweb](https://megalinter.io/7.13.0/flavors/dotnetweb/) | Optimized for C, C++, C# or VB based projects with JS/TS | 72 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-dotnetweb/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-dotnetweb) | +| | [go](https://megalinter.io/7.13.0/flavors/go/) | Optimized for GO based projects | 53 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-go/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-go) | +| | [java](https://megalinter.io/7.13.0/flavors/java/) | Optimized for JAVA based projects | 54 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-java/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-java) | +| | [javascript](https://megalinter.io/7.13.0/flavors/javascript/) | Optimized for JAVASCRIPT or TYPESCRIPT based projects | 61 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-javascript/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-javascript) | +| | [php](https://megalinter.io/7.13.0/flavors/php/) | Optimized for PHP based projects | 56 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-php/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-php) | +| | [python](https://megalinter.io/7.13.0/flavors/python/) | Optimized for PYTHON based projects | 64 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-python/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-python) | +| | [ruby](https://megalinter.io/7.13.0/flavors/ruby/) | Optimized for RUBY based projects | 52 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-ruby/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-ruby) | +| | [rust](https://megalinter.io/7.13.0/flavors/rust/) | Optimized for RUST based projects | 52 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-rust/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-rust) | +| | [salesforce](https://megalinter.io/7.13.0/flavors/salesforce/) | Optimized for Salesforce based projects | 56 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-salesforce/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-salesforce) | +| | [swift](https://megalinter.io/7.13.0/flavors/swift/) | Optimized for SWIFT based projects | 52 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-swift/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-swift) | +| | [terraform](https://megalinter.io/7.13.0/flavors/terraform/) | Optimized for TERRAFORM based projects | 56 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-terraform/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-terraform) | ## Behind the scenes @@ -141,7 +146,12 @@ Note: command-line arguments have priority on config file properties - default: ### Installation on mega-linter Docker image +- Dockerfile commands : +```dockerfile +ENV JAVA_HOME_17=/usr/lib/jvm/java-17-openjdk +``` + - APK packages (Linux): - - [openjdk11](https://pkgs.alpinelinux.org/packages?branch=edge&name=openjdk11) + - [openjdk17](https://pkgs.alpinelinux.org/packages?branch=edge&name=openjdk17) - NPM packages (node.js): - [npm-groovy-lint](https://www.npmjs.com/package/npm-groovy-lint) diff --git a/docs/descriptors/html.md b/docs/descriptors/html.md index 38d89087c04..5ec31a217b5 100644 --- a/docs/descriptors/html.md +++ b/docs/descriptors/html.md @@ -3,7 +3,7 @@ title: HTML linters in MegaLinter description: djlint, htmlhint are available to analyze HTML files in MegaLinter --- - + # HTML @@ -22,8 +22,10 @@ description: djlint, htmlhint are available to analyze HTML files in MegaLinter ## Configuration in MegaLinter -| Variable | Description | Default value | -|---------------------------|-------------------------------|---------------| -| HTML_FILTER_REGEX_INCLUDE | Custom regex including filter | | -| HTML_FILTER_REGEX_EXCLUDE | Custom regex excluding filter | | +| Variable | Description | Default value | +|---------------------------|-------------------------------------------------|---------------| +| HTML_PRE_COMMANDS | List of bash commands to run before the linters | None | +| HTML_POST_COMMANDS | List of bash commands to run after the linters | None | +| HTML_FILTER_REGEX_INCLUDE | Custom regex including filter | | +| HTML_FILTER_REGEX_EXCLUDE | Custom regex excluding filter | | diff --git a/docs/descriptors/html_djlint.md b/docs/descriptors/html_djlint.md index 403f968d26b..0fa67800b6d 100644 --- a/docs/descriptors/html_djlint.md +++ b/docs/descriptors/html_djlint.md @@ -3,7 +3,7 @@ title: djlint configuration in MegaLinter description: How to use djlint (configure, ignore files, ignore errors, help & version documentations) to analyze HTML files --- - +
@@ -23,11 +23,11 @@ DjLint can analyse multiple formats of HTML: - golang - angular -For example, define `HTML_DJLINT_HTMLHINT_ARGUMENTS: ["--profile", "django"]` to select django format +For example, define `HTML_DJLINT_ARGUMENTS: ["--profile", "django"]` to select django format ## djlint documentation -- Version in MegaLinter: **1.19.16** +- Version in MegaLinter: **1.34.1** - Visit [Official Web Site](https://djlint.com/){target=_blank} - See [How to configure djlint rules](https://djlint.com/docs/configuration/){target=_blank} - See [How to disable djlint rules in files](https://djlint.com/docs/ignoring-code/){target=_blank} @@ -37,12 +37,13 @@ For example, define `HTML_DJLINT_HTMLHINT_ARGUMENTS: ["--profile", "django"]` to ## Configuration in MegaLinter -- Enable djlint by adding `HTML_DJLINT` in [ENABLE_LINTERS variable](https://megalinter.io/6.22.2/configuration/#activation-and-deactivation) -- Disable djlint by adding `HTML_DJLINT` in [DISABLE_LINTERS variable](https://megalinter.io/6.22.2/configuration/#activation-and-deactivation) +- Enable djlint by adding `HTML_DJLINT` in [ENABLE_LINTERS variable](https://megalinter.io/7.13.0/configuration/#activation-and-deactivation) +- Disable djlint by adding `HTML_DJLINT` in [DISABLE_LINTERS variable](https://megalinter.io/7.13.0/configuration/#activation-and-deactivation) | Variable | Description | Default value | |-----------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------| | HTML_DJLINT_ARGUMENTS | User custom arguments to add in linter CLI call
Ex: `-s --foo "bar"` | | +| HTML_DJLINT_COMMAND_REMOVE_ARGUMENTS | User custom arguments to remove from command line before calling the linter
Ex: `-s --foo "bar"` | | | HTML_DJLINT_FILTER_REGEX_INCLUDE | Custom regex including filter
Ex: `(src\|lib)` | Include every file | | HTML_DJLINT_FILTER_REGEX_EXCLUDE | Custom regex excluding filter
Ex: `(test\|examples)` | Exclude no file | | HTML_DJLINT_CLI_LINT_MODE | Override default CLI lint mode
- `file`: Calls the linter for each file
- `list_of_files`: Call the linter with the list of files as argument
- `project`: Call the linter from the root of the project | `list_of_files` | @@ -50,8 +51,10 @@ For example, define `HTML_DJLINT_HTMLHINT_ARGUMENTS: ["--profile", "django"]` to | HTML_DJLINT_FILE_NAMES_REGEX | File name regex filters. Regular expression list for filtering files by their base names using regex full match. Empty list includes all files
Ex: `["Dockerfile(-.+)?", "Jenkinsfile"]` | Include every file | | HTML_DJLINT_PRE_COMMANDS | List of bash commands to run before the linter | None | | HTML_DJLINT_POST_COMMANDS | List of bash commands to run after the linter | None | +| HTML_DJLINT_UNSECURED_ENV_VARIABLES | List of env variables explicitly not filtered before calling HTML_DJLINT and its pre/post commands | None | | HTML_DJLINT_DISABLE_ERRORS | Run linter but consider errors as warnings | `false` | | HTML_DJLINT_DISABLE_ERRORS_IF_LESS_THAN | Maximum number of errors allowed | `0` | +| HTML_DJLINT_CLI_EXECUTABLE | Override CLI executable | `['djlint']` | ## IDE Integration @@ -66,22 +69,24 @@ Use djlint in your favorite IDE to catch errors before MegaLinter ! This linter is available in the following flavours -| | Flavor | Description | Embedded linters | Info | -|:--------------------------------------------------------------------------------------------------------------------------------------------------------:|:---------------------------------------------------------------------|:------------------------------------------------------|:----------------:|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:| -|
| [all](https://megalinter.io/6.22.2/supported-linters/) | Default MegaLinter Flavor | 114 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter) | -| | [cupcake](https://megalinter.io/6.22.2/flavors/cupcake/) | MegaLinter for the most commonly used languages | 82 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-cupcake/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-cupcake) | -| | [documentation](https://megalinter.io/6.22.2/flavors/documentation/) | MegaLinter for documentation projects | 48 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-documentation/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-documentation) | -| | [dotnet](https://megalinter.io/6.22.2/flavors/dotnet/) | Optimized for C, C++, C# or VB based projects | 60 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-dotnet/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-dotnet) | -| | [go](https://megalinter.io/6.22.2/flavors/go/) | Optimized for GO based projects | 50 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-go/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-go) | -| | [java](https://megalinter.io/6.22.2/flavors/java/) | Optimized for JAVA based projects | 51 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-java/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-java) | -| | [javascript](https://megalinter.io/6.22.2/flavors/javascript/) | Optimized for JAVASCRIPT or TYPESCRIPT based projects | 57 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-javascript/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-javascript) | -| | [php](https://megalinter.io/6.22.2/flavors/php/) | Optimized for PHP based projects | 51 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-php/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-php) | -| | [python](https://megalinter.io/6.22.2/flavors/python/) | Optimized for PYTHON based projects | 59 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-python/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-python) | -| | [ruby](https://megalinter.io/6.22.2/flavors/ruby/) | Optimized for RUBY based projects | 48 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-ruby/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-ruby) | -| | [rust](https://megalinter.io/6.22.2/flavors/rust/) | Optimized for RUST based projects | 48 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-rust/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-rust) | -| | [salesforce](https://megalinter.io/6.22.2/flavors/salesforce/) | Optimized for Salesforce based projects | 51 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-salesforce/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-salesforce) | -| | [swift](https://megalinter.io/6.22.2/flavors/swift/) | Optimized for SWIFT based projects | 48 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-swift/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-swift) | -| | [terraform](https://megalinter.io/6.22.2/flavors/terraform/) | Optimized for TERRAFORM based projects | 53 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-terraform/v6.22.2) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-terraform) | +| | Flavor | Description | Embedded linters | Info | +|:--------------------------------------------------------------------------------------------------------------------------------------------------------:|:---------------------------------------------------------------------|:---------------------------------------------------------|:----------------:|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:| +| | [all](https://megalinter.io/7.13.0/supported-linters/) | Default MegaLinter Flavor | 125 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter) | +| | [c_cpp](https://megalinter.io/7.13.0/flavors/c_cpp/) | Optimized for pure C/C++ projects | 56 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-c_cpp/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-c_cpp) | +| | [cupcake](https://megalinter.io/7.13.0/flavors/cupcake/) | MegaLinter for the most commonly used languages | 84 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-cupcake/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-cupcake) | +| | [documentation](https://megalinter.io/7.13.0/flavors/documentation/) | MegaLinter for documentation projects | 51 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-documentation/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-documentation) | +| | [dotnet](https://megalinter.io/7.13.0/flavors/dotnet/) | Optimized for C, C++, C# or VB based projects | 63 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-dotnet/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-dotnet) | +| | [dotnetweb](https://megalinter.io/7.13.0/flavors/dotnetweb/) | Optimized for C, C++, C# or VB based projects with JS/TS | 72 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-dotnetweb/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-dotnetweb) | +| | [go](https://megalinter.io/7.13.0/flavors/go/) | Optimized for GO based projects | 53 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-go/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-go) | +| | [java](https://megalinter.io/7.13.0/flavors/java/) | Optimized for JAVA based projects | 54 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-java/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-java) | +| | [javascript](https://megalinter.io/7.13.0/flavors/javascript/) | Optimized for JAVASCRIPT or TYPESCRIPT based projects | 61 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-javascript/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-javascript) | +| | [php](https://megalinter.io/7.13.0/flavors/php/) | Optimized for PHP based projects | 56 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-php/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-php) | +| | [python](https://megalinter.io/7.13.0/flavors/python/) | Optimized for PYTHON based projects | 64 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-python/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-python) | +| | [ruby](https://megalinter.io/7.13.0/flavors/ruby/) | Optimized for RUBY based projects | 52 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-ruby/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-ruby) | +| | [rust](https://megalinter.io/7.13.0/flavors/rust/) | Optimized for RUST based projects | 52 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-rust/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-rust) | +| | [salesforce](https://megalinter.io/7.13.0/flavors/salesforce/) | Optimized for Salesforce based projects | 56 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-salesforce/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-salesforce) | +| | [swift](https://megalinter.io/7.13.0/flavors/swift/) | Optimized for SWIFT based projects | 52 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-swift/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-swift) | +| | [terraform](https://megalinter.io/7.13.0/flavors/terraform/) | Optimized for TERRAFORM based projects | 56 | ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/oxsecurity/megalinter-terraform/v7.13.0) ![Docker Pulls](https://img.shields.io/docker/pulls/oxsecurity/megalinter-terraform) | ## Behind the scenes @@ -110,30 +115,63 @@ Usage: djlint [OPTIONS] SRC ... djLint · HTML template linter and formatter. Options: - --version Show the version and exit. - -e, --extension TEXT File extension to check [default: html] - -i, --ignore TEXT Codes to ignore. ex: "H014,H017" - --reformat Reformat the file(s). - --check Check formatting on the file(s). - --indent INTEGER Indent spacing. [default: 4] - --quiet Do not print diff when reformatting. - --profile TEXT Enable defaults by template language. ops: django, - jinja, nunjucks, handlebars, golang, angular, html - [default: html] - --require-pragma Only format or lint files that starts with a - comment with the text 'djlint:on' - --lint Lint for common issues. [default option] - --use-gitignore Use .gitignore file to extend excludes. - --warn Return errors as warnings. - --preserve-leading-space Attempt to preserve leading space on text. - --preserve-blank-lines Attempt to preserve blank lines. - --format-css Also format contents of