← Scan another repo

github.com/Snailclimb/JavaGuide

@ 871f1a9b2b22

Submitted 8/4/2026, 10:25:52 AM · Status: ok

Risk grade
F
100 / 100
Findings
91
0 critical23 high53 medium14 low1 info0 on CISA KEV0ATT&CK
Showing 91 of 91 findings

Findings

  • Detected generic-api-key: Detected a Generic API Key, potentially exposing access to various services and sensitive operations
    Detected a Generic API Key, potentially exposing access to various services and sensitive operations.
    gitleaks
  • Immutabl: Hash-collision algorithmic complexity denial of service in Immutable.Map/Set
    grypeCVE-2026-59880EPSS 0.4%
  • Immutable.js `List` 32-bit trie overflow → unrecoverable DoS
    grypeCVE-2026-59879EPSS 0.4%
  • js-yaml: YAML merge-key chains can force quadratic CPU consumption
    grypeCVE-2026-59869EPSS 0.4%
  • js-yaml: YAML merge-key chains can force quadratic CPU consumption
    grypeCVE-2026-59869EPSS 0.4%
  • linkify-it: Quadratic-complexity DoS via the `mailto:` validator scan-loop on attacker text
    grypeCVE-2026-59887EPSS 0.3%
  • LinkifyIt#match scan loop has quadratic algorithmic complexity
    grypeCVE-2026-48801EPSS 0.3%
  • PostCSS: Path Traversal in Previous Source Map Auto-Loading (sourceMappingURL) leads to Arbitrary .map File Disclosure
    grype
  • undici vulnerable to cross-origin request routing via SOCKS5 proxy pool reuse
    grypeCVE-2026-6734EPSS 0.4%
  • undici vulnerable to TLS certificate validation bypass via dropped requestTls in SOCKS5 ProxyAgent
    grypeCVE-2026-9697EPSS 0.5%
  • undici WebSocket client vulnerable to denial of service via fragment count bypass
    grypeCVE-2026-12151EPSS 0.8%
  • vite: `server.fs.deny` bypass on Windows alternate paths
    grypeCVE-2026-53571EPSS 0.6%
  • Immutable.js provides many Persistent Immutable data structures. Prior ...
    Immutable.js provides many Persistent Immutable data structures. Prior to 4.3.9 and 5.1.8, Immutable.Map and Immutable.Set keep keys that share the same 32-bit hash in a HashCollisionNode collision bucket that is scanned linearly, allowing an attacker who controls keys inserted i…
    trivyCVE-2026-59880
  • Immutable.js provides many Persistent Immutable data structures. Prior ...
    Immutable.js provides many Persistent Immutable data structures. Prior to 4.3.9 and 5.1.8, List#set, List#setSize, List#setIn, List#updateIn, and the functional set, setIn, and updateIn mishandle an index or size in the range 2 ** 30 to 2 ** 31 in setListBounds in src/List.js, ca…
    trivyCVE-2026-59879
  • js-yaml: js-yaml: Denial of Service via crafted YAML documents
    js-yaml is a JavaScript YAML parser and dumper. From 3.0.0 before 3.15.0 and from 4.0.0 before 4.3.0, js-yaml can spend quadratic CPU time parsing a document whose size grows only linearly when a chain of mappings uses merge keys where each mapping merges the previous one. This i…
    trivyCVE-2026-59869
  • js-yaml: js-yaml: Denial of Service via crafted YAML documents
    js-yaml is a JavaScript YAML parser and dumper. From 3.0.0 before 3.15.0 and from 4.0.0 before 4.3.0, js-yaml can spend quadratic CPU time parsing a document whose size grows only linearly when a chain of mappings uses merge keys where each mapping merges the previous one. This i…
    trivyCVE-2026-59869
  • linkify-it: linkify-it: Denial of Service via algorithmic complexity vulnerability
    linkify-it is a links recognition library with full Unicode support. Prior to 5.0.1, LinkifyIt.prototype.match, the package's primary public API, has O(N²) algorithmic complexity for inputs containing many fuzzy links or emails because the JavaScript-level scan loop re-slices inp…
    trivyCVE-2026-48801
  • linkify-it: Quadratic-complexity DoS via the `mailto:` validator scan-loop on attacker text
    linkify-it is a links recognition library with full Unicode support. Prior to 5.0.2, the mailto: schema validator used by .test() and .match() can be invoked at every mailto: occurrence and scan the remaining input through src_email_name in lib/re.mjs, causing O(n^2) CPU consumpt…
    trivyCVE-2026-59887
  • PostCSS: Path Traversal in Previous Source Map Auto-Loading (sourceMappingURL) leads to Arbitrary .map File Disclosure
    ## Vulnerability Details **File**: `lib/previous-map.js` **Line**: 87-98 (`loadFile`), 129-144 (`loadMap`) ### Root Cause PostCSS auto-detects a `/*# sourceMappingURL=... */` comment inside the CSS text it is asked to parse and, unless the caller explicitly passes `map: false`…
    trivy
  • undici: undici: Denial of Service due to unbounded memory growth via WebSocket frames
    Impact: The undici WebSocket client enforces maxPayloadSize on the cumulative byte count of fragments in a message but does not enforce a limit on the number of fragments. A malicious WebSocket server can stream many small or empty continuation frames that each pass per-frame and…
    trivyCVE-2026-12151
  • undici: undici: Information disclosure and data integrity issues due to incorrect Socks5ProxyAgent connection routing
    Impact: When using Socks5ProxyAgent, undici reuses a single connection pool across different origins without verifying that the pool's origin matches the requested origin. All requests are dispatched through the pool connected to the first origin, regardless of the intended desti…
    trivyCVE-2026-6734
  • undici: undici: Man-in-the-Middle attack via ignored TLS options with SOCKS5 proxy
    Impact: undici's ProxyAgent silently drops the requestTls option when configured with a SOCKS5 proxy URI (socks5:// or socks://). The target HTTPS connection through the SOCKS5 tunnel falls back to Node's default trust store, ignoring user-configured ca, cert, key, rejectUnauthor…
    trivyCVE-2026-9697
  • vite: `server.fs.deny` bypass on Windows alternate paths
    Vite is a frontend tooling framework for JavaScript. Prior to 8.0.16, 7.3.5, and 6.4.3, the contents of files that are specified by server.fs.deny can be returned to the browser on Windows. Vite’s dev server denies direct access to sensitive files through server.fs.deny, includin…
    trivyCVE-2026-53571
  • Ensure top-level permissions are not set to write-all
    Ensure top-level permissions are not set to write-all on on(Docs Test)
    checkov.github/workflows/test.yml:0
  • DOMPurify IN_PLACE Sanitization Bypass via Attached Shadow Root Inside <template>.content
    grypeCVE-2026-49978EPSS 0.3%
  • DOMPurify: Cross-realm IN_PLACE sanitization leaves executable markup intact via realm-bound `instanceof` checks
    grypeCVE-2026-49458EPSS 0.4%
  • DOMPurify: Hook mutation of `data.allowedTags` / `data.allowedAttributes` permanently pollutes `DEFAULT_ALLOWED_TAGS` / `DEFAULT_ALLOWED_ATTR`
    grypeCVE-2026-65902EPSS 0.2%
  • DOMPurify: IN_PLACE mode preserves attributes of a clobbered root element, allowing XSS via attacker-controlled root DOM
    grypeCVE-2026-49459EPSS 0.3%
  • DOMPurify: Permanent `ALLOWED_ATTR` pollution via `setConfig()` bypassing the hook clone-guard (incomplete fix of the 3.4.7 hook-pollution patch)
    grypeCVE-2026-65898EPSS 0.2%
  • JS-YAML: Quadratic-complexity DoS in merge key handling via repeated aliases
    grypeCVE-2026-53550EPSS 0.4%
  • JS-YAML: Quadratic-complexity DoS in merge key handling via repeated aliases
    grypeCVE-2026-53550EPSS 0.4%
  • launch-editor: NTLMv2 hash disclosure via UNC path handling on Windows
    grypeCVE-2026-53632EPSS 0.4%
  • markdown-it: Quadratic complexity DoS in smartquotes rule via replaceAt string operations
    grypeCVE-2026-48988EPSS 0.4%
  • undici vulnerable to cross-user information disclosure via shared cache whitespace bypass
    grypeCVE-2026-9678EPSS 0.4%
  • undici vulnerable to HTTP header injection via Set-Cookie percent-decoding
    grypeCVE-2026-9679EPSS 0.3%
  • DOMPurify IN_PLACE Sanitization Bypass via Attached Shadow Root Inside <template>.content
    If the HTML you give it contains a <template> element, and inside that template there's an element with a shadow DOM attached to it, DOMPurify quietly skips over the shadow contents. Whatever the attacker put in there - an image with an onerror handler, a link with a javascript: …
    osv-scannerCVE-2026-49978
  • DOMPurify: `CUSTOM_ELEMENT_HANDLING` bypasses `afterSanitizeElements` for allowed custom elements.
    ## Summary There is a possible hook-policy inconsistency in DOMPurify 3.4.11 involving `CUSTOM_ELEMENT_HANDLING`. When a custom element is allowed via `CUSTOM_ELEMENT_HANDLING.tagNameCheck`, it appears that the element does not go through `afterSanitizeElements` in the same way…
    osv-scannerCVE-2026-66010
  • DOMPurify: Cross-realm IN_PLACE sanitization leaves executable markup intact via realm-bound `instanceof` checks
    # Cross-realm IN_PLACE sanitization leaves executable markup intact via realm-bound `instanceof` checks **CWE**: CWE-79 (XSS — Improper Neutralization of Input During Web Page Generation) via CWE-693 (Protection Mechanism Failure — realm-bound `instanceof` checks fail-open on fo…
    osv-scannerCVE-2026-49458
  • DOMPurify: Hook mutation of `data.allowedTags` / `data.allowedAttributes` permanently pollutes `DEFAULT_ALLOWED_TAGS` / `DEFAULT_ALLOWED_ATTR`
    # Hook mutation of `data.allowedTags` / `data.allowedAttributes` permanently pollutes `DEFAULT_ALLOWED_TAGS` / `DEFAULT_ALLOWED_ATTR` **CWE**: CWE-501 (Trust Boundary Violation — hook-scoped mutation leaks to global default sets) via CWE-693 (Protection Mechanism Failure — the d…
    osv-scannerCVE-2026-65902
  • DOMPurify: IN_PLACE mode preserves attributes of a clobbered root element, allowing XSS via attacker-controlled root DOM
    # IN_PLACE mode preserves attributes of a clobbered root element, allowing XSS via attacker-controlled root DOM **CWE**: CWE-79 (XSS — Improper Neutralization of Input During Web Page Generation) via CWE-693 (Protection Mechanism Failure — silent no-op when `_forceRemove` is cal…
    osv-scannerCVE-2026-49459
  • DOMPurify: Permanent `ALLOWED_ATTR` pollution via `setConfig()` bypassing the hook clone-guard (incomplete fix of the 3.4.7 hook-pollution patch)
    ## Summary DOMPurify 3.4.7 shipped a security fix ("permanent hook pollution") that makes a registered `uponSanitizeAttribute` hook's mutation of `data.allowedAttributes` **non-persistent** — so allowing an attribute for one element does not leak into later `sanitize()` calls. T…
    osv-scannerCVE-2026-65898
  • DOMPurify: SAFE_FOR_TEMPLATES bypass - template expressions survive sanitization inside <template> content when using DOM output modes
    ## Summary When DOMPurify is configured with both `SAFE_FOR_TEMPLATES: true` and `RETURN_DOM: true` (or `IN_PLACE: true`), an attacker can inject template expressions, such as `${evil}`, `{{evil}}`, or `<%evil%>`, that survive the sanitization pass inside `<template>` element co…
    osv-scannerCVE-2026-65900
  • DOMPurify: Trusted Types policy survives `clearConfig()` and can poison later `RETURN_TRUSTED_TYPE` output
    ## Impact A DOMPurify instance that is reused across trust boundaries can stay bound to a previously supplied `TRUSTED_TYPES_POLICY` even after `clearConfig()` is called. A later caller that requests `RETURN_TRUSTED_TYPE` receives a `TrustedHTML` object created by the old policy…
    osv-scannerCVE-2026-65899
  • esbuild allows arbitrary file read when running the development server on Windows
    ### Summary The development server contains a path traversal vulnerability on Windows when serving files from `servedir`. Due to the use of `path.Clean()` (which only normalizes forward-slash `/` separators) instead of a Windows-aware path normalization function, it is possible…
    osv-scanner
  • Immutabl: Hash-collision algorithmic complexity denial of service in Immutable.Map/Set
    ## Summary `Immutable.Map` and `Immutable.Set` keep keys that share the same 32-bit hash in a collision bucket that is scanned linearly. The string hash is public and deterministic, so an attacker who controls the **keys** inserted into a Map can craft many keys that all collide…
    osv-scannerCVE-2026-59880
  • Immutable.js `List` 32-bit trie overflow → unrecoverable DoS
    ## Summary `List#set`, `List#setSize`, `List#setIn`, `List#updateIn` (and the functional `set` / `setIn` / `updateIn`) mishandle an index or size in the range `[2 ** 30, 2 ** 31)`: - On an **empty** `List` the operation enters an **uncatchable infinite loop** (a tight CPU spin;…
    osv-scannerCVE-2026-59879
  • JS-YAML: Quadratic-complexity DoS in merge key handling via repeated aliases
    ### Summary A crafted YAML document can trigger algorithmic CPU exhaustion in `js-yaml` merge-key processing (`<<`) by repeating the same alias many times in a merge sequence. This causes quadratic parse-time behavior relative to input size and can block a Node.js worker/event …
    osv-scannerCVE-2026-53550
  • JS-YAML: Quadratic-complexity DoS in merge key handling via repeated aliases
    ### Summary A crafted YAML document can trigger algorithmic CPU exhaustion in `js-yaml` merge-key processing (`<<`) by repeating the same alias many times in a merge sequence. This causes quadratic parse-time behavior relative to input size and can block a Node.js worker/event …
    osv-scannerCVE-2026-53550
  • js-yaml: YAML merge-key chains can force quadratic CPU consumption
    ### Impact js-yaml can spend quadratic CPU time parsing a document whose size grows only linearly. The issue is triggered by a chain of mappings where each mapping merges the previous one: ```yaml a0: &a0 { k0: 0 } a1: &a1 { <<: *a0, k1: 1 } a2: &a2 { <<: *a1, k2: 2 } a3: &a3 {…
    osv-scannerCVE-2026-59869
  • js-yaml: YAML merge-key chains can force quadratic CPU consumption
    ### Impact js-yaml can spend quadratic CPU time parsing a document whose size grows only linearly. The issue is triggered by a chain of mappings where each mapping merges the previous one: ```yaml a0: &a0 { k0: 0 } a1: &a1 { <<: *a0, k1: 1 } a2: &a2 { <<: *a1, k2: 2 } a3: &a3 {…
    osv-scannerCVE-2026-59869
  • launch-editor: NTLMv2 hash disclosure via UNC path handling on Windows
    ### Summary The `launch-editor` NPM package accesses arbitrary paths including Windows UNC paths. When a UNC path is opened, Windows automatically attempts NTLM authentication to the remote host, causing the user’s NTLMv2 password hash to be leaked to an attacker-controlled SMB s…
    osv-scannerCVE-2026-53632
  • linkify-it: Quadratic-complexity DoS via the `mailto:` validator scan-loop on attacker text
    ### Summary `linkify-it`'s schema-scan loop (`.test()` / `.match()`, the documented public API) invokes the `mailto:` schema validator at **every** `mailto:` occurrence in the input text. For each occurrence the validator does `text.slice(pos)` (an O(n) copy) and runs an email re…
    osv-scannerCVE-2026-59887
  • LinkifyIt#match scan loop has quadratic algorithmic complexity
    ## Summary `LinkifyIt.prototype.match` — the package's primary public API — has **O(N²) algorithmic complexity** for inputs containing many fuzzy links or emails. This is not a regex backtrack bug; it's a structural issue in the JS-level scan loop that re-slices the input and re…
    osv-scannerCVE-2026-48801
  • markdown-it: Quadratic complexity DoS in smartquotes rule via replaceAt string operations
    ### Summary A quadratic time complexity vulnerability exists in markdown-it's smartquotes rule (enabled via the `typographer: true` option). An attacker can craft a markdown input consisting of consecutive quotation marks that causes the parser to consume excessive CPU time, lea…
    osv-scannerCVE-2026-48988
  • PostCSS: Path Traversal in Previous Source Map Auto-Loading (sourceMappingURL) leads to Arbitrary .map File Disclosure
    ## Vulnerability Details **File**: `lib/previous-map.js` **Line**: 87-98 (`loadFile`), 129-144 (`loadMap`) ### Root Cause PostCSS auto-detects a `/*# sourceMappingURL=... */` comment inside the CSS text it is asked to parse and, unless the caller explicitly passes `map: false`…
    osv-scanner
  • undici vulnerable to cross-origin request routing via SOCKS5 proxy pool reuse
    ## Impact When using `Socks5ProxyAgent`, undici reuses a single connection pool across different origins without verifying that the pool's origin matches the requested origin. All requests are dispatched through the pool connected to the first origin, regardless of the intended …
    osv-scannerCVE-2026-6734
  • undici vulnerable to cross-user information disclosure via shared cache whitespace bypass
    ## Impact Undici's cache interceptor incorrectly classifies some responses as cacheable when the upstream `Cache-Control` header uses whitespace-padded qualified `private` or `no-cache` field names such as `private=" authorization"` or `no-cache="\tauthorization"`. The parser pr…
    osv-scannerCVE-2026-9678
  • undici vulnerable to HTTP header injection via Set-Cookie percent-decoding
    ## Impact undici's cookie parser in `parseSetCookie` percent-decodes cookie values via `qsUnescape`, turning encoded sequences like `%0D%0A`, `%00`, `%3B`, and `%3D` into their literal byte equivalents. RFC 6265 §5.4 does not specify any decoding and browsers do not decode eithe…
    osv-scannerCVE-2026-9679
  • undici vulnerable to HTTP response queue poisoning via keep-alive socket reuse
    ## Impact Undici's HTTP/1.1 client is vulnerable to response queue poisoning on reused keep-alive sockets. An attacker-controlled upstream server can inject an unsolicited HTTP/1.1 response onto an idle socket after a request completes. When the client dispatches the next reques…
    osv-scannerCVE-2026-6733
  • undici vulnerable to Set-Cookie SameSite attribute downgrade via permissive substring matching
    ## Impact When undici parses a `Set-Cookie` header, it accepts any `SameSite` attribute value that contains `Strict`, `Lax`, or `None` as a substring, rather than the case-insensitive exact match specified by RFC 6265. Non-spec values are silently mapped to one of the three stan…
    osv-scannerCVE-2026-11525
  • undici vulnerable to TLS certificate validation bypass via dropped requestTls in SOCKS5 ProxyAgent
    ## Impact undici's `ProxyAgent` silently drops the `requestTls` option when configured with a SOCKS5 proxy URI (`socks5://` or `socks://`). The target HTTPS connection through the SOCKS5 tunnel falls back to Node's default trust store, ignoring user-configured `ca`, `cert`, `key…
    osv-scannerCVE-2026-9697
  • undici WebSocket client vulnerable to denial of service via fragment count bypass
    ## Impact The undici WebSocket client enforces `maxPayloadSize` on the cumulative byte count of fragments in a message but does not enforce a limit on the number of fragments. A malicious WebSocket server can stream many small or empty continuation frames that each pass per-fram…
    osv-scannerCVE-2026-12151
  • vite: `server.fs.deny` bypass on Windows alternate paths
    ### Summary The contents of files that are specified by [`server.fs.deny`](https://vite.dev/config/server-options#server-fs-deny) can be returned to the browser on Windows. ### Impact Only apps that match the following conditions are affected: - explicitly exposes the Vite de…
    osv-scannerCVE-2026-53571
  • Possible hardcoded secret assigned to a credential-like variable. Move it to a secret store / env var. (First-party socbox rule; Apache-2.0.)
    Possible hardcoded secret assigned to a credential-like variable. Move it to a secret store / env var. (First-party socbox rule; Apache-2.0.)
    semgrepdocs/system-design/security/data-desensitization.md:443
  • Possible hardcoded secret assigned to a credential-like variable. Move it to a secret store / env var. (First-party socbox rule; Apache-2.0.)
    Possible hardcoded secret assigned to a credential-like variable. Move it to a secret store / env var. (First-party socbox rule; Apache-2.0.)
    semgrepdocs/system-design/security/data-desensitization.md:126
  • DOMPurify before 3.4.11 fails to clone the ALLOWED_ATTR allowlist when ...
    DOMPurify before 3.4.11 fails to clone the ALLOWED_ATTR allowlist when setConfig() is used with an uponSanitizeAttribute hook, allowing the hook to permanently mutate the shared allowlist. Attackers can register a hook that conditionally allows dangerous attributes like onerror f…
    trivyCVE-2026-65898
  • DOMPurify before 3.4.7 (affected versions <= 3.4.5) passes direct refe ...
    DOMPurify before 3.4.7 (affected versions <= 3.4.5) passes direct references to the module-level DEFAULT_ALLOWED_TAGS and DEFAULT_ALLOWED_ATTR sets to the uponSanitizeElement and uponSanitizeAttribute hooks via data.allowedTags / data.allowedAttributes when sanitize is called wit…
    trivyCVE-2026-65902
  • dompurify: DOMPurify: Cross-site scripting bypass allows arbitrary script execution
    DOMPurify is a DOM-only cross-site scripting sanitizer for HTML, MathML, and SVG. Prior to 3.4.6, DOMPurify.sanitize(root, { IN_PLACE: true }) could preserve event-handler attributes on an attacker-controlled <form> root when a descendant name clobbered properties checked by _isC…
    trivyCVE-2026-49459
  • dompurify: DOMPurify: Cross-site scripting due to improper sanitization of DOM nodes
    DOMPurify is a DOM-only cross-site scripting sanitizer for HTML, MathML, and SVG. Prior to 3.4.6, DOMPurify.sanitize(node, { IN_PLACE: true }) accepted same-origin foreign-realm DOM nodes while follow-on checks used parent-realm constructors, causing instanceof checks for forms, …
    trivyCVE-2026-49458
  • dompurify: DOMPurify: Cross-site scripting vulnerability allows code execution
    DOMPurify is a DOM-only cross-site scripting sanitizer for HTML, MathML, and SVG. Prior to 3.4.7, DOMPurify IN_PLACE sanitization could skip shadow contents attached to an element inside <template>.content, allowing attacker-controlled markup such as event handlers, JavaScript UR…
    trivyCVE-2026-49978
  • js-yaml: js-yaml: Denial of Service via crafted YAML merge keys
    js-yaml is a JavaScript YAML parser and dumper. Prior to 4.2.0 and 3.15.0, a crafted YAML document can trigger algorithmic CPU exhaustion in js-yaml merge-key processing (<<) by repeating the same alias many times in a merge sequence. This causes quadratic parse-time behavior rel…
    trivyCVE-2026-53550
  • js-yaml: js-yaml: Denial of Service via crafted YAML merge keys
    js-yaml is a JavaScript YAML parser and dumper. Prior to 4.2.0 and 3.15.0, a crafted YAML document can trigger algorithmic CPU exhaustion in js-yaml merge-key processing (<<) by repeating the same alias many times in a merge sequence. This causes quadratic parse-time behavior rel…
    trivyCVE-2026-53550
  • launch-editor: launch-editor: Credential compromise via NTLMv2 password hash leak through UNC path access
    launch-editor allows users to open files with line numbers in editor from Node.js. Prior to 2.14.1, the launch-editor NPM package accesses arbitrary paths including Windows UNC paths. When a UNC path is opened, Windows automatically attempts NTLM authentication to the remote host…
    trivyCVE-2026-53632
  • markdown-it is a Markdown parser. Versions 14.1.1 and below contain a ...
    markdown-it is a Markdown parser. Versions 14.1.1 and below contain a denial-of-service vulnerability when typographer: true is enabled, due to quadratic (O(n^2)) processing in the smartquotes rule. The issue stems from repeatedly modifying strings with replaceAt(), which perform…
    trivyCVE-2026-48988
  • undici: undici vulnerable to HTTP header injection via Set-Cookie percent-decoding
    Impact: undici's cookie parser in parseSetCookie percent-decodes cookie values via qsUnescape, turning encoded sequences like %0D%0A, %00, %3B, and %3D into their literal byte equivalents. RFC 6265 §5.4 does not specify any decoding and browsers do not decode either. Application…
    trivyCVE-2026-9679
  • undici: Undici: Information disclosure due to improper cache-control header parsing
    Impact: Undici's cache interceptor incorrectly classifies some responses as cacheable when the upstream Cache-Control header uses whitespace-padded qualified private or no-cache field names such as private=" authorization" or no-cache="\tauthorization". The parser preserves the s…
    trivyCVE-2026-9678

This report is public.