/** * cdn.js — EVERY third-party script and stylesheet a plugin loads at runtime, pinned to an EXACT version * with its Subresource Integrity hash (CRITIC-5, 2026-09-26). * * WHY. Floating ranges (maplibre-gl@5, maplibre-gl-geocoder@1) meant a CDN could serve any future release * to every partner's visitors, and with no integrity attribute nothing would notice a tampered file. * Each entry is loaded with `integrity` + `crossorigin="anonymous"` (every host here answers * Access-Control-Allow-Origin: *, measured), so the browser refuses a file whose bytes differ. * * TO BUMP A VERSION: change the url, recompute the hash, and run check:cdn-pins (it re-fetches every * url and compares): * curl -sL | openssl dgst -sha384 -binary | openssl base64 -A * * Not here: the RTL text plugin, which the ENGINE fetches (setRTLTextPlugin), not a