/******************************************/ /* Загрузка JS */ /******************************************/ (async () => { const _scriptCache = new Map(); // normalizedUrl -> Promise const _nodePromise = new WeakMap(); // scriptNode -> Promise /** * Возвращает «каноническое» представление URL БЕЗ параметра v. * Используется для поиска уже существующих элементов на странице. */ function canonicalUrl(src) { const u = new URL(src, document.baseURI); u.searchParams.delete("v"); return u.href; } /** * Возвращает URL С параметром v — именно такой мы ставим в src при вставке. */ function versionedUrl(src) { const u = new URL(src, document.baseURI); u.searchParams.set("v", window.version); return u.href; } function isElement(node) { return !!node && node.nodeType === 1; } /** * Ищет