您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Get download links for Berriz videos (https://berriz.in/)
// ==UserScript== // @name BerrizDown // @namespace https://userscripts.crux.cx // @version 0.1.1 // @author Crux (@iu_crux) // @description Get download links for Berriz videos (https://berriz.in/) // @icon data:image/png;base64,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 // @match https://berriz.in/* // @require https://cdn.jsdelivr.net/npm/[email protected]/umd/react.production.min.js // @require https://cdn.jsdelivr.net/npm/[email protected]/umd/react-dom.production.min.js // @require https://cdn.jsdelivr.net/npm/@tanstack/[email protected]/build/umd/index.production.js // ==/UserScript== (function (require$$0, require$$0$1, reactQuery) { 'use strict'; var jsxRuntime = { exports: {} }; var reactJsxRuntime_production_min = {}; /** * @license React * react-jsx-runtime.production.min.js * * Copyright (c) Facebook, Inc. and its affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ var hasRequiredReactJsxRuntime_production_min; function requireReactJsxRuntime_production_min() { if (hasRequiredReactJsxRuntime_production_min) return reactJsxRuntime_production_min; hasRequiredReactJsxRuntime_production_min = 1; var f = require$$0, k = Symbol.for("react.element"), l = Symbol.for("react.fragment"), m = Object.prototype.hasOwnProperty, n = f.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner, p = { key: true, ref: true, __self: true, __source: true }; function q(c, a, g) { var b, d = {}, e = null, h = null; void 0 !== g && (e = "" + g); void 0 !== a.key && (e = "" + a.key); void 0 !== a.ref && (h = a.ref); for (b in a) m.call(a, b) && !p.hasOwnProperty(b) && (d[b] = a[b]); if (c && c.defaultProps) for (b in a = c.defaultProps, a) void 0 === d[b] && (d[b] = a[b]); return { $$typeof: k, type: c, key: e, ref: h, props: d, _owner: n.current }; } reactJsxRuntime_production_min.Fragment = l; reactJsxRuntime_production_min.jsx = q; reactJsxRuntime_production_min.jsxs = q; return reactJsxRuntime_production_min; } var hasRequiredJsxRuntime; function requireJsxRuntime() { if (hasRequiredJsxRuntime) return jsxRuntime.exports; hasRequiredJsxRuntime = 1; { jsxRuntime.exports = requireReactJsxRuntime_production_min(); } return jsxRuntime.exports; } var jsxRuntimeExports = requireJsxRuntime(); var client = {}; var hasRequiredClient; function requireClient() { if (hasRequiredClient) return client; hasRequiredClient = 1; var m = require$$0$1; { client.createRoot = m.createRoot; client.hydrateRoot = m.hydrateRoot; } return client; } var clientExports = requireClient(); const queryClient = new reactQuery.QueryClient({ defaultOptions: { queries: { refetchOnWindowFocus: false, retry: false } } }); function sleep(duration) { return new Promise((resolve) => setTimeout(resolve, duration)); } const mediaRegex = /https:\/\/berriz\.in\/(?:ko|en)\/[a-zA-Z0-9]+\/(media\/content|live\/replay)\/([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})/; const needAppLabels = ["앱 실행이 필요합니다", "Open the app"]; function useBerrizMedia() { const [media, setMedia] = require$$0.useState(null); require$$0.useEffect(() => { var _a; let counter = 0; detect(); async function detect() { var _a2; const matches = mediaRegex.exec(window.location.href); if (matches) { counter++; const currentCounter = counter; const type = matches[1]; const id = matches[2]; let el = null; for (let retry = 0; retry < 100; retry++) { el = document.querySelector(".muscat-ui-modal-layer h3"); if (el) { break; } await sleep(0); if (currentCounter !== counter) { return; } } if (type === "media/content" && el && el.textContent && needAppLabels.includes(el.textContent)) { el.textContent = "BerrizDown"; (_a2 = document.querySelector(".muscat-ui-modal-layer")) == null ? void 0 : _a2.classList.add("hidden"); setMedia({ type, id }); } else { setMedia(null); } } else { setMedia(null); } } (_a = window.navigation) == null ? void 0 : _a.addEventListener("navigatesuccess", detect); return () => { var _a2; (_a2 = window.navigation) == null ? void 0 : _a2.removeEventListener("navigatesuccess", detect); }; }, []); return media; } function getCookieValue(name) { var _a; return ((_a = document.cookie.match("(^|;)\\s*" + name + "\\s*=\\s*([^;]+)")) == null ? void 0 : _a.pop()) || ""; } function getVodPlaybackAreaContextQueryKey(mediaId) { return ["vodPlaybackAreaContext", mediaId]; } async function getVodPlaybackAreaContext(context) { const mediaId = context.queryKey[1]; const response = await fetch( `https://svc-api.berriz.in/service/v1/medias/vod/${mediaId}/playback_area_context`, { credentials: "include" } ); if (!response.ok) { throw new Error("Failed to fetch"); } const data = await response.json(); if (data.code !== "0000" || data.message !== "SUCCESS") { throw new Error(data.message); } return data; } function Modal({ children }) { return /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "modal-wrapper", children: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "modal", children }) }); } function formatSeconds(seconds) { if (seconds < 0) { throw new Error("Seconds cannot be negative"); } if (!Number.isInteger(seconds)) { seconds = Math.floor(seconds); } const totalMinutes = Math.floor(seconds / 60); const remainingSeconds = seconds % 60; if (totalMinutes > 60) { const hours = Math.floor(totalMinutes / 60); const minutes = totalMinutes % 60; return `${hours}:${minutes.toString().padStart(2, "0")}:${remainingSeconds.toString().padStart(2, "0")}`; } return `${totalMinutes.toString().padStart(2, "0")}:${remainingSeconds.toString().padStart(2, "0")}`; } function Preview({ data }) { return /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "video-preview", children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "video-wrapper", children: [ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "video-container", children: [ /* @__PURE__ */ jsxRuntimeExports.jsx( "img", { alt: data.data.media.title, loading: "lazy", decoding: "async", "data-nimg": "fill", className: "object-contain", sizes: "(max-width: 1320px) 33vw, 25vw", srcSet: ` ${data.data.media.thumbnailUrl}/dims/autorotate/on/resize/256/quality/75/optimize 256w, ${data.data.media.thumbnailUrl}/dims/autorotate/on/resize/384/quality/75/optimize 384w, ${data.data.media.thumbnailUrl}/dims/autorotate/on/resize/768/quality/75/optimize 768w, ${data.data.media.thumbnailUrl}/dims/autorotate/on/resize/1080/quality/75/optimize 1080w, ${data.data.media.thumbnailUrl}/dims/autorotate/on/resize/1320/quality/75/optimize 1320w, ${data.data.media.thumbnailUrl}/dims/autorotate/on/resize/1920/quality/75/optimize 1920w `, src: `${data.data.media.thumbnailUrl}/dims/autorotate/on/resize/1920/quality/75/optimize`, style: { position: "absolute", width: "100%", height: "100%", inset: 0, color: "transparent" } } ), /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "video-overlay", children: /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "duration-text", children: formatSeconds(data.data.media.vod.duration) }) }), data.data.media.isFanclubOnly && /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "badge-container", children: /* @__PURE__ */ jsxRuntimeExports.jsxs( "svg", { xmlns: "http://www.w3.org/2000/svg", width: "18", height: "18", fill: "none", viewBox: "0 0 18 18", children: [ /* @__PURE__ */ jsxRuntimeExports.jsxs("g", { filter: "url(#ic_bullet_fanclub_shadow_18_svg__a)", children: [ /* @__PURE__ */ jsxRuntimeExports.jsx("circle", { cx: "9", cy: "8.5", r: "7.5", fill: "#6870FF" }), /* @__PURE__ */ jsxRuntimeExports.jsx("circle", { cx: "9", cy: "8.5", r: "8", stroke: "#525BF9" }) ] }), /* @__PURE__ */ jsxRuntimeExports.jsx( "path", { fill: "#fff", d: "M9 2.875A5.62 5.62 0 0 1 3.375 8.5 5.63 5.63 0 0 1 9 14.125 5.62 5.62 0 0 1 14.625 8.5 5.63 5.63 0 0 1 9 2.875" } ), /* @__PURE__ */ jsxRuntimeExports.jsx("defs", { children: /* @__PURE__ */ jsxRuntimeExports.jsxs( "filter", { id: "ic_bullet_fanclub_shadow_18_svg__a", width: "17", height: "18", x: "0.5", y: "0", colorInterpolationFilters: "sRGB", filterUnits: "userSpaceOnUse", children: [ /* @__PURE__ */ jsxRuntimeExports.jsx( "feFlood", { floodOpacity: "0", result: "BackgroundImageFix" } ), /* @__PURE__ */ jsxRuntimeExports.jsx( "feColorMatrix", { in: "SourceAlpha", result: "hardAlpha", values: "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" } ), /* @__PURE__ */ jsxRuntimeExports.jsx("feOffset", { dy: "1" }), /* @__PURE__ */ jsxRuntimeExports.jsx("feComposite", { in2: "hardAlpha", operator: "out" }), /* @__PURE__ */ jsxRuntimeExports.jsx("feColorMatrix", { values: "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.25 0" }), /* @__PURE__ */ jsxRuntimeExports.jsx( "feBlend", { in2: "BackgroundImageFix", result: "effect1_dropShadow_21279_44665" } ), /* @__PURE__ */ jsxRuntimeExports.jsx( "feBlend", { in: "SourceGraphic", in2: "effect1_dropShadow_21279_44665", result: "shape" } ) ] } ) }) ] } ) }), /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "video-border" }) ] }), /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "mt-8", children: [ /* @__PURE__ */ jsxRuntimeExports.jsx("h3", { className: "video-title", children: data.data.media.title }), /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "meta-container", children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "meta-row", children: [ /* @__PURE__ */ jsxRuntimeExports.jsxs( "svg", { xmlns: "http://www.w3.org/2000/svg", width: "14", height: "13", fill: "none", viewBox: "0 0 14 13", children: [ /* @__PURE__ */ jsxRuntimeExports.jsxs("g", { clipPath: "url(#ic_list_video_14_svg__a)", children: [ /* @__PURE__ */ jsxRuntimeExports.jsx( "rect", { width: "13", height: "12", x: "0.5", y: "0.5", stroke: "#A0A0A0", rx: "1.9" } ), /* @__PURE__ */ jsxRuntimeExports.jsx( "path", { fill: "#A0A0A0", fillRule: "evenodd", d: "M9.167 6.163a.5.5 0 0 1 0 .8l-2.667 2a.5.5 0 0 1-.8-.4v-4a.5.5 0 0 1 .8-.4z", clipRule: "evenodd" } ) ] }), /* @__PURE__ */ jsxRuntimeExports.jsx("defs", { children: /* @__PURE__ */ jsxRuntimeExports.jsx("clipPath", { id: "ic_list_video_14_svg__a", children: /* @__PURE__ */ jsxRuntimeExports.jsx("path", { fill: "#fff", d: "M0 0h14v13H0z" }) }) }) ] } ), /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "meta-details", children: [ /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "meta-text", children: "영상" }), data.data.media.isFanclubOnly && /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [ /* @__PURE__ */ jsxRuntimeExports.jsx( "svg", { xmlns: "http://www.w3.org/2000/svg", width: "2", height: "3", fill: "none", viewBox: "0 0 2 3", className: "dot", children: /* @__PURE__ */ jsxRuntimeExports.jsx("circle", { cx: "1", cy: "1.5", r: "1", fill: "#A0A0A0" }) } ), /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "fanclub-text", children: "Fanclub Only" }) ] }) ] }) ] }) }) ] }) ] }) }); } function DrmInfo({ data }) { return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "drm-info-container", children: [ /* @__PURE__ */ jsxRuntimeExports.jsxs("p", { children: [ /* @__PURE__ */ jsxRuntimeExports.jsxs( "svg", { xmlns: "http://www.w3.org/2000/svg", width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round", children: [ /* @__PURE__ */ jsxRuntimeExports.jsx("path", { stroke: "none", d: "M0 0h24v24H0z", fill: "none" }), /* @__PURE__ */ jsxRuntimeExports.jsx("path", { d: "M3 12a9 9 0 1 0 18 0a9 9 0 0 0 -18 0" }), /* @__PURE__ */ jsxRuntimeExports.jsx("path", { d: "M12 9h.01" }), /* @__PURE__ */ jsxRuntimeExports.jsx("path", { d: "M11 12h1v4h1" }) ] } ), "This video is DRM-protected and requires manual decryption. Please use the information below to decrypt it yourself." ] }), /* @__PURE__ */ jsxRuntimeExports.jsx("pre", { className: "drm-info", children: JSON.stringify({ drmInfo: data.data.media.vod.drmInfo }, null, 2) }) ] }); } function Media({ mediaId }) { const query = reactQuery.useQuery({ queryKey: getVodPlaybackAreaContextQueryKey(mediaId), queryFn: getVodPlaybackAreaContext }); const [copied, setCopied] = require$$0.useState(false); const handleCopy = async () => { if (query.data) { await navigator.clipboard.writeText( query.data.data.media.vod.dash.playbackUrl ); setCopied(true); setTimeout(() => setCopied(false), 2e3); } }; if (query.error) { return /* @__PURE__ */ jsxRuntimeExports.jsxs(Modal, { children: [ /* @__PURE__ */ jsxRuntimeExports.jsx("h3", { className: "modal-title", children: "Error" }), /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "modal-content", style: { whiteSpace: "pre" }, children: query.error instanceof Error ? query.error.message : String(query.error) }), /* @__PURE__ */ jsxRuntimeExports.jsx("button", { className: "modal-button", onClick: () => navigation == null ? void 0 : navigation.back(), children: "Back" }) ] }); } return /* @__PURE__ */ jsxRuntimeExports.jsxs(Modal, { children: [ /* @__PURE__ */ jsxRuntimeExports.jsx("h3", { className: "modal-title", children: "BerrizDown" }), query.data ? /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [ /* @__PURE__ */ jsxRuntimeExports.jsx(Preview, { data: query.data }), /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "modal-input-container", children: [ /* @__PURE__ */ jsxRuntimeExports.jsx( "input", { type: "text", className: "modal-input", value: query.data.data.media.vod.dash.playbackUrl, readOnly: true } ), /* @__PURE__ */ jsxRuntimeExports.jsx( "button", { className: "copy-button", onClick: handleCopy, title: "Copy URL", children: /* @__PURE__ */ jsxRuntimeExports.jsxs( "svg", { xmlns: "http://www.w3.org/2000/svg", width: "20", height: "20", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round", children: [ /* @__PURE__ */ jsxRuntimeExports.jsx("path", { stroke: "none", d: "M0 0h24v24H0z", fill: "none" }), /* @__PURE__ */ jsxRuntimeExports.jsx("path", { d: "M7 7m0 2.667a2.667 2.667 0 0 1 2.667 -2.667h8.666a2.667 2.667 0 0 1 2.667 2.667v8.666a2.667 2.667 0 0 1 -2.667 2.667h-8.666a2.667 2.667 0 0 1 -2.667 -2.667z" }), /* @__PURE__ */ jsxRuntimeExports.jsx("path", { d: "M4.012 16.737a2.005 2.005 0 0 1 -1.012 -1.737v-10c0 -1.1 .9 -2 2 -2h10c.75 0 1.158 .385 1.5 1" }) ] } ) } ), copied && /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "copied-message", children: "Copied!" }) ] }), query.data.data.media.vod.isDrm && /* @__PURE__ */ jsxRuntimeExports.jsx(DrmInfo, { data: query.data }) ] }) : null, /* @__PURE__ */ jsxRuntimeExports.jsx("button", { className: "modal-button", onClick: () => navigation == null ? void 0 : navigation.back(), children: "Cancel" }) ] }); } function NotLoggedIn() { return /* @__PURE__ */ jsxRuntimeExports.jsxs(Modal, { children: [ /* @__PURE__ */ jsxRuntimeExports.jsx("h3", { className: "modal-title", children: "BerrizDown" }), /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "modal-content", children: "Use after login." }), /* @__PURE__ */ jsxRuntimeExports.jsx("button", { className: "modal-button", onClick: () => navigation == null ? void 0 : navigation.back(), children: "Back" }) ] }); } function App() { const media = useBerrizMedia(); const authStatus = getCookieValue("auth_status") === "authenticated"; return media && media.type === "media/content" ? authStatus ? /* @__PURE__ */ jsxRuntimeExports.jsx(Media, { mediaId: media.id }) : /* @__PURE__ */ jsxRuntimeExports.jsx(NotLoggedIn, {}) : null; } function Root() { return /* @__PURE__ */ jsxRuntimeExports.jsx(reactQuery.QueryClientProvider, { client: queryClient, children: /* @__PURE__ */ jsxRuntimeExports.jsx(App, {}) }); } const injectedStyle = "*{box-sizing:border-box;padding:0;margin:0}h3{margin:0}.modal-wrapper{position:absolute;top:0;left:0;z-index:100;width:100vw;height:100vh;display:flex;align-items:center;justify-content:center}.modal{min-width:400px;max-width:70vw;border-radius:20px;background-color:#2a2a2a;padding:24px;text-align:center;display:flex;flex-direction:column;row-gap:24px}.modal-title{font-size:18px;font-weight:600;line-height:24px;color:#fff}.modal-content{font-size:15px;font-weight:400;line-height:20px;color:#e5e5e5}.modal-button{font-size:15px;font-weight:600;line-height:20px;color:#fff;padding:12px 30px;border:1px solid hsla(0,0%,100%,.22);border-radius:8px;background:none;display:flex;flex:1 1 0%;height:44px;align-items:center;justify-content:center;cursor:pointer;transition:transform .2s cubic-bezier(.4,0,.2,1);transform:scale(1)}.modal-button:active{transform:scale(.95)}.modal-button:disabled{color:#ffffff38;border-color:#ffffff1a}.modal-input{width:700px;max-width:100%;outline:2px solid transparent;outline-offset:2px;background-color:transparent;color:#fafafa;font-size:15px;font-weight:400;line-height:20px;padding:16px 40px 16px 16px;border:1px solid hsla(0,0%,100%,.22);border-radius:8px;flex-grow:1}.modal-input-container{display:flex;align-items:center;position:relative}.copy-button{background:none;border:none;color:#fff;cursor:pointer;padding:0;display:flex;align-items:center;justify-content:center;width:24px;height:24px;position:absolute;right:10px;top:50%;z-index:1;transform:translateY(-50%) scale(1);transition:transform .2s cubic-bezier(.4,0,.2,1)}.copy-button:active{transform:translateY(-50%) scale(.8)}.copied-message{position:absolute;right:40px;top:50%;transform:translateY(-50%);font-size:12px;color:#fff;background-color:#000000b3;padding:2px 5px;border-radius:4px;white-space:nowrap;z-index:2}.debug{font-size:15px;font-weight:400;line-height:20px;color:#e5e5e5;font-family:monospace;text-align:left;line-break:anywhere;-webkit-user-select:text;user-select:text}.drm-info-container{text-align:left}.drm-info-container p{display:inline-flex;align-items:center;margin-bottom:8px;font-size:.75rem;font-weight:400;line-height:1rem;color:#999}.drm-info-container p svg{margin-right:4px}.drm-info{width:700px;max-width:100%;overflow-x:auto;background-color:#202020;padding:16px;border-radius:8px;-webkit-user-select:text;user-select:text}.video-preview{width:100%}.video-preview .video-wrapper{display:flex;width:100%;max-width:707px;flex-direction:column}.video-preview .video-container{position:relative;aspect-ratio:16/9;overflow:hidden;border-radius:12px}.video-preview .object-contain{object-fit:contain}.video-preview .video-overlay{position:absolute;bottom:0;left:0;display:flex;height:60px;width:100%;align-items:flex-end;justify-content:flex-end;padding-left:14px;padding-right:14px;padding-bottom:14px;background:linear-gradient(to top,#00000080,#0000)}.video-preview .duration-text{color:#fff;font-size:13px;font-weight:400;line-height:17px}.video-preview .badge-container{position:absolute;left:10px;top:10px}.video-preview .video-border{border:1px solid hsla(0,0%,100%,.1);position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;border-radius:12px;border-style:solid}.video-preview .mt-8{margin-top:8px}.video-preview .video-title{color:#fafafa;font-size:1rem;font-weight:400;line-height:1.5rem;overflow:hidden;word-break:break-all;text-align:left}.video-preview .meta-container{margin-top:6px;display:flex;flex-direction:column}.video-preview .meta-row{display:flex;align-items:center}.video-preview .meta-details{display:flex;align-items:center;margin-left:6px}.video-preview .meta-text{font-size:.75rem;font-weight:400;line-height:1rem;color:#999}.video-preview .dot{flex-shrink:0;margin-left:4px}.video-preview .fanclub-text{font-size:.75rem;font-weight:400;line-height:1rem;color:#969bf5;flex-shrink:0;margin-left:6px}"; const root = document.createElement("div"); root.id = "berriz-userscript-content-view-root"; document.body.append(root); const rootIntoShadow = document.createElement("div"); rootIntoShadow.id = "shadow-root"; const shadowRoot = root.attachShadow({ mode: "open" }); if (navigator.userAgent.includes("Firefox")) { const styleElement = document.createElement("style"); styleElement.innerHTML = injectedStyle; shadowRoot.appendChild(styleElement); } else { const globalStyleSheet = new CSSStyleSheet(); globalStyleSheet.replaceSync(injectedStyle); shadowRoot.adoptedStyleSheets = [globalStyleSheet]; } shadowRoot.appendChild(rootIntoShadow); clientExports.createRoot(rootIntoShadow).render(/* @__PURE__ */ jsxRuntimeExports.jsx(Root, {})); })(React, ReactDOM, ReactQuery);