@panda-lingo/goldendict 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +691 -0
- package/README.md +50 -0
- package/THIRD_PARTY_NOTICES.md +10 -0
- package/UPGRADING_GOLDENDICT.md +33 -0
- package/dist/assets.d.ts +4 -0
- package/dist/assets.d.ts.map +1 -0
- package/dist/client/dictionary-client.d.ts +18 -0
- package/dist/client/dictionary-client.d.ts.map +1 -0
- package/dist/element/goldendict-view.d.ts +59 -0
- package/dist/element/goldendict-view.d.ts.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +8726 -0
- package/dist/index.js.map +1 -0
- package/dist/renderer/article-document.d.ts +9 -0
- package/dist/renderer/article-document.d.ts.map +1 -0
- package/dist/renderer/article-html.d.ts +5 -0
- package/dist/renderer/article-html.d.ts.map +1 -0
- package/dist/renderer/link-router.d.ts +42 -0
- package/dist/renderer/link-router.d.ts.map +1 -0
- package/dist/renderer/theme.d.ts +7 -0
- package/dist/renderer/theme.d.ts.map +1 -0
- package/dist/styles/fidelity.d.ts +5 -0
- package/dist/styles/fidelity.d.ts.map +1 -0
- package/dist/styles/vendor.generated.d.ts +3 -0
- package/dist/styles/vendor.generated.d.ts.map +1 -0
- package/dist/types.d.ts +107 -0
- package/dist/types.d.ts.map +1 -0
- package/package.json +49 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/client/dictionary-client.ts","../src/assets/icons/arrow.svg?raw","../src/assets/icons/audio.png?url","../src/assets/icons/collapse_article_hovered.svg?raw","../src/assets/icons/collapse_article.svg?raw","../src/assets/icons/collapse_opt.svg?raw","../src/assets/icons/document.png?url","../src/assets/icons/downarrow.svg?raw","../src/assets/icons/expand_article_hovered.svg?raw","../src/assets/icons/expand_article.svg?raw","../src/assets/icons/expand_opt.svg?raw","../src/assets/icons/old-arrow.svg?raw","../src/assets/icons/old-downarrow.svg?raw","../src/assets/icons/playsound.svg?raw","../src/assets/icons/video.svg?raw","../src/assets/icons/warning.svg?raw","../src/assets.ts","../src/styles/vendor.generated.ts","../src/styles/fidelity.ts","../src/renderer/link-router.ts","../src/renderer/article-html.ts","../src/renderer/theme.ts","../src/renderer/article-document.ts","../src/types.ts","../src/element/goldendict-view.ts","../src/index.ts"],"sourcesContent":["import type {\n DictionaryClientOptions,\n DictionarySummary,\n LoadDictionaryRequest,\n LoadDictionaryResponse,\n LookupOptions,\n LookupResponse,\n} from \"../types\";\n\nexport class DictionaryApiError extends Error {\n readonly status: number;\n readonly body: unknown;\n\n constructor(message: string, status: number, body?: unknown) {\n super(message);\n this.name = \"DictionaryApiError\";\n this.status = status;\n this.body = body;\n }\n}\n\ntype DictionaryLike = Partial<DictionarySummary> & {\n dictionaryId?: string;\n dictionaryName?: string;\n};\n\nfunction normalizeBaseUrl(baseUrl: string): string {\n const normalized = baseUrl.trim() || \"/api/v1\";\n return normalized.length > 1 ? normalized.replace(/\\/+$/, \"\") : normalized;\n}\n\nfunction normalizeDictionary(value: DictionaryLike): DictionarySummary {\n const id = value.id ?? value.dictionaryId;\n const name = value.name ?? value.dictionaryName;\n if (!id || !name) {\n throw new TypeError(\"Dictionary response is missing id or name\");\n }\n return {\n id,\n name,\n format: value.format ?? \"unknown\",\n ...(value.sourceLanguage\n ? { sourceLanguage: value.sourceLanguage }\n : {}),\n ...(value.targetLanguage\n ? { targetLanguage: value.targetLanguage }\n : {}),\n ...(value.path ? { path: value.path } : {}),\n ...(value.iconUrl ? { iconUrl: value.iconUrl } : {}),\n ...(value.resourceBaseUrl\n ? { resourceBaseUrl: value.resourceBaseUrl }\n : {}),\n ...(value.wordCount !== undefined ? { wordCount: value.wordCount } : {}),\n };\n}\n\nasync function readResponseBody(response: Response): Promise<unknown> {\n const text = await response.text();\n if (!text) {\n return undefined;\n }\n try {\n return JSON.parse(text) as unknown;\n } catch {\n return text;\n }\n}\n\nexport class DictionaryClient {\n readonly baseUrl: string;\n private readonly fetchImpl: typeof globalThis.fetch;\n private readonly headers: Readonly<Record<string, string>>;\n private readonly credentials: RequestCredentials;\n\n constructor(options: DictionaryClientOptions = {}) {\n this.baseUrl = normalizeBaseUrl(options.baseUrl ?? \"/api/v1\");\n const fetchImpl = options.fetch ?? globalThis.fetch;\n if (!fetchImpl) {\n throw new TypeError(\"A fetch implementation is required\");\n }\n this.fetchImpl = fetchImpl.bind(globalThis);\n this.headers = options.headers ?? {};\n this.credentials = options.credentials ?? \"same-origin\";\n }\n\n async listDictionaries(signal?: AbortSignal): Promise<DictionarySummary[]> {\n const body = await this.request<\n DictionaryLike[] | { dictionaries: DictionaryLike[] }\n >(\"/dictionaries\", { signal });\n const dictionaries = Array.isArray(body) ? body : body.dictionaries;\n return dictionaries.map(normalizeDictionary);\n }\n\n async loadDictionary(\n input: LoadDictionaryRequest,\n signal?: AbortSignal,\n ): Promise<LoadDictionaryResponse> {\n if (!input.path.trim()) {\n throw new TypeError(\"Dictionary path must not be empty\");\n }\n const body = await this.request<\n | DictionaryLike\n | {\n dictionary: DictionaryLike;\n loaded?: boolean;\n message?: string;\n }\n >(\"/dictionaries/load\", {\n method: \"POST\",\n signal,\n body: JSON.stringify({\n path: input.path,\n ...(input.name?.trim() ? { name: input.name.trim() } : {}),\n }),\n });\n if (\"dictionary\" in body) {\n return {\n dictionary: normalizeDictionary(body.dictionary),\n loaded: body.loaded ?? true,\n ...(body.message ? { message: body.message } : {}),\n };\n }\n return { dictionary: normalizeDictionary(body), loaded: true };\n }\n\n async lookup(word: string, options: LookupOptions = {}): Promise<LookupResponse> {\n const normalizedWord = word.trim();\n if (!normalizedWord) {\n throw new TypeError(\"Lookup word must not be empty\");\n }\n const query = new URLSearchParams();\n if (options.dictionaryIds?.length) {\n query.set(\"dictionary_ids\", options.dictionaryIds.join(\",\"));\n }\n const suffix = query.size > 0 ? `?${query.toString()}` : \"\";\n const response = await this.request<LookupResponse>(\n `/lookup/${encodeURIComponent(normalizedWord)}${suffix}`,\n { signal: options.signal },\n );\n return {\n word: response.word,\n articles: response.articles ?? [],\n suggestions: response.suggestions ?? [],\n lookupTimeMs: response.lookupTimeMs ?? 0,\n };\n }\n\n private async request<T>(path: string, init: RequestInit = {}): Promise<T> {\n const response = await this.fetchImpl(`${this.baseUrl}${path}`, {\n ...init,\n credentials: this.credentials,\n headers: {\n Accept: \"application/json\",\n ...(init.body ? { \"Content-Type\": \"application/json\" } : {}),\n ...this.headers,\n ...init.headers,\n },\n });\n const body = await readResponseBody(response);\n if (!response.ok) {\n let serverMessage = response.statusText;\n if (typeof body === \"object\" && body) {\n if (\"message\" in body) {\n serverMessage = String((body as { message: unknown }).message);\n } else if (\n \"error\" in body &&\n typeof (body as { error: unknown }).error === \"object\" &&\n (body as { error: object | null }).error &&\n \"message\" in (body as { error: object }).error\n ) {\n serverMessage = String(\n (body as { error: { message: unknown } }).error.message,\n );\n }\n }\n throw new DictionaryApiError(\n serverMessage || `Dictionary request failed (${response.status})`,\n response.status,\n body,\n );\n }\n return body as T;\n }\n}\n","export default \"<?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\" standalone=\\\"no\\\"?>\\n<!-- Created with Inkscape (http://www.inkscape.org/) -->\\n\\n<svg\\n version=\\\"1.1\\\"\\n id=\\\"svg1\\\"\\n width=\\\"18\\\"\\n height=\\\"18\\\"\\n viewBox=\\\"0 0 18 18\\\"\\n sodipodi:docname=\\\"arrow.svg\\\"\\n inkscape:version=\\\"1.3.2 (091e20e, 2023-11-25, custom)\\\"\\n xmlns:inkscape=\\\"http://www.inkscape.org/namespaces/inkscape\\\"\\n xmlns:sodipodi=\\\"http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd\\\"\\n xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n xmlns:svg=\\\"http://www.w3.org/2000/svg\\\">\\n <defs\\n id=\\\"defs1\\\" />\\n <sodipodi:namedview\\n id=\\\"namedview1\\\"\\n pagecolor=\\\"#ffffff\\\"\\n bordercolor=\\\"#000000\\\"\\n borderopacity=\\\"0.25\\\"\\n inkscape:showpageshadow=\\\"2\\\"\\n inkscape:pageopacity=\\\"0.0\\\"\\n inkscape:pagecheckerboard=\\\"0\\\"\\n inkscape:deskcolor=\\\"#d1d1d1\\\"\\n inkscape:zoom=\\\"22.805556\\\"\\n inkscape:cx=\\\"4.7576126\\\"\\n inkscape:cy=\\\"7.5200973\\\"\\n inkscape:window-width=\\\"1920\\\"\\n inkscape:window-height=\\\"1017\\\"\\n inkscape:window-x=\\\"-8\\\"\\n inkscape:window-y=\\\"-8\\\"\\n inkscape:window-maximized=\\\"1\\\"\\n inkscape:current-layer=\\\"g1\\\" />\\n <g\\n inkscape:groupmode=\\\"layer\\\"\\n inkscape:label=\\\"Image\\\"\\n id=\\\"g1\\\">\\n <path\\n id=\\\"rect2\\\"\\n style=\\\"fill:#00add5;fill-opacity:0.909804;stroke-width:0.731;stroke-dasharray:none\\\"\\n d=\\\"m 13.534141,9.055421 -9.0000001,9 1e-7,-18.00000106 z\\\"\\n sodipodi:nodetypes=\\\"cccc\\\" />\\n </g>\\n</svg>\\n\"","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAQAAAC1+jfqAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAAmJLR0QA/4ePzL8AAAAHdElNRQfmAxMKDTHgIis/AAAAwUlEQVQoz33RsUtCcRTF8U+vJ8/RCAKHdEoc+isachBcMhranQQXt/YIGmxrLAgRac/JFsP+jVqaHVvkuTy0V/08dzzfC/eew2+1FWxRz1KCG42/ZuxeKpWgaeYub++ZStcAsRcddgwdgCPVDC1qOHat7F2dz2xvMwluXeDBWQgomeDSIAp8s1DEh8PIdqUhoOQbFV8h4MojTsxjb9mbNZW13bIwtu9U72dQr7mgeNIPR10z9CwKlzXStfv/eef5uldwrDr7rieveQAAACV0RVh0ZGF0ZTpjcmVhdGUAMjAyMi0wMy0xOVQxMDoxMzo0OSswMDowMH0jItoAAAAldEVYdGRhdGU6bW9kaWZ5ADIwMjItMDMtMTlUMTA6MTM6NDkrMDA6MDAMfppmAAAAAElFTkSuQmCC\"","export default \"<?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\" standalone=\\\"no\\\"?>\\n<!-- Created with Inkscape (http://www.inkscape.org/) -->\\n\\n<svg\\n version=\\\"1.1\\\"\\n id=\\\"svg1\\\"\\n width=\\\"18\\\"\\n height=\\\"18\\\"\\n viewBox=\\\"0 0 18 18\\\"\\n sodipodi:docname=\\\"collapse_article_hovered.svg\\\"\\n inkscape:version=\\\"1.3.2 (091e20e, 2023-11-25, custom)\\\"\\n xml:space=\\\"preserve\\\"\\n xmlns:inkscape=\\\"http://www.inkscape.org/namespaces/inkscape\\\"\\n xmlns:sodipodi=\\\"http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd\\\"\\n xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n xmlns:svg=\\\"http://www.w3.org/2000/svg\\\"><defs\\n id=\\\"defs1\\\" /><sodipodi:namedview\\n id=\\\"namedview1\\\"\\n pagecolor=\\\"#ffffff\\\"\\n bordercolor=\\\"#000000\\\"\\n borderopacity=\\\"0.25\\\"\\n inkscape:showpageshadow=\\\"2\\\"\\n inkscape:pageopacity=\\\"0.0\\\"\\n inkscape:pagecheckerboard=\\\"0\\\"\\n inkscape:deskcolor=\\\"#d1d1d1\\\"\\n inkscape:zoom=\\\"16.125963\\\"\\n inkscape:cx=\\\"-6.0461505\\\"\\n inkscape:cy=\\\"11.069106\\\"\\n inkscape:window-width=\\\"1920\\\"\\n inkscape:window-height=\\\"1017\\\"\\n inkscape:window-x=\\\"-8\\\"\\n inkscape:window-y=\\\"-8\\\"\\n inkscape:window-maximized=\\\"1\\\"\\n inkscape:current-layer=\\\"g1\\\" /><g\\n inkscape:groupmode=\\\"layer\\\"\\n inkscape:label=\\\"Image\\\"\\n id=\\\"g1\\\"\\n transform=\\\"translate(-0.75792199,-0.83371425)\\\"><path\\n style=\\\"color:#000000;fill:#377bdc;fill-opacity:1;stroke-width:0.999999;-inkscape-stroke:none\\\"\\n d=\\\"m 9.8109427,14.803704 8.9999993,-8.9999986 -17.9999995,2e-7 z m 0,-4.225584 -4.7744158,-4.7744144 9.5488291,-2e-7 z\\\"\\n id=\\\"rect1\\\"\\n sodipodi:nodetypes=\\\"cccccccc\\\" /></g></svg>\\n\"","export default \"<?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\" standalone=\\\"no\\\"?>\\n<!-- Created with Inkscape (http://www.inkscape.org/) -->\\n\\n<svg\\n version=\\\"1.1\\\"\\n id=\\\"svg1\\\"\\n width=\\\"18\\\"\\n height=\\\"18\\\"\\n viewBox=\\\"0 0 18 18\\\"\\n sodipodi:docname=\\\"collapse_article.svg\\\"\\n inkscape:version=\\\"1.3.2 (091e20e, 2023-11-25, custom)\\\"\\n xmlns:inkscape=\\\"http://www.inkscape.org/namespaces/inkscape\\\"\\n xmlns:sodipodi=\\\"http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd\\\"\\n xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n xmlns:svg=\\\"http://www.w3.org/2000/svg\\\">\\n <defs\\n id=\\\"defs1\\\" />\\n <sodipodi:namedview\\n id=\\\"namedview1\\\"\\n pagecolor=\\\"#ffffff\\\"\\n bordercolor=\\\"#000000\\\"\\n borderopacity=\\\"0.25\\\"\\n inkscape:showpageshadow=\\\"2\\\"\\n inkscape:pageopacity=\\\"0.0\\\"\\n inkscape:pagecheckerboard=\\\"0\\\"\\n inkscape:deskcolor=\\\"#d1d1d1\\\"\\n inkscape:zoom=\\\"16.125963\\\"\\n inkscape:cx=\\\"-6.0461505\\\"\\n inkscape:cy=\\\"11.069106\\\"\\n inkscape:window-width=\\\"1920\\\"\\n inkscape:window-height=\\\"1017\\\"\\n inkscape:window-x=\\\"-8\\\"\\n inkscape:window-y=\\\"-8\\\"\\n inkscape:window-maximized=\\\"1\\\"\\n inkscape:current-layer=\\\"g1\\\" />\\n <g\\n inkscape:groupmode=\\\"layer\\\"\\n inkscape:label=\\\"Image\\\"\\n id=\\\"g1\\\"\\n transform=\\\"translate(-0.75792199,-0.83371425)\\\">\\n <path\\n style=\\\"color:#000000;fill:#aaaaaa;fill-opacity:1;stroke-width:0.999999;-inkscape-stroke:none\\\"\\n d=\\\"m 9.8109427,14.803704 8.9999993,-8.9999986 -17.9999995,2e-7 z m 0,-4.225584 -4.7744158,-4.7744144 9.5488291,-2e-7 z\\\"\\n id=\\\"rect1\\\"\\n sodipodi:nodetypes=\\\"cccccccc\\\" />\\n </g>\\n</svg>\\n\"","export default \"<?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\" standalone=\\\"no\\\"?>\\n<svg\\n width=\\\"24.000002\\\"\\n height=\\\"24\\\"\\n viewBox=\\\"0 0 24.000002 24.000001\\\"\\n fill=\\\"none\\\"\\n version=\\\"1.1\\\"\\n id=\\\"svg4\\\"\\n sodipodi:docname=\\\"collapse_opt.svg\\\"\\n inkscape:version=\\\"1.4.2 (f4327f4, 2025-05-13)\\\"\\n xml:space=\\\"preserve\\\"\\n xmlns:inkscape=\\\"http://www.inkscape.org/namespaces/inkscape\\\"\\n xmlns:sodipodi=\\\"http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd\\\"\\n xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n xmlns:svg=\\\"http://www.w3.org/2000/svg\\\"><defs\\n id=\\\"defs4\\\" /><sodipodi:namedview\\n id=\\\"namedview4\\\"\\n pagecolor=\\\"#ffffff\\\"\\n bordercolor=\\\"#000000\\\"\\n borderopacity=\\\"0.25\\\"\\n inkscape:showpageshadow=\\\"2\\\"\\n inkscape:pageopacity=\\\"0.0\\\"\\n inkscape:pagecheckerboard=\\\"0\\\"\\n inkscape:deskcolor=\\\"#d1d1d1\\\"\\n inkscape:zoom=\\\"14.481547\\\"\\n inkscape:cx=\\\"24.859223\\\"\\n inkscape:cy=\\\"15.571541\\\"\\n inkscape:window-width=\\\"1920\\\"\\n inkscape:window-height=\\\"1017\\\"\\n inkscape:window-x=\\\"-8\\\"\\n inkscape:window-y=\\\"-8\\\"\\n inkscape:window-maximized=\\\"1\\\"\\n inkscape:current-layer=\\\"svg4\\\"\\n labelstyle=\\\"below\\\"\\n inkscape:clip-to-page=\\\"true\\\"\\n showgrid=\\\"true\\\"\\n showguides=\\\"false\\\" /><g\\n id=\\\"g1\\\"><g\\n id=\\\"g5-6\\\"\\n transform=\\\"matrix(0.11039335,0,0,-0.11707347,0.4086992,27.793656)\\\"\\n style=\\\"fill:#22a6f2;fill-opacity:1\\\"><path\\n id=\\\"rect4-1\\\"\\n style=\\\"fill:#22a6f2;fill-opacity:1;stroke-width:9.34708;stroke-linecap:square;paint-order:stroke fill markers\\\"\\n d=\\\"M 148.90454,73.282726 165.55249,89.616561 105.57669,150.74574 88.928745,134.4119 Z M 44.44751,90.769942 60.781345,74.121994 121.91053,134.0978 105.57669,150.74574 Z\\\" /><path\\n id=\\\"rect5-42\\\"\\n style=\\\"fill:#22a6f2;fill-opacity:1;stroke-width:15.0024;stroke-linecap:square;paint-order:stroke fill markers\\\"\\n d=\\\"m 82.22393,47.374233 h 45.55214 V 127.91043 H 82.22393 Z\\\" /></g><rect\\n style=\\\"fill:#22a6f2;stroke:none;stroke-width:68.9999;stroke-linecap:square;stroke-dasharray:none;paint-order:stroke fill markers\\\"\\n id=\\\"rect1\\\"\\n width=\\\"23.961531\\\"\\n height=\\\"1.9334952\\\"\\n x=\\\"0.019235611\\\"\\n y=\\\"22.097088\\\"\\n ry=\\\"0\\\" /></g><rect\\n style=\\\"fill:#103d6d;fill-opacity:1;stroke-width:67.695;stroke-linecap:square;paint-order:stroke fill markers\\\"\\n id=\\\"rect2\\\"\\n width=\\\"19.749271\\\"\\n height=\\\"1.6572815\\\"\\n x=\\\"-0.069053397\\\"\\n y=\\\"1.1048543\\\"\\n ry=\\\"0.64957041\\\" /><rect\\n style=\\\"fill:#777777;fill-opacity:1;stroke-width:48.6973;stroke-linecap:square;paint-order:stroke fill markers\\\"\\n id=\\\"rect3\\\"\\n width=\\\"10.219903\\\"\\n height=\\\"1.6572815\\\"\\n x=\\\"1.1215118e-09\\\"\\n y=\\\"4.9718442\\\"\\n ry=\\\"0.64957041\\\" /></svg>\\n\"","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAATrAAAE6wHYKlsNAAAAGXRFWHRTb2Z0d2FyZQB3d3cuaW5rc2NhcGUub3Jnm+48GgAAAcRJREFUOI2lkztvE0EQgL8Z7/rB2T5fCixhQQc00FAjJCRkiTYV/JH0adIgfgJVGn4CKRBUSIjCHYiOBimK7KA4ORw/dofC3Ck2dhpGGu1r5pvZmV0xM/5HXDEZDAbf2u12BkiM0UIImBlmRoyxHBeLBaPRaNzv9++tAJIkyVS1673HzBCRUtfFzEo/d/VAVRERzvf2uDw6AqB6eMhlt1va9Hq9FWgJiDEiIqgqcTwmnp4CUPeearu9EmRjDYp7qiqVNEV3dgCYx8hlniMimBlZlm0GFN0QERoHB7j9/bIGVUDiHCrVfzLQqwDvPSLCZDIhz3MuLi6YTye4eY58fkOnUbkeUERMkoRWq0WaptRqDaYfXvPr3StmP75cX4PZbIb3HoDx6TmttImveZoPn9N+0KfWvbsdYGY45xARvn76zvu3H8m6GS/2dpnefLRsb4Bb2wAhBJxbLoc/hwCcDc9QqVCvuzLy+uPa2IUnu4+p36hz5/5tGkmdxWKBc45Op0MIYXsNClAzTXj28imquqKFzUbA8fHxbzMbi0glhKBmpsuEREQkqmpU1Sgi8eTkJC/8ZNN3FhEHNIHG360pkJvZdN32D0SOwDehr1HXAAAAAElFTkSuQmCC\"","export default \"<?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\" standalone=\\\"no\\\"?>\\n<!-- Created with Inkscape (http://www.inkscape.org/) -->\\n\\n<svg\\n version=\\\"1.1\\\"\\n id=\\\"svg1\\\"\\n width=\\\"18\\\"\\n height=\\\"18\\\"\\n viewBox=\\\"0 0 18 18\\\"\\n sodipodi:docname=\\\"downarrow.svg\\\"\\n inkscape:version=\\\"1.3.2 (091e20e, 2023-11-25, custom)\\\"\\n xmlns:inkscape=\\\"http://www.inkscape.org/namespaces/inkscape\\\"\\n xmlns:sodipodi=\\\"http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd\\\"\\n xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n xmlns:svg=\\\"http://www.w3.org/2000/svg\\\">\\n <defs\\n id=\\\"defs1\\\" />\\n <sodipodi:namedview\\n id=\\\"namedview1\\\"\\n pagecolor=\\\"#ffffff\\\"\\n bordercolor=\\\"#000000\\\"\\n borderopacity=\\\"0.25\\\"\\n inkscape:showpageshadow=\\\"2\\\"\\n inkscape:pageopacity=\\\"0.0\\\"\\n inkscape:pagecheckerboard=\\\"0\\\"\\n inkscape:deskcolor=\\\"#d1d1d1\\\"\\n inkscape:zoom=\\\"22.805556\\\"\\n inkscape:cx=\\\"4.7576126\\\"\\n inkscape:cy=\\\"7.5200973\\\"\\n inkscape:window-width=\\\"1920\\\"\\n inkscape:window-height=\\\"1017\\\"\\n inkscape:window-x=\\\"-8\\\"\\n inkscape:window-y=\\\"-8\\\"\\n inkscape:window-maximized=\\\"1\\\"\\n inkscape:current-layer=\\\"g1\\\" />\\n <g\\n inkscape:groupmode=\\\"layer\\\"\\n inkscape:label=\\\"Image\\\"\\n id=\\\"g1\\\">\\n <path\\n id=\\\"rect2\\\"\\n style=\\\"fill:#00add5;fill-opacity:0.909804;stroke-width:0.731;stroke-dasharray:none\\\"\\n d=\\\"m 9.034141,14.503045 -9.00000032,-8.9999998 18.00000032,1e-7 z\\\"\\n sodipodi:nodetypes=\\\"cccc\\\" />\\n </g>\\n</svg>\\n\"","export default \"<?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\" standalone=\\\"no\\\"?>\\n<!-- Created with Inkscape (http://www.inkscape.org/) -->\\n\\n<svg\\n version=\\\"1.1\\\"\\n id=\\\"svg1\\\"\\n width=\\\"18\\\"\\n height=\\\"18\\\"\\n viewBox=\\\"0 0 18 18\\\"\\n sodipodi:docname=\\\"expand_article_hovered.svg\\\"\\n inkscape:version=\\\"1.3.2 (091e20e, 2023-11-25, custom)\\\"\\n xml:space=\\\"preserve\\\"\\n xmlns:inkscape=\\\"http://www.inkscape.org/namespaces/inkscape\\\"\\n xmlns:sodipodi=\\\"http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd\\\"\\n xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n xmlns:svg=\\\"http://www.w3.org/2000/svg\\\"><defs\\n id=\\\"defs1\\\" /><sodipodi:namedview\\n id=\\\"namedview1\\\"\\n pagecolor=\\\"#ffffff\\\"\\n bordercolor=\\\"#000000\\\"\\n borderopacity=\\\"0.25\\\"\\n inkscape:showpageshadow=\\\"2\\\"\\n inkscape:pageopacity=\\\"0.0\\\"\\n inkscape:pagecheckerboard=\\\"0\\\"\\n inkscape:deskcolor=\\\"#d1d1d1\\\"\\n inkscape:zoom=\\\"16.125963\\\"\\n inkscape:cx=\\\"-6.0461505\\\"\\n inkscape:cy=\\\"11.069106\\\"\\n inkscape:window-width=\\\"1920\\\"\\n inkscape:window-height=\\\"1017\\\"\\n inkscape:window-x=\\\"-8\\\"\\n inkscape:window-y=\\\"-8\\\"\\n inkscape:window-maximized=\\\"1\\\"\\n inkscape:current-layer=\\\"g1\\\" /><g\\n inkscape:groupmode=\\\"layer\\\"\\n inkscape:label=\\\"Image\\\"\\n id=\\\"g1\\\"\\n transform=\\\"translate(-0.75792199,-0.83371425)\\\"><path\\n style=\\\"color:#000000;fill:#377bdc;fill-opacity:1;stroke-width:0.999999;-inkscape-stroke:none\\\"\\n d=\\\"m 14.310942,9.9316324 -8.9999991,-8.9999982 2e-7,17.9999978 z m -4.225584,0 -4.7744149,4.7744156 -2e-7,-9.5488279 z\\\"\\n id=\\\"rect1\\\"\\n sodipodi:nodetypes=\\\"cccccccc\\\" /></g></svg>\\n\"","export default \"<?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\" standalone=\\\"no\\\"?>\\n<!-- Created with Inkscape (http://www.inkscape.org/) -->\\n\\n<svg\\n version=\\\"1.1\\\"\\n id=\\\"svg1\\\"\\n width=\\\"18\\\"\\n height=\\\"18\\\"\\n viewBox=\\\"0 0 18 18\\\"\\n sodipodi:docname=\\\"expand_article.svg\\\"\\n inkscape:version=\\\"1.3.2 (091e20e, 2023-11-25, custom)\\\"\\n xmlns:inkscape=\\\"http://www.inkscape.org/namespaces/inkscape\\\"\\n xmlns:sodipodi=\\\"http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd\\\"\\n xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n xmlns:svg=\\\"http://www.w3.org/2000/svg\\\">\\n <defs\\n id=\\\"defs1\\\" />\\n <sodipodi:namedview\\n id=\\\"namedview1\\\"\\n pagecolor=\\\"#ffffff\\\"\\n bordercolor=\\\"#000000\\\"\\n borderopacity=\\\"0.25\\\"\\n inkscape:showpageshadow=\\\"2\\\"\\n inkscape:pageopacity=\\\"0.0\\\"\\n inkscape:pagecheckerboard=\\\"0\\\"\\n inkscape:deskcolor=\\\"#d1d1d1\\\"\\n inkscape:zoom=\\\"16.125963\\\"\\n inkscape:cx=\\\"-5.9841387\\\"\\n inkscape:cy=\\\"11.007095\\\"\\n inkscape:window-width=\\\"1920\\\"\\n inkscape:window-height=\\\"1017\\\"\\n inkscape:window-x=\\\"-8\\\"\\n inkscape:window-y=\\\"-8\\\"\\n inkscape:window-maximized=\\\"1\\\"\\n inkscape:current-layer=\\\"g1\\\" />\\n <g\\n inkscape:groupmode=\\\"layer\\\"\\n inkscape:label=\\\"Image\\\"\\n id=\\\"g1\\\"\\n transform=\\\"translate(-0.75792199,-0.83371425)\\\">\\n <path\\n style=\\\"color:#000000;fill:#aaaaaa;fill-opacity:1;stroke-width:0.999999;-inkscape-stroke:none\\\"\\n d=\\\"m 14.310942,9.9316324 -8.9999991,-8.9999982 2e-7,17.9999978 z m -4.225584,0 -4.7744149,4.7744156 -2e-7,-9.5488279 z\\\"\\n id=\\\"rect1\\\"\\n sodipodi:nodetypes=\\\"cccccccc\\\" />\\n </g>\\n</svg>\\n\"","export default \"<?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\" standalone=\\\"no\\\"?>\\n<svg\\n width=\\\"24.000002\\\"\\n height=\\\"24\\\"\\n viewBox=\\\"0 0 24.000002 24.000001\\\"\\n fill=\\\"none\\\"\\n version=\\\"1.1\\\"\\n id=\\\"svg4\\\"\\n sodipodi:docname=\\\"expand_opt.svg\\\"\\n inkscape:version=\\\"1.4.2 (f4327f4, 2025-05-13)\\\"\\n xml:space=\\\"preserve\\\"\\n xmlns:inkscape=\\\"http://www.inkscape.org/namespaces/inkscape\\\"\\n xmlns:sodipodi=\\\"http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd\\\"\\n xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n xmlns:svg=\\\"http://www.w3.org/2000/svg\\\"><defs\\n id=\\\"defs4\\\" /><sodipodi:namedview\\n id=\\\"namedview4\\\"\\n pagecolor=\\\"#ffffff\\\"\\n bordercolor=\\\"#000000\\\"\\n borderopacity=\\\"0.25\\\"\\n inkscape:showpageshadow=\\\"2\\\"\\n inkscape:pageopacity=\\\"0.0\\\"\\n inkscape:pagecheckerboard=\\\"0\\\"\\n inkscape:deskcolor=\\\"#d1d1d1\\\"\\n inkscape:zoom=\\\"14.481547\\\"\\n inkscape:cx=\\\"24.859223\\\"\\n inkscape:cy=\\\"15.571541\\\"\\n inkscape:window-width=\\\"1920\\\"\\n inkscape:window-height=\\\"1017\\\"\\n inkscape:window-x=\\\"-8\\\"\\n inkscape:window-y=\\\"-8\\\"\\n inkscape:window-maximized=\\\"1\\\"\\n inkscape:current-layer=\\\"svg4\\\"\\n labelstyle=\\\"below\\\"\\n inkscape:clip-to-page=\\\"true\\\"\\n showgrid=\\\"true\\\"\\n showguides=\\\"false\\\" /><g\\n id=\\\"g1\\\"\\n transform=\\\"matrix(1,0,0,-1,0,34.175912)\\\"><g\\n id=\\\"g5-6\\\"\\n transform=\\\"matrix(0.11039335,0,0,-0.11707347,0.4086992,27.793656)\\\"\\n style=\\\"fill:#22a6f2;fill-opacity:1\\\"><path\\n id=\\\"rect4-1\\\"\\n style=\\\"fill:#22a6f2;fill-opacity:1;stroke-width:9.34708;stroke-linecap:square;paint-order:stroke fill markers\\\"\\n d=\\\"M 148.90454,73.282726 165.55249,89.616561 105.57669,150.74574 88.928745,134.4119 Z M 44.44751,90.769942 60.781345,74.121994 121.91053,134.0978 105.57669,150.74574 Z\\\" /><path\\n id=\\\"rect5-42\\\"\\n style=\\\"fill:#22a6f2;fill-opacity:1;stroke-width:15.0024;stroke-linecap:square;paint-order:stroke fill markers\\\"\\n d=\\\"m 82.22393,47.374233 h 45.55214 V 127.91043 H 82.22393 Z\\\" /></g><rect\\n style=\\\"fill:#22a6f2;stroke:none;stroke-width:68.9999;stroke-linecap:square;stroke-dasharray:none;paint-order:stroke fill markers\\\"\\n id=\\\"rect1\\\"\\n width=\\\"23.961531\\\"\\n height=\\\"1.9334952\\\"\\n x=\\\"0.019235611\\\"\\n y=\\\"22.097088\\\"\\n ry=\\\"0\\\" /></g><rect\\n style=\\\"fill:#103d6d;fill-opacity:1;stroke-width:67.695;stroke-linecap:square;paint-order:stroke fill markers\\\"\\n id=\\\"rect2\\\"\\n width=\\\"19.749271\\\"\\n height=\\\"1.6572815\\\"\\n x=\\\"-0.069053397\\\"\\n y=\\\"1.1048543\\\"\\n ry=\\\"0.64957041\\\" /><rect\\n style=\\\"fill:#777777;fill-opacity:1;stroke-width:48.6973;stroke-linecap:square;paint-order:stroke fill markers\\\"\\n id=\\\"rect3\\\"\\n width=\\\"10.219903\\\"\\n height=\\\"1.6572815\\\"\\n x=\\\"1.1215118e-09\\\"\\n y=\\\"4.9718442\\\"\\n ry=\\\"0.64957041\\\" /></svg>\\n\"","export default \"<?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\" standalone=\\\"no\\\"?>\\n<!-- Created with Inkscape (http://www.inkscape.org/) -->\\n\\n<svg\\n width=\\\"32\\\"\\n height=\\\"32\\\"\\n version=\\\"1.1\\\"\\n viewBox=\\\"0 0 32 32\\\"\\n id=\\\"svg2\\\"\\n sodipodi:docname=\\\"old-arrow.svg\\\"\\n inkscape:version=\\\"1.4.3 (0d15f75, 2025-12-25)\\\"\\n xmlns:inkscape=\\\"http://www.inkscape.org/namespaces/inkscape\\\"\\n xmlns:sodipodi=\\\"http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd\\\"\\n xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n xmlns:svg=\\\"http://www.w3.org/2000/svg\\\">\\n <sodipodi:namedview\\n id=\\\"namedview2\\\"\\n pagecolor=\\\"#ffffff\\\"\\n bordercolor=\\\"#666666\\\"\\n borderopacity=\\\"1.0\\\"\\n inkscape:showpageshadow=\\\"2\\\"\\n inkscape:pageopacity=\\\"0.0\\\"\\n inkscape:pagecheckerboard=\\\"0\\\"\\n inkscape:deskcolor=\\\"#d1d1d1\\\"\\n inkscape:zoom=\\\"5.5067568\\\"\\n inkscape:cx=\\\"-40.858896\\\"\\n inkscape:cy=\\\"24.42454\\\"\\n inkscape:window-width=\\\"1920\\\"\\n inkscape:window-height=\\\"1017\\\"\\n inkscape:window-x=\\\"-8\\\"\\n inkscape:window-y=\\\"-8\\\"\\n inkscape:window-maximized=\\\"1\\\"\\n inkscape:current-layer=\\\"svg2\\\" />\\n <defs\\n id=\\\"defs2\\\">\\n <radialGradient\\n id=\\\"radialGradient2\\\"\\n cx=\\\"9.5948\\\"\\n cy=\\\"18.870001\\\"\\n r=\\\"13.438\\\"\\n gradientTransform=\\\"matrix(0.26876483,-1.4464688,1.7311025,0.22498861,-23.017325,29.616965)\\\"\\n gradientUnits=\\\"userSpaceOnUse\\\">\\n <stop\\n stop-color=\\\"#5ed79f\\\"\\n offset=\\\"0\\\"\\n id=\\\"stop1\\\" />\\n <stop\\n stop-color=\\\"#2e715f\\\"\\n offset=\\\"1\\\"\\n id=\\\"stop2\\\" />\\n </radialGradient>\\n </defs>\\n <path\\n d=\\\"m 8.655126,28.285144 1e-6,-24.570288 14.689747,12.285585 z\\\"\\n fill=\\\"url(#radialGradient2)\\\"\\n fill-rule=\\\"evenodd\\\"\\n stroke-width=\\\"3.7795\\\"\\n id=\\\"path2\\\"\\n style=\\\"fill:url(#radialGradient2)\\\" />\\n</svg>\\n\"","export default \"<?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"?>\\n<!-- Created with Inkscape (http://www.inkscape.org/) -->\\n<svg width=\\\"32\\\" height=\\\"32\\\" version=\\\"1.1\\\" viewBox=\\\"0 0 32 32\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\">\\n <defs>\\n <radialGradient id=\\\"radialGradient2\\\" cx=\\\"9.5948\\\" cy=\\\"18.87\\\" r=\\\"13.438\\\" gradientTransform=\\\"matrix(1.4465 .26876 -.22499 1.7311 2.383 -23.017)\\\" gradientUnits=\\\"userSpaceOnUse\\\">\\n <stop stop-color=\\\"#5ed79f\\\" offset=\\\"0\\\"/>\\n <stop stop-color=\\\"#2e715f\\\" offset=\\\"1\\\"/>\\n </radialGradient>\\n </defs>\\n <path d=\\\"m3.7149 8.6551 24.57 1e-6 -12.286 14.69z\\\" fill=\\\"url(#radialGradient2)\\\" fill-rule=\\\"evenodd\\\" stroke-width=\\\"3.7795\\\"/>\\n</svg>\\n\"","export default \"<?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\" standalone=\\\"no\\\"?>\\n<svg\\n width=\\\"23.02533\\\"\\n height=\\\"24\\\"\\n viewBox=\\\"0 0 23.02533 24\\\"\\n cursor=\\\"pointer\\\"\\n version=\\\"1.1\\\"\\n id=\\\"svg4\\\"\\n sodipodi:docname=\\\"playsound.svg\\\"\\n inkscape:version=\\\"1.4.2 (f4327f4, 2025-05-13)\\\"\\n xmlns:inkscape=\\\"http://www.inkscape.org/namespaces/inkscape\\\"\\n xmlns:sodipodi=\\\"http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd\\\"\\n xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\"\\n xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n xmlns:svg=\\\"http://www.w3.org/2000/svg\\\">\\n <defs\\n id=\\\"defs4\\\">\\n <linearGradient\\n id=\\\"linearGradient8\\\"\\n inkscape:collect=\\\"always\\\">\\n <stop\\n style=\\\"stop-color:#00ffff;stop-opacity:1;\\\"\\n offset=\\\"0.41690543\\\"\\n id=\\\"stop8\\\" />\\n <stop\\n style=\\\"stop-color:#00ffff;stop-opacity:0;\\\"\\n offset=\\\"1\\\"\\n id=\\\"stop9\\\" />\\n </linearGradient>\\n <linearGradient\\n inkscape:collect=\\\"always\\\"\\n xlink:href=\\\"#linearGradient8\\\"\\n id=\\\"linearGradient9\\\"\\n x1=\\\"16\\\"\\n y1=\\\"32\\\"\\n x2=\\\"29\\\"\\n y2=\\\"32\\\"\\n gradientUnits=\\\"userSpaceOnUse\\\" />\\n </defs>\\n <sodipodi:namedview\\n id=\\\"namedview4\\\"\\n pagecolor=\\\"#ffffff\\\"\\n bordercolor=\\\"#666666\\\"\\n borderopacity=\\\"1.0\\\"\\n inkscape:showpageshadow=\\\"2\\\"\\n inkscape:pageopacity=\\\"0.0\\\"\\n inkscape:pagecheckerboard=\\\"0\\\"\\n inkscape:deskcolor=\\\"#d1d1d1\\\"\\n inkscape:zoom=\\\"6.3671875\\\"\\n inkscape:cx=\\\"-22.458896\\\"\\n inkscape:cy=\\\"25.992638\\\"\\n inkscape:window-width=\\\"1920\\\"\\n inkscape:window-height=\\\"1017\\\"\\n inkscape:window-x=\\\"-8\\\"\\n inkscape:window-y=\\\"-8\\\"\\n inkscape:window-maximized=\\\"1\\\"\\n inkscape:current-layer=\\\"svg4\\\" />\\n <rect\\n x=\\\"1.7276074\\\"\\n y=\\\"13.895296\\\"\\n width=\\\"2.607362\\\"\\n height=\\\"8.6912069\\\"\\n rx=\\\"1.303681\\\"\\n fill=\\\"#4285f4\\\"\\n id=\\\"rect1\\\"\\n style=\\\"stroke-width:1\\\" />\\n <rect\\n x=\\\"19.132034\\\"\\n y=\\\"13.895296\\\"\\n width=\\\"2.607362\\\"\\n height=\\\"8.6912069\\\"\\n rx=\\\"1.303681\\\"\\n fill=\\\"#4285f4\\\"\\n id=\\\"rect1-4\\\"\\n style=\\\"stroke-width:1\\\" />\\n <rect\\n x=\\\"6.0732098\\\"\\n y=\\\"6.9423304\\\"\\n width=\\\"2.607362\\\"\\n height=\\\"15.644172\\\"\\n rx=\\\"1.303681\\\"\\n fill=\\\"#4285f4\\\"\\n id=\\\"rect2\\\"\\n style=\\\"stroke-width:1\\\" />\\n <rect\\n x=\\\"10.418815\\\"\\n y=\\\"1.7276073\\\"\\n width=\\\"2.607362\\\"\\n height=\\\"20.858896\\\"\\n rx=\\\"1.303681\\\"\\n fill=\\\"#4285f4\\\"\\n id=\\\"rect3\\\"\\n style=\\\"stroke-width:1\\\" />\\n <rect\\n x=\\\"14.775426\\\"\\n y=\\\"10.418814\\\"\\n width=\\\"2.607362\\\"\\n height=\\\"12.167689\\\"\\n rx=\\\"1.303681\\\"\\n fill=\\\"#4285f4\\\"\\n id=\\\"rect4\\\"\\n style=\\\"stroke-width:1\\\" />\\n <polygon\\n points=\\\"16,42 29,32 16,22 \\\"\\n fill=\\\"#ffffff\\\"\\n stroke=\\\"#000000\\\"\\n stroke-width=\\\"2.08833\\\"\\n stroke-linecap=\\\"round\\\"\\n stroke-linejoin=\\\"round\\\"\\n id=\\\"polygon4\\\"\\n transform=\\\"matrix(0.71827705,0,0,0.71827705,-3.1349141,-8.3199121)\\\"\\n style=\\\"fill:url(#linearGradient9);fill-opacity:1;stroke:none\\\" />\\n</svg>\\n\"","export default \"<svg fill=\\\"none\\\" stroke=\\\"white\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" stroke-width=\\\"2\\\" version=\\\"1.1\\\" viewBox=\\\"0 0 24 24\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\">\\n <defs>\\n <linearGradient id=\\\"videoGrad\\\" y2=\\\"100%\\\">\\n <stop stop-color=\\\"#FF5F6D\\\" offset=\\\"0\\\"/>\\n <stop stop-color=\\\"#FFC371\\\" offset=\\\"1\\\"/>\\n </linearGradient>\\n </defs>\\n <rect x=\\\"2\\\" y=\\\"5\\\" width=\\\"20\\\" height=\\\"14\\\" rx=\\\"2\\\" ry=\\\"2\\\" fill=\\\"url(#videoGrad)\\\" stroke=\\\"none\\\"/>\\n <polygon points=\\\"10 9 15 12 10 15\\\" fill=\\\"#fff\\\"/>\\n</svg>\\n\"","export default \"<svg fill=\\\"none\\\" stroke=\\\"white\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" stroke-width=\\\"2\\\" version=\\\"1.1\\\" viewBox=\\\"0 0 24 24\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\">\\n <defs>\\n <linearGradient id=\\\"warnGrad\\\" y2=\\\"100%\\\">\\n <stop stop-color=\\\"#FF5F6D\\\" offset=\\\"0\\\"/>\\n <stop stop-color=\\\"#FFC371\\\" offset=\\\"1\\\"/>\\n </linearGradient>\\n </defs>\\n <path d=\\\"M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z\\\" fill=\\\"url(#warnGrad)\\\" stroke=\\\"none\\\"/>\\n <line x1=\\\"12\\\" x2=\\\"12\\\" y1=\\\"9\\\" y2=\\\"13\\\" stroke=\\\"#fff\\\"/>\\n <line x1=\\\"12\\\" x2=\\\"12.01\\\" y1=\\\"17\\\" y2=\\\"17\\\" stroke=\\\"#fff\\\"/>\\n</svg>\\n\"","import arrowSvg from \"./assets/icons/arrow.svg?raw\";\nimport audioPng from \"./assets/icons/audio.png?url\";\nimport collapseArticleHoveredSvg from \"./assets/icons/collapse_article_hovered.svg?raw\";\nimport collapseArticleSvg from \"./assets/icons/collapse_article.svg?raw\";\nimport collapseOptSvg from \"./assets/icons/collapse_opt.svg?raw\";\nimport documentPng from \"./assets/icons/document.png?url\";\nimport downArrowSvg from \"./assets/icons/downarrow.svg?raw\";\nimport expandArticleHoveredSvg from \"./assets/icons/expand_article_hovered.svg?raw\";\nimport expandArticleSvg from \"./assets/icons/expand_article.svg?raw\";\nimport expandOptSvg from \"./assets/icons/expand_opt.svg?raw\";\nimport oldArrowSvg from \"./assets/icons/old-arrow.svg?raw\";\nimport oldDownArrowSvg from \"./assets/icons/old-downarrow.svg?raw\";\nimport playSoundSvg from \"./assets/icons/playsound.svg?raw\";\nimport videoSvg from \"./assets/icons/video.svg?raw\";\nimport warningSvg from \"./assets/icons/warning.svg?raw\";\n\nfunction svgDataUrl(svg: string): string {\n return `data:image/svg+xml;charset=utf-8,${encodeURIComponent(svg)}`;\n}\n\nexport const BUILTIN_ASSET_URLS: Readonly<Record<string, string>> = {\n \"arrow.svg\": svgDataUrl(arrowSvg),\n \"audio.png\": audioPng,\n \"collapse_article.svg\": svgDataUrl(collapseArticleSvg),\n \"collapse_article_hovered.svg\": svgDataUrl(collapseArticleHoveredSvg),\n \"collapse_opt.svg\": svgDataUrl(collapseOptSvg),\n \"document.png\": documentPng,\n \"downarrow.svg\": svgDataUrl(downArrowSvg),\n \"expand_article.svg\": svgDataUrl(expandArticleSvg),\n \"expand_article_hovered.svg\": svgDataUrl(expandArticleHoveredSvg),\n \"expand_opt.svg\": svgDataUrl(expandOptSvg),\n \"old-arrow.svg\": svgDataUrl(oldArrowSvg),\n \"old-downarrow.svg\": svgDataUrl(oldDownArrowSvg),\n \"playsound.svg\": svgDataUrl(playSoundSvg),\n \"video.svg\": svgDataUrl(videoSvg),\n \"warning.svg\": svgDataUrl(warningSvg),\n};\n\nexport function resolveBuiltinAsset(url: string): string | undefined {\n const match = /^qrc:\\/{2,3}(?:icons\\/)?([^?#]+)(?:[?#].*)?$/i.exec(url);\n return match?.[1] ? BUILTIN_ASSET_URLS[match[1]] : undefined;\n}\n\nexport function rewriteBuiltinAssetUrls(css: string): string {\n return css.replace(\n /qrc:\\/{2,3}icons\\/([a-z0-9_.-]+)/gi,\n (original, fileName: string) => BUILTIN_ASSET_URLS[fileName] ?? original,\n );\n}\n","// Generated by scripts/sync-goldendict.mjs. Do not edit.\nexport type GoldenDictVendorStylesheet = \"article-style.css\" | \"article-style-print.css\" | \"article-style-st-babylon.css\" | \"article-style-st-classic.css\" | \"article-style-st-lingoes-blue.css\" | \"article-style-st-lingoes.css\" | \"article-style-st-lingvo.css\" | \"article-style-st-modern.css\";\nexport const GOLDENDICT_VENDOR_CSS: Readonly<Record<GoldenDictVendorStylesheet, string>> = {\"article-style.css\":\"/******** Global, non-dictionary-specific classes ***********/\\n\\nhtml {\\n height: 100%;\\n scrollbar-gutter: stable;\\n}\\n\\nbody {\\n --text-color: #222;\\n --secondary-text-color: #555;\\n --link-color: #005a9c;\\n --container-bg: #f9f9f9;\\n --border-color: #e3e3e3;\\n --accent-color: #c00;\\n --selection-bg: #c00;\\n --selection-text: #fff;\\n font-family:\\n -apple-system, BlinkMacSystemFont, \\\"Segoe UI\\\", Roboto, Oxygen-Sans, Ubuntu,\\n Cantarell, \\\"Helvetica Neue\\\", Arial, \\\"Apple Color Emoji\\\", \\\"Segoe UI Emoji\\\",\\n \\\"Segoe UI Symbol\\\", sans-serif;\\n}\\n\\n.ipa,\\n.phon,\\n.phone,\\n.pron,\\n.audio-gb,\\n.audio-us {\\n font-family:\\n \\\"Segoe UI\\\", \\\"Lucida Grande\\\", \\\"Lucida Sans\\\", \\\"Droid Sans Mono\\\", \\\"Droid Sans\\\",\\n \\\"Arial Unicode MS\\\", \\\"Charis SIL\\\", \\\"Open Sans\\\", Roboto, Helvetica, Arial,\\n normal;\\n}\\n\\nh1,\\nh2,\\nh3,\\nh4,\\nh5,\\nh6 {\\n unicode-bidi: plaintext;\\n}\\n\\np,\\nem,\\narticle,\\nheader,\\nsection,\\nmain,\\nspan,\\ndiv,\\ngd-section-html,\\ngd-section-body,\\ngd-section-head {\\n unicode-bidi: plaintext;\\n}\\n\\ngd-section-html,\\ngd-section-body {\\n display: block;\\n}\\n\\ngd-section-head {\\n display: none;\\n}\\n/* This stylesheet is used to highligh current selection when doing a search.\\n It changes the default selection color (e.g. blue under Windows, orange under Ubuntu) */\\n\\n/* highlight/select color in Windows when a widget is inactive is nearly impossible to read (light gray).\\n * then change it to green to use with the find option. */\\n::selection {\\n background: var(--selection-bg);\\n color: var(--selection-text);\\n}\\n\\n/* Don't allow to select [] */\\n:before,\\n:after {\\n user-select: none;\\n}\\n\\n/* Plaintext dictionaries are usually 80-column formatted and take a lot\\n * of space. We try to use smaller fonts for them therefore. */\\npre {\\n font-size: 0.75rem;\\n}\\n\\n/* Dictionary's name heading */\\ngd-dict-header,\\n.gddictname {\\n display: flow-root;\\n margin-top: 0.5em;\\n margin-bottom: 0.5em;\\n font-weight: bold;\\n font-size: 0.8em;\\n padding: 0.3em;\\n padding-left: 0.5em;\\n background: #def;\\n user-select: none;\\n}\\n/* The Anki plus button, which is shown if enabled. */\\n.ankibutton {\\n float: none;\\n display: flex;\\n margin-left: auto;\\n margin-right: 0;\\n margin-top: 10px;\\n margin-bottom: 8px;\\n width: 32px;\\n height: 32px;\\n padding: 0;\\n border-radius: 4px;\\n cursor: pointer;\\n text-decoration: none;\\n transition:\\n background-color 0.2s,\\n transform 0.2s;\\n}\\n\\n.ankibutton:hover {\\n transform: scale(1.1);\\n}\\n\\n.ankibutton:active {\\n background-color: hsl(0deg 0% 70%);\\n transform: scale(0.95);\\n}\\n\\n.ankibutton:focus {\\n outline: 2px solid var(--link-color);\\n outline-offset: 2px;\\n}\\n\\n.ankibutton img {\\n display: block;\\n width: 100%;\\n height: 100%;\\n pointer-events: none;\\n}\\n.gddicttitle {\\n user-select: none;\\n}\\n\\n.gdarticlebody {\\n clear: both;\\n}\\n\\n/* The 'From ' string which precedes dictionary name in the heading */\\n.gdfromprefix {\\n display: none;\\n}\\n\\n/* The article span. Here we have a padding/margin hack to make fragment links\\n behave better (have some space before the start of article) */\\n.gdarticle {\\n display: flow-root;\\n padding-top: 1px;\\n margin-top: -8px;\\n margin-bottom: 8px;\\n /*fix for invalid blg*/\\n font-style: normal;\\n}\\n\\n.empty-space {\\n height: 400px;\\n}\\n\\n/* CSS trick to prevent the floating elements to overflow\\n the article boundaries, see Issue #333. */\\n.gdarticle:after {\\n content: \\\"\\\";\\n display: block;\\n height: 0;\\n clear: both;\\n}\\n\\n/* Appears between the articles */\\n.gdarticleseparator {\\n display: inline-block;\\n clear: both;\\n}\\n\\n/* Dictionary query error description string */\\n.gderrordesc {\\n font-style: italic;\\n background: url(\\\"qrc:///icons/warning.svg\\\") center left no-repeat !important;\\n background-size: auto min(100%, 24px);\\n padding-left: 2em !important;\\n margin: 1em;\\n}\\n\\n/********* Babylon dictionaries' classes *********/\\n\\n/* Transcriptions in Babylon dictionaries */\\n.bgltrn:before {\\n content: \\\"[\\\";\\n}\\n\\n.bgltrn:after {\\n content: \\\"]\\\";\\n}\\n\\n.bgltrn {\\n display: block;\\n}\\n\\n/* Part of speech in Babylon dictionaries. Usually irrelevant,\\n * therefore hidden */\\n.bglpos {\\n display: none;\\n}\\n\\n/* Right-to-left text */\\n.bglrtl {\\n text-align: right;\\n direction: rtl;\\n}\\n\\n/******** StarDict dictionaries' classes *********/\\n\\n/* StarDict type 'h' -- Html content. We don't normally do anything here. */\\ndiv.sdct_h {\\n unicode-bidi: plaintext;\\n}\\n\\n.sdict_h_wav img {\\n vertical-align: middle;\\n}\\n\\n/* StarDict type 'm' -- Pure meaning. Presented as <pre> */\\n.sdct_m {\\n}\\n\\n/* StarDict type 'l' -- Pure meaning which used to be in locale encoding. */\\n.sdct_l {\\n}\\n\\n/* StarDict type 'g' -- Pango Markup */\\n.sdct_g {\\n}\\n\\n/* StarDict type 't' -- Transcription */\\n.sdct_t {\\n font-weight: bold;\\n}\\n\\n/* StarDict type 'y' -- Chinese YinBiao or Japanese KANA */\\n.sdct_y {\\n}\\n\\n/* StarDict type 'x'. Should have xdxf_*-styled elements inside */\\n.sdct_x {\\n}\\n\\n/* Blockquotes in XDXF-styled elements are used\\n for indentation purposes, see Issue #305. */\\n.sdct_x blockquote {\\n margin: 0px;\\n padding-left: 9px;\\n display: inline-block;\\n}\\n\\n/******** XDXF markup classes *********/\\n\\ndiv.xdxf {\\n}\\n\\n/* Key -- keys shouldn't normally be present in the article's body since they\\n * are accounted for separately, hence we hide them */\\n.xdxf_k {\\n display: none;\\n}\\n\\n/* ...and if there's a break after it, we hide it too so we don't have an\\n * extra vertical spacing. */\\n.xdxf_k + br {\\n display: none;\\n}\\n\\n/* Article structure tag */\\n.xdxf_num {\\n color: red;\\n font-weight: bold;\\n padding-left: -15px;\\n}\\n.xdxf_def {\\n display: block;\\n border-color: #e3e3e3;\\n border-width: 1px;\\n border-style: dashed;\\n margin: 1px;\\n margin-left: 15px;\\n}\\n\\n.xdxf_def:target {\\n /* this pseudoclass is used to marked out the referenced <def> that was just clicked */\\n border-color: red;\\n border-width: 1px;\\n border-style: double;\\n}\\n\\n/* Abbreviation */\\n.xdxf_abbr {\\n font-style: italic;\\n color: seagreen;\\n cursor: default;\\n border-bottom: 1px seagreen dotted;\\n}\\n\\n/* Editorial comment */\\n.xdxf_co,\\n.xdxf_co_old {\\n color: darkslateblue;\\n font-style: italic;\\n}\\n.xdxf_co:before {\\n content: \\\"(\\\";\\n}\\n.xdxf_co:after {\\n content: \\\")\\\";\\n}\\n\\n/* Grammar information */\\n.xdxf_gr {\\n color: orangered;\\n display: block;\\n}\\n\\n.xdxf_gr_old {\\n color: blue; /*orangered;*/\\n}\\n\\n/* Example */\\n.xdxf_ex {\\n color: #808080;\\n display: block;\\n margin-left: 14px;\\n}\\n\\n.xdxf_ex_old {\\n color: #808080;\\n}\\n\\n.xdxf_ex_source:before {\\n content: \\\"[\\\";\\n}\\n.xdxf_ex_source:after {\\n content: \\\"]\\\";\\n}\\n\\n.xdxf_ex_orig {\\n color: #8761d9;\\n}\\n\\n.xdxf_ex_tran:before {\\n content: \\\"— \\\";\\n}\\n\\n.xdxf_ex_tran {\\n font-style: italic;\\n}\\n\\n/* Direct translation */\\n.xdxf_dtrn {\\n font-weight: bold;\\n color: #dd7800;\\n}\\n\\n/* Transcription */\\n.xdxf_tr:before {\\n content: \\\"[\\\";\\n}\\n\\n.xdxf_tr:after {\\n content: \\\"]\\\";\\n}\\n\\n.xdxf_tr,\\n.xdxf_tr_old {\\n font-weight: bold;\\n}\\n\\n/* Resource reference -- for now just a span. Since there's not yet a mechanism\\n * to load resources off XDXF articles in GoldenDict, we just hide them. */\\n.xdxf_rref {\\n display: none;\\n}\\n\\n.xdxf_headwords {\\n font-size: 116%;\\n font-weight: bold;\\n margin-top: 10px;\\n margin-bottom: 10px;\\n}\\n\\n/* The words in examples that are meaked out; they are marked out only when placed into <ex> tag */\\n.xdxf_ex .xdxf_ex_markd,\\n.xdxf_ex_old .xdxf_ex_markd {\\n background-color: lightgray;\\n margin-left: 0.2em;\\n margin-right: 0.2em;\\n padding-left: 0.1em;\\n padding-right: 0.1em;\\n}\\n\\n.xdxf_opt {\\n color: #808080;\\n}\\n\\n/******** SDictionary markup classes *********/\\n\\n.sdict_forms {\\n font-style: italic;\\n}\\n\\n/* Transcription */\\n.sdict_tr:before {\\n content: \\\"[\\\";\\n}\\n\\n.sdict_tr:after {\\n content: \\\"] \\\";\\n}\\n\\n.sdict_tr {\\n font-weight: bold;\\n}\\n\\n/************* audio archives **************/\\n\\n.audio-play {\\n display: flex;\\n flex-direction: column;\\n align-items: flex-start;\\n gap: 10px;\\n}\\n.audio-play-item {\\n display: flex;\\n align-items: center;\\n}\\n.audio-play-item a {\\n text-decoration: none;\\n color: inherit;\\n margin-right: 10px;\\n}\\n.audio-play-item img {\\n border: 0;\\n vertical-align: middle;\\n width: 24px;\\n height: 24px;\\n}\\n\\n.audio-play-icon {\\n display: inline-block;\\n width: 24px; /* Adjust the width as needed */\\n height: 24px; /* Adjust the height as needed */\\n background-image: url(\\\"qrc:///icons/playsound.svg\\\");\\n background-size: cover;\\n background-repeat: no-repeat;\\n}\\n\\n/************* DSL dictionaries **************/\\n\\n.dsl_u {\\n text-decoration: underline;\\n}\\n\\n.dsl_article {\\n display: inline;\\n}\\n\\n.dsl_article .c_default_color {\\n color: green;\\n}\\n\\n.dsl_m,\\n.dsl_m0 {\\n padding-left: 0px;\\n}\\n\\n.dsl_m1 {\\n padding-left: 9px;\\n}\\n\\n.dsl_m2 {\\n padding-left: 18px;\\n}\\n\\n.dsl_m3 {\\n padding-left: 27px;\\n}\\n\\n.dsl_m4 {\\n padding-left: 36px;\\n}\\n\\n.dsl_m5 {\\n padding-left: 45px;\\n}\\n\\n.dsl_m6 {\\n padding-left: 54px;\\n}\\n\\n.dsl_m7 {\\n padding-left: 63px;\\n}\\n\\n.dsl_m8 {\\n padding-left: 72px;\\n}\\n\\n.dsl_m9 {\\n padding-left: 81px;\\n}\\n\\n.dsl_p, .dsl_p :not(a) /* DSL Feature: Enforce the style even if the children tags say otherwise, except links */ {\\n color: green !important; /* DSL label color must have highest priority */\\n font-style: italic;\\n cursor: default;\\n font-weight: normal; /* DSL feature: labels are always of normal weight */\\n}\\n\\n.dsl_stress_without_accent {\\n display: none;\\n}\\n\\n.dsl_t {\\n font-weight: bold;\\n}\\n\\n.dsl_headwords {\\n font-weight: bold;\\n margin-top: 15px;\\n margin-bottom: 10px;\\n}\\n\\n.dsl_headwords p {\\n font-weight: bold;\\n font-size: 15px;\\n margin: 0;\\n}\\n\\n.dsl_definition p {\\n margin: 0;\\n}\\n\\n.dsl_opt {\\n display: none;\\n}\\n\\n.dsl_opt,\\n.dsl_opt .dsl_ex,\\n.dsl_opt .dsl_ex :not(a),\\n.dsl_opt .dsl_ex [color] /* DSL Feature: Enforce the optional zone color even if the children tags say otherwise */ {\\n color: gray;\\n}\\n\\n.dsl_ex,\\n.dsl_ex .dsl_opt {\\n color: gray;\\n}\\n\\n.dsl_unknown {\\n border-bottom: 3px double red;\\n}\\n\\n/* Style for expand optional parts button */\\n.hidden_expand_opt {\\n color: blue;\\n cursor: pointer;\\n vertical-align: text-bottom;\\n width: 16px;\\n height: auto;\\n}\\n\\n.dsl_s_wav img {\\n vertical-align: middle;\\n}\\n\\n.dsl_video .img {\\n display: inline-block;\\n background: url(\\\"qrc:///icons/video.svg\\\");\\n background-repeat: no-repeat;\\n vertical-align: middle;\\n width: 22px;\\n height: 22px;\\n margin: 0;\\n padding: 0;\\n}\\n\\n.dsl_video .filename {\\n display: none; /* by default, the file name is hidden */\\n padding-left: 5px;\\n}\\n\\n/************* MDict dictionaries **************/\\n.mdict {\\n}\\n\\n.mdict a[name] {\\n text-decoration: none;\\n color: inherit;\\n}\\n\\n/************* Zim dictionaries **************/\\n\\n.zimdict {\\n font-size: 110% !important;\\n}\\n\\n.zimdict_headword {\\n font-weight: bold !important;\\n display: none;\\n}\\n\\n/************* Spelling suggestions *****************/\\n\\n.gdspellsuggestion {\\n /* Add some vertical space before the article */\\n margin-top: 1em;\\n}\\n\\n/************* Stemmed suggestions *****************/\\n\\n.gdstemmedsuggestion {\\n /* Add some horizontal and vertical space */\\n margin-top: 1em;\\n margin-left: 1px;\\n}\\n\\n.gdstemmedsuggestion_head {\\n margin-left: 12px;\\n font-style: italic;\\n}\\n\\n.gdstemmedsuggestion_body {\\n display: block;\\n width: 100%;\\n margin: 12px;\\n\\n box-sizing: border-box;\\n overflow-wrap: break-word;\\n line-height: 1.5;\\n}\\n\\n/************* Dictd articles *****************/\\n.dictd_article {\\n /* Add some vertical space before the article */\\n margin-top: 1em;\\n}\\n\\n.dictd_phonetic:before,\\n.dictd_phonetic:after {\\n content: \\\"\\\\\\\\\\\";\\n font-style: normal;\\n}\\n\\n.dictd_phonetic:after {\\n margin-left: 3px;\\n}\\n\\n.dictd_phonetic {\\n font-style: italic;\\n color: #009900;\\n}\\n\\n.dictd_article a:link {\\n color: #0000ff;\\n}\\n\\n.dictserver_from {\\n font-size: 110%;\\n font-weight: 600;\\n}\\n\\n/************* Epwing dictionaries *****************/\\n\\n.epwing_narrow_font {\\n width: 0.5em;\\n height: 1em;\\n vertical-align: -15%;\\n}\\n\\n.epwing_wide_font {\\n width: 1em;\\n height: 1em;\\n vertical-align: -15%;\\n}\\n\\n.epwing_article {\\n display: inline;\\n}\\n\\n.epwing_article h3 {\\n color: #0f2fa0;\\n}\\n\\n.epwing_text b {\\n color: #0089a2;\\n}\\n\\n.epwing_text i {\\n color: #ae4500;\\n}\\n\\n.epwing_text a {\\n text-decoration: none;\\n cursor: pointer;\\n color: #859aad;\\n}\\n\\n.epwing_text {\\n line-height: 1.5em;\\n}\\n/************* Websites *****************/\\n\\n.website_padding {\\n height: 1em;\\n clear: both;\\n}\\n\\n.website-iframe {\\n overflow: auto;\\n width: 100%;\\n display: block;\\n border: none;\\n max-height: 800px;\\n min-height: 550px;\\n}\\n/************* Forvo **************/\\n\\n.forvo_headword {\\n margin-top: 15px;\\n margin-bottom: 10px;\\n font-weight: bold;\\n font-size: 15px;\\n}\\n\\n/* A table which contains a play icon and information about the sound */\\n.forvo_play {\\n margin-top: 8px;\\n margin-left: 8px;\\n}\\n\\n.forvo_user {\\n text-decoration: none;\\n color: green;\\n}\\n\\n.forvo_location {\\n color: grey;\\n}\\n\\n.forvo_positive_votes {\\n font-weight: bold;\\n color: green;\\n}\\n\\n.forvo_negative_votes {\\n font-weight: bold;\\n color: red;\\n}\\n\\n/************* MediaWiki articles *****************\\n The following consist of excerpts from different .css files edited\\n with a .mwiki prepended to each record.\\n*/\\n\\n.mwiki {\\n /* Add some vertical space before the article */\\n margin-top: 1em;\\n}\\n\\n.mwiki .topicon {\\n /* Those are padlocks on top and such -- we disable those for GoldenDict\\n since they look really ugly here */\\n display: none;\\n}\\n\\n/* Hide empty list items */\\n.mwiki .mw-empty-li,\\n.mwiki .mw-empty-elt {\\n display: none;\\n}\\n\\n/************ common.css **************/\\n\\n/**\\n * CSS in this file is used by *all* skins (that have any CSS at all). Be\\n * careful what you put in here, since what looks good in one skin may not in\\n * another, but don't ignore the poor non-Monobook users either.\\n */\\n.mwiki .mw-plusminus-null {\\n color: #aaa;\\n}\\n\\n.mwiki .texvc {\\n direction: ltr;\\n unicode-bidi: embed;\\n}\\n.mwiki img.tex {\\n vertical-align: middle;\\n}\\n.mwiki span.texhtml {\\n font-family: serif;\\n}\\n\\n/* add a bit of margin space between the preview and the toolbar */\\n/* this replaces the ugly <p><br /></p> we used to insert into the page source */\\n.mwiki #wikiPreview.ontop {\\n margin-bottom: 1em;\\n}\\n\\n/* Stop floats from intruding into edit area in previews */\\n.mwiki #toolbar,\\n.mwiki #wpTextbox1 {\\n clear: both;\\n}\\n\\n.mwiki div#mw-js-message {\\n margin: 1em 5%;\\n padding: 0.5em 2.5%;\\n border: solid 1px #ddd;\\n background-color: #fcfcfc;\\n}\\n\\n/* Edit section links */\\n.mwiki .editsection {\\n float: right;\\n margin-left: 5px;\\n}\\n\\n/**\\n * File histories\\n */\\n.mwiki table.filehistory {\\n border: 1px solid #ccc;\\n border-collapse: collapse;\\n}\\n\\n.mwiki table.filehistory th,\\n.mwiki table.filehistory td {\\n padding: 0 0.2em 0 0.2em;\\n vertical-align: top;\\n border: 1px solid #ccc;\\n}\\n.mwiki table.filehistory th {\\n text-align: left;\\n}\\n.mwiki table.filehistory td.mw-imagepage-filesize,\\n.mwiki table.filehistory th.mw-imagepage-filesize {\\n white-space: nowrap;\\n}\\n\\n.mwiki table.filehistory td.filehistory-selected {\\n font-weight: bold;\\n}\\n\\n/*\\n * rev_deleted stuff\\n */\\n.mwiki li span.deleted,\\n.mwiki span.history-deleted {\\n text-decoration: line-through;\\n color: #888;\\n font-style: italic;\\n}\\n\\n.mwiki td.mw-label {\\n vertical-align: top;\\n}\\n.mwiki td.mw-submit {\\n white-space: nowrap;\\n}\\n/**\\n * Forms\\n */\\n.mwiki body.ltr td.mw-label {\\n text-align: right;\\n}\\n.mwiki body.ltr td.mw-input {\\n text-align: left;\\n}\\n.mwiki body.ltr td.mw-submit {\\n text-align: left;\\n}\\n.mwiki body.rtl td.mw-label {\\n text-align: left;\\n}\\n.mwiki body.rtl td.mw-input {\\n text-align: right;\\n}\\n.mwiki body.rtl td.mw-submit {\\n text-align: right;\\n}\\n\\n/**\\n * Image captions\\n */\\n.mwiki body.rtl .thumbcaption {\\n text-align: right;\\n}\\n.mwiki body.rtl .magnify {\\n float: left;\\n}\\n\\n.mwiki body.ltr .thumbcaption {\\n text-align: left;\\n}\\n.mwiki body.ltr .magnify {\\n float: right;\\n}\\n\\n/**\\n * Hidden categories\\n */\\n.mwiki .mw-hidden-cats-hidden {\\n display: none;\\n}\\n.mwiki .catlinks-allhidden {\\n display: none;\\n}\\n\\n/* Convenience links to edit block, delete and protect reasons */\\n.mwiki p.mw-ipb-conveniencelinks,\\n.mwiki p.mw-protect-editreasons,\\n.mwiki p.mw-filedelete-editreasons,\\n.mwiki p.mw-delete-editreasons {\\n font-size: 90%;\\n float: right;\\n}\\n\\n/* Search results */\\n.mwiki div.searchresult {\\n font-size: 95%;\\n width: 38em;\\n}\\n.mwiki .mw-search-results li {\\n padding-bottom: 1em;\\n list-style: none;\\n}\\n.mwiki .mw-search-result-data {\\n color: green;\\n font-size: 97%;\\n}\\n\\n.mwiki td#mw-search-menu {\\n padding-left: 6em;\\n font-size: 85%;\\n}\\n\\n.mwiki div#mw-search-interwiki {\\n float: right;\\n width: 18em;\\n border-style: solid;\\n border-color: #aaaaaa;\\n border-width: 1px;\\n margin-top: 2ex;\\n}\\n\\n.mwiki div#mw-search-interwiki li {\\n font-size: 95%;\\n}\\n\\n.mwiki .mw-search-interwiki-more {\\n float: right;\\n font-size: 90%;\\n}\\n\\n.mwiki span.searchalttitle {\\n font-size: 95%;\\n}\\n\\n.mwiki div.searchdidyoumean {\\n font-size: 127%;\\n margin-bottom: 1ex;\\n margin-top: 1ex;\\n /* Note that this color won't affect the link, as desired. */\\n color: #c00;\\n}\\n\\n.mwiki div.searchdidyoumean em {\\n font-weight: bold;\\n}\\n\\n.mwiki .searchmatch {\\n font-weight: bold;\\n}\\n\\n.mwiki div.searchresults {\\n border: 1px solid darkblue;\\n padding-top: 10px;\\n padding-bottom: 10px;\\n padding-left: 20px;\\n padding-right: 20px;\\n}\\n\\n/*\\n * UserRights stuff\\n */\\n.mwiki .mw-userrights-disabled {\\n color: #888;\\n}\\n\\n.mwiki table.mw-userrights-groups * td,\\n.mwiki table.mw-userrights-groups * th {\\n padding-right: 1.5em;\\n}\\n\\n/*\\n * OpenSearch ajax suggestions\\n */\\n.mwiki .os-suggest {\\n overflow: auto;\\n overflow-x: hidden;\\n position: absolute;\\n top: 0px;\\n left: 0px;\\n width: 0px;\\n background-color: white;\\n border-style: solid;\\n border-color: #aaaaaa;\\n border-width: 1px;\\n z-index: 99;\\n visibility: hidden;\\n font-size: 95%;\\n}\\n\\n.mwiki table.os-suggest-results {\\n font-size: 95%;\\n cursor: pointer;\\n border: 0;\\n border-collapse: collapse;\\n width: 100%;\\n}\\n\\n.mwiki td.os-suggest-result,\\n.mwiki td.os-suggest-result-hl {\\n white-space: nowrap;\\n background-color: white;\\n color: black;\\n padding: 2px;\\n}\\n.mwiki td.os-suggest-result-hl,\\n.mwiki td.os-suggest-result-hl-webkit {\\n background-color: #4c59a6;\\n color: white;\\n}\\n\\n.mwiki .os-suggest-toggle {\\n position: relative;\\n left: 1ex;\\n font-size: 65%;\\n}\\n.mwiki .os-suggest-toggle-def {\\n position: absolute;\\n top: 0px;\\n left: 0px;\\n font-size: 65%;\\n visibility: hidden;\\n}\\n\\n/* Page history styling */\\n/* the auto-generated edit comments */\\n.mwiki .autocomment {\\n color: gray;\\n}\\n.mwiki #pagehistory .history-user {\\n margin-left: 0.4em;\\n margin-right: 0.2em;\\n}\\n.mwiki #pagehistory span.minor {\\n font-weight: bold;\\n}\\n.mwiki #pagehistory li {\\n border: 1px solid white;\\n}\\n.mwiki #pagehistory li.selected {\\n background-color: #f9f9f9;\\n border: 1px dashed #aaa;\\n}\\n\\n/*\\n * Special:ListGroupRights styling\\n * Special:Statistics styling\\n*/\\n\\n.mwiki table.mw-listgrouprights-table,\\n.mwiki table.mw-statistics-table {\\n border: 1px solid #ccc;\\n border-collapse: collapse;\\n}\\n\\n.mwiki table.mw-listgrouprights-table tr {\\n vertical-align: top;\\n}\\n\\n.mwiki table.mw-listgrouprights-table td,\\n.mwiki table.mw-listgrouprights-table th,\\n.mwiki table.mw-statistics-table td,\\n.mwiki table.mw-statistics-table th {\\n padding: 0.5em 0.2em 0.5em 0.2em;\\n border: 1px solid #ccc;\\n}\\n\\n.mwiki td.mw-statistics-numbers {\\n text-align: right;\\n}\\n\\n/* Special:SpecialPages styling */\\n.mwiki h4.mw-specialpagesgroup {\\n background-color: #dcdcdc;\\n padding: 2px;\\n margin: 0.3em 0em 0em 0em;\\n}\\n.mwiki .mw-specialpagerestricted {\\n font-weight: bold;\\n}\\n\\n.mwiki #shared-image-dup,\\n.mwiki #shared-image-conflict {\\n font-style: italic;\\n}\\n\\n/* Special:EmailUser styling */\\n.mwiki table.mw-emailuser-table {\\n width: 98%;\\n}\\n.mwiki td#mw-emailuser-sender,\\n.mwiki td#mw-emailuser-recipient {\\n font-weight: bold;\\n}\\n\\n/* Special:Prefixindex styling */\\n.mwiki table#mw-prefixindex-list-table,\\n.mwiki table#mw-prefixindex-nav-table {\\n width: 98%;\\n background-color: transparent;\\n}\\n.mwiki td#mw-prefixindex-nav-form {\\n font-size: smaller;\\n margin-bottom: 1em;\\n text-align: right;\\n vertical-align: top;\\n}\\n\\n/*\\n * Recreating deleted page warning\\n * Reupload file warning\\n * Page protection warning\\n * incl. log entries for these warnings\\n */\\n.mwiki div.mw-warning-with-logexcerpt {\\n padding: 3px;\\n margin-bottom: 3px;\\n border: 2px solid #2f6fab;\\n}\\n.mwiki div.mw-warning-with-logexcerpt ul li {\\n font-size: 90%;\\n}\\n\\n/* (show/hide) revision deletion links */\\n.mwiki span.mw-revdelundel-link,\\n.mwiki strong.mw-revdelundel-link {\\n font-family: monospace;\\n font-size: smaller;\\n}\\n\\n/************ monobook/main.css **************/\\n\\n/*\\n** MediaWiki 'monobook' style sheet for CSS2-capable browsers.\\n** Copyright Gabriel Wicke - http://wikidev.net/\\n** License: GPL (http://www.gnu.org/copyleft/gpl.html)\\n**\\n** Loosely based on http://www.positioniseverything.net/ordered-floats.html by Big John\\n** and the Plone 2.0 styles, see http://plone.org/ (Alexander Limi,Joe Geldart & Tom Croucher,\\n** Michael Zeltner and Geir Bækholt)\\n** All you guys rock :)\\n*/\\n\\n.mwiki #column-content {\\n width: 100%;\\n float: right;\\n margin: 0 0 0.6em -12.2em;\\n padding: 0;\\n}\\n.mwiki #content {\\n margin: 2.8em 0 0 12.2em;\\n padding: 0 1em 1em 1em;\\n position: relative;\\n z-index: 2;\\n}\\n.mwiki #column-one {\\n padding-top: 160px;\\n}\\n.mwiki #content {\\n background: white;\\n color: black;\\n border: 1px solid #aaa;\\n border-right: none;\\n line-height: 1.5em;\\n}\\n\\n/* scale back up to a sane default */\\n.mwiki #globalWrapper {\\n font-size: 127%;\\n width: 100%;\\n margin: 0;\\n padding: 0;\\n}\\n.mwiki .visualClear {\\n clear: both;\\n}\\n\\n/* general styles */\\n\\n.mwiki table {\\n font-size: 100%;\\n color: black;\\n /* we don't want the bottom borders of <h2>s to be visible through\\n\\t floated tables */\\n background-color: white;\\n}\\n.mwiki fieldset table {\\n /* but keep table layouts in forms clean... */\\n background: none;\\n}\\n.mwiki a {\\n text-decoration: none;\\n color: #002bb8;\\n background: none;\\n}\\n.mwiki a:visited {\\n color: #5a3696;\\n}\\n.mwiki a:active {\\n color: #faa700;\\n}\\n.mwiki a:hover {\\n text-decoration: underline;\\n}\\n.mwiki a.stub {\\n color: #772233;\\n}\\n.mwiki a.new,\\n.mwiki #p-personal a.new {\\n color: #ba0000;\\n}\\n.mwiki a.new:visited,\\n.mwiki #p-personal a.new:visited {\\n color: #a55858;\\n}\\n\\n.mwiki img {\\n border: none;\\n vertical-align: middle;\\n}\\n.mwiki p {\\n margin: 0.4em 0 0.5em 0;\\n line-height: 1.5em;\\n}\\n.mwiki p img {\\n margin: 0;\\n}\\n\\n.mwiki hr {\\n height: 1px;\\n color: #aaa;\\n background-color: #aaa;\\n border: 0;\\n margin: 0.2em 0 0.2em 0;\\n}\\n\\n.mwiki h1,\\n.mwiki h2,\\n.mwiki h3,\\n.mwiki h4,\\n.mwiki h5,\\n.mwiki h6 {\\n color: black;\\n background: none;\\n font-weight: normal;\\n margin: 0;\\n padding-top: 0.5em;\\n padding-bottom: 0.17em;\\n border-bottom: 1px solid #aaa;\\n}\\n.mwiki h1 {\\n font-size: 188%;\\n}\\n.mwiki h1 .editsection {\\n font-size: 53%;\\n}\\n.mwiki h2 {\\n font-size: 150%;\\n}\\n.mwiki h2 .editsection {\\n font-size: 67%;\\n}\\n.mwiki h3,\\n.mwiki h4,\\n.mwiki h5,\\n.mwiki h6 {\\n border-bottom: none;\\n font-weight: bold;\\n}\\n.mwiki h3 {\\n font-size: 132%;\\n}\\n.mwiki h3 .editsection {\\n font-size: 76%;\\n font-weight: normal;\\n}\\n.mwiki h4 {\\n font-size: 116%;\\n}\\n.mwiki h4 .editsection {\\n font-size: 86%;\\n font-weight: normal;\\n}\\n.mwiki h5 {\\n font-size: 100%;\\n}\\n.mwiki h5 .editsection {\\n font-weight: normal;\\n}\\n.mwiki h6 {\\n font-size: 80%;\\n}\\n.mwiki h6 .editsection {\\n font-size: 125%;\\n font-weight: normal;\\n}\\n\\n.mwiki ul {\\n line-height: 1.5em;\\n list-style-type: square;\\n margin: 0.3em 0 0 1.5em;\\n padding: 0;\\n}\\n.mwiki ol {\\n line-height: 1.5em;\\n margin: 0.3em 0 0 3.2em;\\n padding: 0;\\n list-style-image: none;\\n}\\n.mwiki li {\\n margin-bottom: 0.1em;\\n}\\n.mwiki dt {\\n font-weight: bold;\\n margin-bottom: 0.1em;\\n}\\n.mwiki dl {\\n margin-top: 0.2em;\\n margin-bottom: 0.5em;\\n}\\n.mwiki dd {\\n line-height: 1.5em;\\n margin-left: 2em;\\n margin-bottom: 0.1em;\\n}\\n\\n.mwiki fieldset {\\n border: 1px solid #2f6fab;\\n margin: 1em 0 1em 0;\\n padding: 0 1em 1em;\\n line-height: 1.5em;\\n}\\n.mwiki fieldset.nested {\\n margin: 0 0 0.5em 0;\\n padding: 0 0.5em 0.5em;\\n}\\n.mwiki legend {\\n padding: 0.5em;\\n font-size: 95%;\\n}\\n.mwiki form {\\n border: none;\\n margin: 0;\\n}\\n\\n.mwiki textarea {\\n width: 100%;\\n padding: 0.1em;\\n}\\n\\n.mwiki input.historysubmit {\\n padding: 0 0.3em 0.3em 0.3em !important;\\n font-size: 94%;\\n cursor: pointer;\\n height: 1.7em !important;\\n margin-left: 1.6em;\\n}\\n.mwiki select {\\n vertical-align: top;\\n}\\n.mwiki abbr,\\n.mwiki .explain {\\n border-bottom: 1px dotted black;\\n color: black;\\n background: none;\\n cursor: help;\\n}\\n.mwiki q {\\n font-family: Times, \\\"Times New Roman\\\", serif;\\n font-style: italic;\\n}\\n/* disabled for now\\n.mwiki blockquote {\\n\\tfont-family: Times, \\\"Times New Roman\\\", serif;\\n\\tfont-style: italic;\\n}*/\\n.mwiki code {\\n background-color: #f9f9f9;\\n}\\n.mwiki pre {\\n padding: 1em;\\n border: 1px dashed #2f6fab;\\n color: black;\\n background-color: #f9f9f9;\\n line-height: 1.1em;\\n}\\n\\n/*\\n** the main content area\\n*/\\n\\n.mwiki #siteSub {\\n display: none;\\n}\\n.mwiki #jump-to-nav {\\n display: none;\\n}\\n\\n.mwiki #contentSub,\\n.mwiki #contentSub2 {\\n font-size: 84%;\\n line-height: 1.2em;\\n margin: 0 0 1.4em 1em;\\n color: #7d7d7d;\\n width: auto;\\n}\\n.mwiki span.subpages {\\n display: block;\\n}\\n\\n/* Some space under the headers in the content area */\\n.mwiki #bodyContent h1,\\n.mwiki #bodyContent h2 {\\n margin-bottom: 0.6em;\\n}\\n.mwiki #bodyContent h3,\\n.mwiki #bodyContent h4,\\n.mwiki #bodyContent h5 {\\n margin-bottom: 0.3em;\\n}\\n.mwiki #firstHeading {\\n margin-bottom: 0.1em;\\n /* These two rules hack around bug 2013 (fix for more limited bug 11325).\\n\\t When bug 2013 is fixed properly, they should be removed. */\\n line-height: 1.2em;\\n padding-bottom: 0;\\n}\\n\\n/* user notification thing */\\n.mwiki .usermessage {\\n background-color: #ffce7b;\\n border: 1px solid #ffa500;\\n color: black;\\n font-weight: bold;\\n margin: 2em 0 1em;\\n padding: 0.5em 1em;\\n vertical-align: middle;\\n}\\n.mwiki #siteNotice {\\n text-align: center;\\n font-size: 95%;\\n padding: 0 0.9em;\\n}\\n.mwiki #siteNotice p {\\n margin: 0;\\n padding: 0;\\n}\\n.mwiki .success {\\n color: green;\\n font-size: larger;\\n}\\n.mwiki .error {\\n color: red;\\n font-size: larger;\\n}\\n.mwiki .errorbox,\\n.mwiki .successbox {\\n font-size: larger;\\n border: 2px solid;\\n padding: 0.5em 1em;\\n float: left;\\n margin-bottom: 2em;\\n color: #000;\\n}\\n.mwiki .errorbox {\\n border-color: red;\\n background-color: #fff2f2;\\n}\\n.mwiki .successbox {\\n border-color: green;\\n background-color: #dfd;\\n}\\n.mwiki .errorbox h2,\\n.mwiki .successbox h2 {\\n font-size: 1em;\\n font-weight: bold;\\n display: inline;\\n margin: 0 0.5em 0 0;\\n border: none;\\n}\\n\\n.mwiki .catlinks {\\n border: 1px solid #aaa;\\n background-color: #f9f9f9;\\n padding: 5px;\\n margin-top: 1em;\\n clear: both;\\n}\\n/* currently unused, intended to be used by a metadata box\\nin the bottom-right corner of the content area */\\n.mwiki .documentDescription {\\n /* The summary text describing the document */\\n font-weight: bold;\\n display: block;\\n margin: 1em 0;\\n line-height: 1.5em;\\n}\\n.mwiki .documentByLine {\\n text-align: right;\\n font-size: 90%;\\n clear: both;\\n font-weight: normal;\\n color: #76797c;\\n}\\n\\n/* emulate center */\\n.mwiki .center {\\n width: 100%;\\n text-align: center;\\n}\\n.mwiki *.center * {\\n margin-left: auto;\\n margin-right: auto;\\n}\\n/* small for tables and similar */\\n.mwiki .small,\\n.mwiki .small * {\\n font-size: 94%;\\n}\\n.mwiki table.small {\\n font-size: 100%;\\n}\\n\\n/*\\n** content styles\\n*/\\n\\n.mwiki #toc,\\n.mwiki .toc,\\n.mwiki .mw-warning {\\n border: 1px solid #aaa;\\n background-color: #f9f9f9;\\n padding: 5px;\\n font-size: 95%;\\n}\\n.mwiki #toc h2,\\n.mwiki .toc h2 {\\n display: inline;\\n border: none;\\n padding: 0;\\n font-size: 100%;\\n font-weight: bold;\\n}\\n.mwiki #toc #toctitle,\\n.mwiki .toc #toctitle,\\n.mwiki #toc .toctitle,\\n.mwiki .toc .toctitle {\\n text-align: center;\\n position: -webkit-sticky;\\n position: sticky;\\n top: -5px; /* Offset parent's padding */\\n padding: 5px 0;\\n background-color: inherit;\\n z-index: 10;\\n}\\n\\n.mwiki #toc ul,\\n.mwiki .toc ul {\\n list-style-type: none;\\n list-style-image: none;\\n margin-left: 0;\\n padding-left: 0;\\n text-align: left;\\n}\\n.mwiki #toc ul ul,\\n.mwiki .toc ul ul {\\n margin: 0 0 0 2em;\\n}\\n.mwiki #toc .toctoggle,\\n.mwiki .toc .toctoggle {\\n font-size: 94%;\\n}\\n\\n/* Bypass toclimit wrapper to ensure sticky positioning works correctly */\\n.mwiki div[class*=\\\"toclimit-\\\"],\\n.mwiki div.tocright {\\n display: contents;\\n}\\n\\n/* Sticky and auto-expanding TOC on hover (Overlay mode) */\\n.mwiki #toc,\\n.mwiki .toc {\\n position: -webkit-sticky;\\n position: sticky;\\n top: 10px;\\n float: right;\\n z-index: 1000;\\n width: 32px;\\n height: 32px;\\n padding: 0;\\n margin: 0 0 1em 5px;\\n overflow: hidden;\\n opacity: 0.7;\\n background-color: #f8f9fa;\\n border: 1px solid #a2a9b1;\\n border-radius: 4px;\\n transition: opacity 0.3s ease-in-out;\\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);\\n}\\n\\n.mwiki #toc:hover,\\n.mwiki .toc:hover {\\n overflow: visible;\\n opacity: 1;\\n}\\n\\n.mwiki #toc:hover .toctitle,\\n.mwiki #toc:hover > ul {\\n display: block;\\n position: absolute;\\n right: 0;\\n width: 280px;\\n background-color: #ffffff;\\n border: 1px solid #a2a9b1;\\n box-shadow: 0 4px 16px rgba(0, 0, 0, 0.2);\\n}\\n\\n.mwiki #toc:hover .toctitle {\\n top: 0;\\n z-index: 1001;\\n padding: 8px;\\n border-radius: 4px 4px 0 0;\\n text-align: center;\\n}\\n\\n.mwiki #toc:hover > ul {\\n top: 35px;\\n margin: 0;\\n padding: 8px;\\n max-height: 75vh;\\n overflow-y: auto;\\n border-radius: 0 0 4px 4px;\\n}\\n\\n.mwiki #toc ul li {\\n padding: 2px 0;\\n transition: background-color 0.2s;\\n}\\n\\n.mwiki #toc ul li:hover {\\n background-color: rgba(0, 0, 0, 0.05);\\n}\\n\\n.mwiki .mw-warning {\\n margin-left: 50px;\\n margin-right: 50px;\\n text-align: center;\\n}\\n\\n/* images */\\n.mwiki div.floatright,\\n.mwiki table.floatright {\\n clear: right;\\n float: right;\\n position: relative;\\n margin: 0 0 0.5em 0.5em;\\n border: 0;\\n /*\\n\\tborder: .5em solid white;\\n\\tborder-width: .5em 0 .8em 1.4em;\\n*/\\n}\\n.mwiki div.floatright p {\\n font-style: italic;\\n}\\n.mwiki div.floatleft,\\n.mwiki table.floatleft {\\n float: left;\\n clear: left;\\n position: relative;\\n margin: 0 0.5em 0.5em 0;\\n border: 0;\\n /*\\n\\tmargin: .3em .5em .5em 0;\\n\\tborder: .5em solid white;\\n\\tborder-width: .5em 1.4em .8em 0;\\n*/\\n}\\n.mwiki div.floatleft p {\\n font-style: italic;\\n}\\n/* thumbnails */\\n.mwiki div.thumb {\\n margin-bottom: 0.5em;\\n border-style: solid;\\n border-color: white;\\n width: auto;\\n}\\n.mwiki div.thumbinner {\\n border: 1px solid #ccc;\\n padding: 3px !important;\\n background-color: #f9f9f9;\\n font-size: 94%;\\n text-align: center;\\n overflow: hidden;\\n}\\n.mwiki html .thumbimage {\\n border: 1px solid #ccc;\\n}\\n.mwiki html .thumbcaption {\\n border: none;\\n text-align: left;\\n line-height: 1.4em;\\n padding: 3px !important;\\n font-size: 94%;\\n}\\n.mwiki div.magnify {\\n float: right;\\n border: none !important;\\n background: none !important;\\n}\\n.mwiki div.magnify a,\\n.mwiki div.magnify img {\\n display: block;\\n border: none !important;\\n background: none !important;\\n}\\n.mwiki div.tright {\\n clear: right;\\n float: right;\\n border-width: 0.5em 0 0.8em 1.4em;\\n}\\n.mwiki div.tleft {\\n float: left;\\n clear: left;\\n margin-right: 0.5em;\\n border-width: 0.5em 1.4em 0.8em 0;\\n}\\n.mwiki img.thumbborder {\\n border: 1px solid #dddddd;\\n}\\n.mwiki .hiddenStructure {\\n display: none;\\n}\\n\\n/*\\n** classes for special content elements like town boxes\\n** intended to be referenced directly from the wiki src\\n*/\\n\\n/*\\n** User styles\\n*/\\n/* table standards */\\n.mwiki table.rimage {\\n float: right;\\n position: relative;\\n margin-left: 1em;\\n margin-bottom: 1em;\\n text-align: center;\\n}\\n.mwiki .toccolours {\\n border: 1px solid #aaa;\\n background-color: #f9f9f9;\\n padding: 5px;\\n font-size: 95%;\\n}\\n\\n/*\\n** edit views etc\\n*/\\n.mwiki .special li {\\n line-height: 1.4em;\\n margin: 0;\\n padding: 0;\\n}\\n\\n/*\\n** keep the whitespace in front of the ^=, hides rule from konqueror\\n** this is css3, the validator doesn't like it when validating as css2\\n*/\\n\\n.mwiki #bodyContent a.external[href$=\\\".ogg\\\"],\\n.mwiki #bodyContent a.external[href$=\\\".OGG\\\"],\\n.mwiki #bodyContent a.external[href$=\\\".oga\\\"],\\n.mwiki #bodyContent a.external[href$=\\\".OGA\\\"],\\n.mwiki #bodyContent a.external[href$=\\\".mid\\\"],\\n.mwiki #bodyContent a.external[href$=\\\".MID\\\"],\\n.mwiki #bodyContent a.external[href$=\\\".midi\\\"],\\n.mwiki #bodyContent a.external[href$=\\\".MIDI\\\"],\\n.mwiki #bodyContent a.external[href$=\\\".mp3\\\"],\\n.mwiki #bodyContent a.external[href$=\\\".MP3\\\"],\\n.mwiki #bodyContent a.external[href$=\\\".wav\\\"],\\n.mwiki #bodyContent a.external[href$=\\\".WAV\\\"],\\n.mwiki #bodyContent a.external[href$=\\\".wma\\\"],\\n.mwiki #bodyContent a.external[href$=\\\".WMA\\\"],\\n.mwiki .link-audio {\\n background: url(\\\"qrc:///icons/audio.png\\\") center right no-repeat;\\n padding-right: 1em;\\n}\\n.mwiki #bodyContent a.external[href$=\\\".ogm\\\"],\\n.mwiki #bodyContent a.external[href$=\\\".OGM\\\"],\\n.mwiki #bodyContent a.external[href$=\\\".avi\\\"],\\n.mwiki #bodyContent a.external[href$=\\\".AVI\\\"],\\n.mwiki #bodyContent a.external[href$=\\\".mpeg\\\"],\\n.mwiki #bodyContent a.external[href$=\\\".MPEG\\\"],\\n.mwiki #bodyContent a.external[href$=\\\".mpg\\\"],\\n.mwiki #bodyContent a.external[href$=\\\".MPG\\\"],\\n.mwiki .link-video {\\n background: url(\\\"qrc:///icons/video.svg\\\") center right no-repeat;\\n padding-right: 1em;\\n}\\n.mwiki #bodyContent a.external[href$=\\\".pdf\\\"],\\n.mwiki #bodyContent a.external[href$=\\\".PDF\\\"],\\n.mwiki #bodyContent a.external[href*=\\\".pdf#\\\"],\\n.mwiki #bodyContent a.external[href*=\\\".PDF#\\\"],\\n.mwiki #bodyContent a.external[href*=\\\".pdf?\\\"],\\n.mwiki #bodyContent a.external[href*=\\\".PDF?\\\"],\\n.mwiki .link-document {\\n background: url(\\\"qrc:///icons/document.png\\\") center right no-repeat;\\n padding-right: 12px;\\n}\\n\\n/* disable interwiki styling */\\n.mwiki #bodyContent a.extiw,\\n.mwiki #bodyContent a.extiw:active {\\n color: #36b;\\n background: none;\\n padding: 0;\\n}\\n.mwiki #bodyContent a.external {\\n color: #36b;\\n}\\n/* this can be used in the content area to switch off\\nspecial external link styling */\\n.mwiki #bodyContent .plainlinks a {\\n background: none !important;\\n padding: 0 !important;\\n}\\n/*\\n** Structural Elements\\n*/\\n\\n/*\\n** general portlet styles (elements in the quickbar)\\n*/\\n.mwiki .portlet {\\n border: none;\\n margin: 0 0 0.5em;\\n padding: 0;\\n float: none;\\n width: 11.6em;\\n overflow: hidden;\\n}\\n.mwiki .portlet h4 {\\n font-size: 95%;\\n font-weight: normal;\\n white-space: nowrap;\\n}\\n.mwiki .portlet h5 {\\n background: transparent;\\n padding: 0 1em 0 0.5em;\\n display: inline;\\n height: 1em;\\n text-transform: lowercase;\\n font-size: 91%;\\n font-weight: normal;\\n white-space: nowrap;\\n}\\n.mwiki .portlet h6 {\\n background: #ffae2e;\\n border: 1px solid #2f6fab;\\n border-style: solid solid none solid;\\n padding: 0 1em 0 1em;\\n text-transform: lowercase;\\n display: block;\\n font-size: 1em;\\n height: 1.2em;\\n font-weight: normal;\\n white-space: nowrap;\\n}\\n.mwiki .pBody {\\n font-size: 95%;\\n background-color: white;\\n color: black;\\n border-collapse: collapse;\\n border: 1px solid #aaa;\\n padding: 0 0.8em 0.3em 0.5em;\\n}\\n.mwiki .portlet h1,\\n.mwiki .portlet h2,\\n.mwiki .portlet h3,\\n.mwiki .portlet h4 {\\n margin: 0;\\n padding: 0;\\n}\\n.mwiki .portlet ul {\\n line-height: 1.5em;\\n list-style-type: square;\\n font-size: 95%;\\n}\\n.mwiki .portlet li {\\n padding: 0;\\n margin: 0;\\n}\\n\\n/*\\n** Logo properties\\n*/\\n\\n.mwiki #p-logo {\\n top: 0;\\n left: 0;\\n position: absolute; /*needed to use z-index */\\n z-index: 3;\\n height: 155px;\\n width: 12em;\\n overflow: visible;\\n}\\n.mwiki #p-logo h5 {\\n display: none;\\n}\\n.mwiki #p-logo a,\\n.mwiki #p-logo a:hover {\\n display: block;\\n height: 155px;\\n width: 12.2em;\\n background-repeat: no-repeat;\\n background-position: 35% 50% !important;\\n text-decoration: none;\\n}\\n\\n/*\\n** Search portlet\\n*/\\n.mwiki #p-search {\\n position: relative;\\n z-index: 3;\\n}\\n.mwiki input.searchButton {\\n margin-top: 1px;\\n font-size: 95%;\\n}\\n.mwiki #searchGoButton {\\n padding-left: 0.5em;\\n padding-right: 0.5em;\\n font-weight: bold;\\n}\\n.mwiki #searchInput {\\n width: 10.9em;\\n margin: 0;\\n font-size: 95%;\\n}\\n.mwiki #p-search .pBody {\\n padding: 0.5em 0.4em 0.4em 0.4em;\\n text-align: center;\\n}\\n.mwiki #p-search #searchform div div {\\n margin-top: 0.4em;\\n font-size: 95%;\\n}\\n/*\\n** the personal toolbar\\n*/\\n.mwiki #p-personal {\\n position: absolute;\\n left: 0;\\n top: 0;\\n z-index: 0;\\n}\\n.mwiki #p-personal {\\n width: 100%;\\n white-space: nowrap;\\n padding: 0;\\n margin: 0;\\n border: none;\\n background: none;\\n overflow: visible;\\n line-height: 1.2em;\\n}\\n.mwiki #p-personal h5 {\\n display: none;\\n}\\n.mwiki #p-personal .portlet,\\n.mwiki #p-personal .pBody {\\n z-index: 0;\\n padding: 0;\\n margin: 0;\\n border: none;\\n overflow: visible;\\n background: none;\\n}\\n/* this is the ul contained in the portlet */\\n.mwiki #p-personal ul {\\n border: none;\\n line-height: 1.4em;\\n color: #2f6fab;\\n padding: 0 2em 0 3em;\\n margin: 0;\\n text-align: right;\\n list-style: none;\\n z-index: 0;\\n background: none;\\n cursor: default;\\n}\\n.mwiki #p-personal li {\\n z-index: 0;\\n border: none;\\n padding: 0;\\n display: inline;\\n color: #2f6fab;\\n margin-left: 1em;\\n line-height: 1.2em;\\n background: none;\\n}\\n.mwiki #p-personal li a {\\n text-decoration: none;\\n color: #005896;\\n padding-bottom: 0.2em;\\n background: none;\\n}\\n.mwiki #p-personal li a:hover {\\n background-color: white;\\n padding-bottom: 0.2em;\\n text-decoration: none;\\n}\\n.mwiki #p-personal li.active a:hover {\\n background-color: transparent;\\n}\\n/* the icon in front of the user name, single quotes\\nin bg url to hide it from iemac */\\n.mwiki li#pt-userpage,\\n.mwiki li#pt-anonuserpage,\\n.mwiki li#pt-login {\\n padding-left: 20px;\\n text-transform: none;\\n}\\n.mwiki #p-personal ul {\\n text-transform: lowercase;\\n}\\n.mwiki #p-personal li.active {\\n font-weight: bold;\\n}\\n/*\\n** the page-related actions- page/talk, edit etc\\n*/\\n.mwiki #p-cactions {\\n position: absolute;\\n top: 1.3em;\\n left: 11.5em;\\n margin: 0;\\n white-space: nowrap;\\n width: 76%;\\n line-height: 1.1em;\\n overflow: visible;\\n background: none;\\n border-collapse: collapse;\\n padding-left: 1em;\\n list-style: none;\\n font-size: 95%;\\n}\\n.mwiki #p-cactions ul {\\n list-style: none;\\n}\\n.mwiki #p-cactions li {\\n display: inline;\\n border: 1px solid #aaa;\\n border-bottom: none;\\n padding: 0 0 0.1em 0;\\n margin: 0 0.3em 0 0;\\n overflow: visible;\\n background: white;\\n}\\n.mwiki #p-cactions li.selected {\\n border-color: #fabd23;\\n padding: 0 0 0.2em 0;\\n font-weight: bold;\\n}\\n.mwiki #p-cactions li a {\\n background-color: #fbfbfb;\\n color: #002bb8;\\n border: none;\\n padding: 0 0.8em 0.3em;\\n position: relative;\\n z-index: 0;\\n margin: 0;\\n text-decoration: none;\\n}\\n.mwiki #p-cactions li.selected a {\\n z-index: 3;\\n padding: 0 1em 0.2em !important;\\n background-color: white;\\n}\\n.mwiki #p-cactions .new a {\\n color: #ba0000;\\n}\\n.mwiki #p-cactions li a:hover {\\n z-index: 3;\\n text-decoration: none;\\n background-color: white;\\n}\\n.mwiki #p-cactions h5 {\\n display: none;\\n}\\n.mwiki #p-cactions li.istalk {\\n margin-right: 0;\\n}\\n.mwiki #p-cactions li.istalk a {\\n padding-right: 0.5em;\\n}\\n.mwiki #p-cactions #ca-addsection a {\\n padding-left: 0.4em;\\n padding-right: 0.4em;\\n}\\n/* offsets to distinguish the tab groups */\\n.mwiki li#ca-talk {\\n margin-right: 1.6em;\\n}\\n.mwiki li#ca-watch,\\n.mwiki li#ca-unwatch,\\n.mwiki li#ca-varlang-0,\\n.mwiki li#ca-print {\\n margin-left: 1.6em;\\n}\\n.mwiki #p-cactions .pBody {\\n font-size: 1em;\\n background-color: transparent;\\n color: inherit;\\n border-collapse: inherit;\\n border: 0;\\n padding: 0;\\n}\\n.mwiki #p-cactions .hiddenStructure {\\n display: none;\\n}\\n.mwiki #p-cactions li a {\\n text-transform: lowercase;\\n}\\n\\n.mwiki #p-lang {\\n position: relative;\\n z-index: 3;\\n}\\n\\n/* #t-iscite is only used by the Cite extension, come up with some\\n * system which allows extensions to add to this file on the fly\\n */\\n.mwiki #t-ispermalink,\\n.mwiki #t-iscite {\\n color: #999;\\n}\\n/*\\n** footer\\n*/\\n.mwiki #footer {\\n background-color: white;\\n border-top: 1px solid #fabd23;\\n border-bottom: 1px solid #fabd23;\\n margin: 0.6em 0 1em 0;\\n padding: 0.4em 0 1.2em 0;\\n text-align: center;\\n font-size: 90%;\\n}\\n.mwiki #footer li {\\n display: inline;\\n margin: 0 1.3em;\\n}\\n.mwiki #f-poweredbyico,\\n.mwiki #f-copyrightico {\\n margin: 0 8px;\\n position: relative;\\n top: -2px; /* Bump it up just a tad */\\n}\\n.mwiki #f-poweredbyico {\\n float: right;\\n height: 1%;\\n}\\n.mwiki #f-copyrightico {\\n float: left;\\n height: 1%;\\n}\\n\\n/* js pref toc */\\n.mwiki #preftoc {\\n margin: 0;\\n padding: 0;\\n width: 100%;\\n clear: both;\\n}\\n.mwiki #preftoc li {\\n background-color: #f0f0f0;\\n color: #000;\\n}\\n.mwiki #preftoc li {\\n margin: 1px -2px 1px 2px;\\n float: left;\\n padding: 2px 0 3px 0;\\n border: 1px solid #fff;\\n border-right-color: #716f64;\\n border-bottom: 0;\\n position: relative;\\n white-space: nowrap;\\n list-style-type: none;\\n list-style-image: none;\\n z-index: 3;\\n}\\n.mwiki #preftoc li.selected {\\n font-weight: bold;\\n background-color: #f9f9f9;\\n border: 1px solid #aaa;\\n border-bottom: none;\\n cursor: default;\\n top: 1px;\\n padding-top: 2px;\\n margin-right: -3px;\\n}\\n.mwiki #preftoc > li.selected {\\n top: 2px;\\n}\\n.mwiki #preftoc a,\\n.mwiki #preftoc a:active {\\n display: block;\\n color: #000;\\n padding: 0 0.7em;\\n position: relative;\\n text-decoration: none;\\n}\\n.mwiki #preftoc li.selected a {\\n cursor: default;\\n text-decoration: none;\\n}\\n.mwiki #prefcontrol {\\n padding-top: 2em;\\n clear: both;\\n}\\n.mwiki #preferences {\\n margin: 0;\\n border: 1px solid #aaa;\\n clear: both;\\n padding: 1.5em;\\n background-color: #f9f9f9;\\n}\\n.mwiki .prefsection {\\n border: none;\\n padding: 0;\\n margin: 0;\\n}\\n.mwiki .prefsection fieldset {\\n border: 1px solid #aaa;\\n float: left;\\n margin-right: 2em;\\n}\\n.mwiki .prefsection legend {\\n font-weight: bold;\\n}\\n.mwiki .prefsection table,\\n.mwiki .prefsection legend {\\n background-color: #f9f9f9;\\n}\\n.mwiki .mainLegend {\\n display: none;\\n}\\n.mwiki div.prefsectiontip {\\n font-size: x-small;\\n padding: 0.2em 2em;\\n color: #666;\\n}\\n.mwiki .btnSavePrefs {\\n font-weight: bold;\\n padding-left: 0.3em;\\n padding-right: 0.3em;\\n}\\n\\n.mwiki .preferences-login {\\n clear: both;\\n margin-bottom: 1.5em;\\n}\\n\\n.mwiki .prefcache {\\n font-size: 90%;\\n margin-top: 2em;\\n}\\n\\n.mwiki div#userloginForm form,\\n.mwiki div#userlogin form#userlogin2 {\\n margin: 0 3em 1em 0;\\n border: 1px solid #aaa;\\n clear: both;\\n padding: 1.5em 2em;\\n background-color: #f9f9f9;\\n float: left;\\n}\\n.mwiki .rtl div#userloginForm form,\\n.mwiki .rtl div#userlogin form#userlogin2 {\\n float: right;\\n}\\n\\n.mwiki div#userloginForm table,\\n.mwiki div#userlogin form#userlogin2 table {\\n background-color: #f9f9f9;\\n}\\n\\n.mwiki div#userloginForm h2,\\n.mwiki div#userlogin form#userlogin2 h2 {\\n padding-top: 0;\\n}\\n\\n.mwiki div#userlogin .captcha,\\n.mwiki div#userloginForm .captcha {\\n border: 1px solid #bbb;\\n padding: 1.5em 2em;\\n background-color: white;\\n}\\n\\n.mwiki #loginend,\\n.mwiki #signupend {\\n clear: both;\\n}\\n\\n.mwiki #userloginprompt,\\n.mwiki #languagelinks {\\n font-size: 85%;\\n}\\n\\n.mwiki #login-sectiontip {\\n font-size: 85%;\\n line-height: 1.2;\\n padding-top: 2em;\\n}\\n\\n.mwiki #userlogin .loginText,\\n.mwiki #userlogin .loginPassword {\\n width: 12em;\\n}\\n\\n.mwiki #userloginlink a,\\n.mwiki #wpLoginattempt,\\n.mwiki #wpCreateaccount {\\n font-weight: bold;\\n}\\n\\n/* IE/Mac fixes were cut out */\\n\\n.mwiki .redirectText {\\n font-size: 150%;\\n margin: 5px;\\n}\\n\\n.mwiki .printfooter {\\n display: none;\\n}\\n\\n.mwiki .not-patrolled {\\n background-color: #ffa;\\n}\\n.mwiki div.patrollink {\\n clear: both;\\n font-size: 75%;\\n text-align: right;\\n}\\n.mwiki span.newpage,\\n.mwiki span.minor,\\n.mwiki span.bot {\\n font-weight: bold;\\n}\\n.mwiki span.unpatrolled {\\n font-weight: bold;\\n color: red;\\n}\\n\\n.mwiki .sharedUploadNotice {\\n font-style: italic;\\n}\\n\\n.mwiki span.updatedmarker {\\n color: black;\\n background-color: #0f0;\\n}\\n\\n.mwiki table.gallery {\\n border: 1px solid #ccc;\\n margin: 2px;\\n padding: 2px;\\n background-color: white;\\n}\\n\\n.mwiki table.gallery tr {\\n vertical-align: top;\\n}\\n\\n.mwiki table.gallery td {\\n vertical-align: top;\\n background-color: #f9f9f9;\\n border: solid 2px white;\\n}\\n/* Keep this temporarily so that cached pages will display right */\\n.mwiki table.gallery td.galleryheader {\\n text-align: center;\\n font-weight: bold;\\n}\\n.mwiki table.gallery caption {\\n font-weight: bold;\\n}\\n\\n.mwiki div.gallerybox {\\n margin: 2px;\\n}\\n\\n.mwiki div.gallerybox div.thumb {\\n text-align: center;\\n border: 1px solid #ccc;\\n margin: 2px;\\n}\\n\\n.mwiki div.gallerytext {\\n overflow: hidden;\\n font-size: 94%;\\n padding: 2px 4px;\\n}\\n\\n.mwiki span.comment {\\n font-style: italic;\\n}\\n\\n.mwiki span.changedby {\\n font-size: 95%;\\n}\\n\\n.mwiki .previewnote {\\n text-indent: 3em;\\n color: #c00;\\n border-bottom: 1px solid #aaa;\\n padding-bottom: 1em;\\n margin-bottom: 1em;\\n}\\n\\n.mwiki .previewnote p {\\n margin: 0;\\n padding: 0;\\n}\\n\\n.mwiki .editExternally {\\n border: 1px solid gray;\\n background-color: #ffffff;\\n padding: 3px;\\n margin-top: 0.5em;\\n float: left;\\n font-size: small;\\n text-align: center;\\n}\\n.mwiki .editExternallyHelp {\\n font-style: italic;\\n color: gray;\\n}\\n\\n.mwiki .toggle {\\n margin-left: 2em;\\n text-indent: -2em;\\n}\\n\\n/* Classes for EXIF data display */\\n.mwiki table.mw_metadata {\\n font-size: 0.8em;\\n margin-left: 0.5em;\\n margin-bottom: 0.5em;\\n width: 300px;\\n}\\n\\n.mwiki table.mw_metadata caption {\\n font-weight: bold;\\n}\\n\\n.mwiki table.mw_metadata th {\\n font-weight: normal;\\n}\\n\\n.mwiki table.mw_metadata td {\\n padding: 0.1em;\\n}\\n\\n.mwiki table.mw_metadata {\\n border: none;\\n border-collapse: collapse;\\n}\\n\\n.mwiki table.mw_metadata td,\\n.mwiki table.mw_metadata th {\\n text-align: center;\\n border: 1px solid #aaaaaa;\\n padding-left: 0.1em;\\n padding-right: 0.1em;\\n}\\n\\n.mwiki table.mw_metadata th {\\n background-color: #f9f9f9;\\n}\\n\\n.mwiki table.mw_metadata td {\\n background-color: #fcfcfc;\\n}\\n\\n.mwiki table.collapsed tr.collapsable {\\n display: none;\\n}\\n\\n/* filetoc */\\n.mwiki ul#filetoc {\\n text-align: center;\\n border: 1px solid #aaaaaa;\\n background-color: #f9f9f9;\\n padding: 5px;\\n font-size: 95%;\\n margin-bottom: 0.5em;\\n margin-left: 0;\\n margin-right: 0;\\n}\\n\\n.mwiki #filetoc li {\\n display: inline;\\n list-style-type: none;\\n padding-right: 2em;\\n}\\n\\n.mwiki input#wpSummary {\\n width: 80%;\\n}\\n\\n/* @bug 1714 */\\n.mwiki input#wpSave,\\n.mwiki input#wpDiff {\\n margin-right: 0.33em;\\n}\\n\\n.mwiki #wpSave {\\n font-weight: bold;\\n}\\n\\n/* Classes for article validation */\\n\\n.mwiki table.revisionform_default {\\n border: 1px solid #000000;\\n}\\n\\n.mwiki table.revisionform_focus {\\n border: 1px solid #000000;\\n background-color: #00bbff;\\n}\\n\\n.mwiki tr.revision_tr_default {\\n background-color: #eeeeee;\\n}\\n\\n.mwiki tr.revision_tr_first {\\n background-color: #dddddd;\\n}\\n\\n.mwiki p.revision_saved {\\n color: green;\\n font-weight: bold;\\n}\\n\\n.mwiki #mw_trackbacks {\\n border: solid 1px #bbbbff;\\n background-color: #eeeeff;\\n padding: 0.2em;\\n}\\n\\n/* Allmessages table */\\n\\n.mwiki #allmessagestable th {\\n background-color: #b2b2ff;\\n}\\n\\n.mwiki #allmessagestable tr.orig {\\n background-color: #ffe2e2;\\n}\\n\\n.mwiki #allmessagestable tr.new {\\n background-color: #e2ffe2;\\n}\\n\\n.mwiki #allmessagestable tr.def {\\n background-color: #f0f0ff;\\n}\\n\\n/* noarticletext */\\n.mwiki div.noarticletext {\\n border: 1px solid #ccc;\\n background: #fff;\\n padding: 0.2em 1em;\\n color: #000;\\n}\\n\\n.mwiki div#searchTargetContainer {\\n left: 10px;\\n top: 10px;\\n width: 90%;\\n background: white;\\n}\\n\\n.mwiki div#searchTarget {\\n padding: 3px;\\n margin: 5px;\\n background: #f0f0f0;\\n border: solid 1px blue;\\n}\\n\\n.mwiki div#searchTarget ul li {\\n list-style: none;\\n}\\n\\n.mwiki div#searchTarget ul li:before {\\n color: orange;\\n content: \\\"\\\\00BB \\\\0020\\\";\\n}\\n\\n.mwiki div#searchTargetHide {\\n float: right;\\n border: solid 1px black;\\n background: #dcdcdc;\\n padding: 2px;\\n}\\n\\n.mwiki #powersearch p {\\n margin-top: 0px;\\n}\\n\\n.mwiki div.multipageimagenavbox {\\n border: solid 1px silver;\\n padding: 4px;\\n margin: 1em;\\n background: #f0f0f0;\\n}\\n\\n.mwiki div.multipageimagenavbox div.thumb {\\n border: none;\\n margin-left: 2em;\\n margin-right: 2em;\\n}\\n\\n.mwiki div.multipageimagenavbox hr {\\n margin: 6px;\\n}\\n\\n.mwiki table.multipageimage td {\\n text-align: center;\\n}\\n\\n/** Special:Version */\\n\\n.mwiki table#sv-ext,\\ntable#sv-hooks,\\n.mwiki table#sv-software {\\n margin: 1em;\\n padding: 0em;\\n}\\n\\n.mwiki #sv-ext td,\\n.mwiki #sv-hooks td,\\n.mwiki #sv-software td,\\n.mwiki #sv-ext th,\\n.mwiki #sv-hooks th,\\n.mwiki #sv-software th {\\n border: 1px solid #a0a0a0;\\n padding: 0 0.15em 0 0.15em;\\n}\\n.mwiki #sv-ext th,\\n.mwiki #sv-hooks th,\\n.mwiki #sv-software th {\\n background-color: #f0f0f0;\\n color: black;\\n padding: 0 0.15em 0 0.15em;\\n}\\n.mwiki tr.sv-space {\\n height: 0.8em;\\n border: none;\\n}\\n.mwiki tr.sv-space td {\\n display: none;\\n}\\n\\n/*\\n Table pager (e.g. Special:Imagelist)\\n - remove underlines from the navigation link\\n - collapse borders\\n - set the borders to outsets (similar to Special:Allmessages)\\n - remove line wrapping for all td and th, set background color\\n - restore line wrapping for the last two table cells (description and size)\\n*/\\n.mwiki .TablePager {\\n min-width: 80%;\\n}\\n.mwiki .TablePager_nav a {\\n text-decoration: none;\\n}\\n.mwiki .TablePager {\\n border-collapse: collapse;\\n}\\n.mwiki .TablePager,\\n.mwiki .TablePager td,\\n.mwiki .TablePager th {\\n border: 1px solid #aaaaaa;\\n padding: 0 0.15em 0 0.15em;\\n}\\n.mwiki .TablePager th {\\n background-color: #eeeeff;\\n}\\n.mwiki .TablePager td {\\n background-color: #ffffff;\\n}\\n.mwiki .TablePager tr:hover td {\\n background-color: #eeeeff;\\n}\\n\\n.mwiki .imagelist td,\\n.mwiki .imagelist th {\\n white-space: nowrap;\\n}\\n.mwiki .imagelist .TablePager_col_links {\\n background-color: #eeeeff;\\n}\\n.mwiki .imagelist .TablePager_col_img_description {\\n white-space: normal;\\n}\\n.mwiki .imagelist th.TablePager_sort {\\n background-color: #ccccff;\\n}\\n\\n.mwiki .templatesUsed {\\n margin-top: 1.5em;\\n}\\n\\n.mwiki .mw-summary-preview {\\n margin: 0.1em 0;\\n}\\n\\n/* Friendlier slave lag warnings */\\n.mwiki div.mw-lag-warn-normal,\\n.mwiki div.mw-lag-warn-high {\\n padding: 3px;\\n text-align: center;\\n margin: 3px auto;\\n}\\n.mwiki div.mw-lag-warn-normal {\\n border: 1px solid #ffcc66;\\n background-color: #ffffcc;\\n}\\n.mwiki div.mw-lag-warn-high {\\n font-weight: bold;\\n border: 2px solid #ff0033;\\n background-color: #ffcccc;\\n}\\n\\n.mwiki .MediaTransformError {\\n background-color: #ccc;\\n padding: 0.1em;\\n}\\n.mwiki .MediaTransformError td {\\n text-align: center;\\n vertical-align: middle;\\n font-size: 90%;\\n}\\n\\n/** Special:Search stuff */\\n.mwiki div#mw-search-interwiki-caption {\\n text-align: center;\\n font-weight: bold;\\n font-size: 95%;\\n}\\n\\n.mwiki .mw-search-interwiki-project {\\n font-size: 97%;\\n text-align: left;\\n padding-left: 0.2em;\\n padding-right: 0.15em;\\n padding-bottom: 0.2em;\\n padding-top: 0.15em;\\n background: #cae8ff;\\n}\\n\\n/* God-damned hack for the crappy layout */\\n.mwiki .os-suggest {\\n font-size: 127%;\\n}\\n\\n/**** Excerpts from http://en.wikipedia.org/wiki/MediaWiki:Common.css ******/\\n/* Since GoldenDict support is not Wikipedia-specific, we don't include all\\n * of it, and besides, it's large and volatile anyway. */\\n/* It was also edited for the usually narrow article view */\\n\\n/* Make the list of references smaller */\\n.mwiki ol.references {\\n font-size: 100%;\\n}\\n.mwiki .references-small {\\n font-size: 90%;\\n}\\n\\n.mwiki .references-2column {\\n font-size: 90%;\\n column-count: 2;\\n}\\n\\n/* Highlight clicked reference in blue to help navigation */\\n.mwiki ol.references > li:target {\\n background-color: #def;\\n}\\n\\n.mwiki sup.reference:target {\\n background-color: #def;\\n}\\n\\n/* Styling for citations */\\n.mwiki cite {\\n font-style: normal;\\n word-wrap: break-word;\\n}\\n\\n/* If there is an inline link to a full citation, the full citation will turn blue when the inline link is clicked */\\n.mwiki cite:target {\\n background-color: #def;\\n}\\n\\n/* wikitable/prettytable class for skinning normal tables */\\n.mwiki table.wikitable,\\n.mwiki table.prettytable {\\n margin: 1em 1em 1em 0;\\n background: #f9f9f9;\\n border: 1px #aaa solid;\\n border-collapse: collapse;\\n}\\n.mwiki .wikitable th,\\n.mwiki .wikitable td,\\n.mwiki .prettytable th,\\n.mwiki .prettytable td {\\n border: 1px #aaa solid;\\n padding: 0.2em;\\n}\\n.mwiki .wikitable th,\\n.mwiki .prettytable th {\\n background: #f2f2f2;\\n text-align: center;\\n}\\n.mwiki .wikitable caption,\\n.mwiki .prettytable caption {\\n font-weight: bold;\\n}\\n\\n/* default skin for navigation boxes */\\n.mwiki table.navbox {\\n /* navbox container style */\\n border: 1px solid #aaa;\\n width: 100%;\\n margin: auto;\\n clear: both;\\n font-size: 88%;\\n text-align: center;\\n padding: 1px;\\n}\\n.mwiki table.navbox + table.navbox {\\n margin-top: -1px; /* single pixel border between adjacent navboxes (doesn't work for IE6, but that's okay) */\\n}\\n.mwiki .navbox-title,\\n.mwiki .navbox-abovebelow,\\n.mwiki table.navbox th {\\n text-align: center; /* title and above/below styles */\\n padding-left: 1em;\\n padding-right: 1em;\\n}\\n.mwiki .navbox-group {\\n /* group style */\\n white-space: nowrap;\\n text-align: right;\\n font-weight: bold;\\n padding-left: 1em;\\n padding-right: 1em;\\n}\\n.mwiki .navbox,\\n.mwiki .navbox-subgroup {\\n background: #fdfdfd; /* Background color */\\n}\\n.mwiki .navbox-list {\\n border-color: #fdfdfd; /* Must match background color */\\n}\\n.mwiki .navbox-title,\\n.mwiki table.navbox th {\\n background: #ccccff; /* Level 1 color */\\n}\\n.mwiki .navbox-abovebelow,\\n.mwiki .navbox-group,\\n.mwiki .navbox-subgroup .navbox-title {\\n background: #ddddff; /* Level 2 color */\\n}\\n.mwiki .navbox-subgroup .navbox-group,\\n.mwiki .navbox-subgroup .navbox-abovebelow {\\n background: #e6e6ff; /* Level 3 color */\\n}\\n.mwiki .navbox-even {\\n background: #f7f7f7; /* Even row striping */\\n}\\n.mwiki .navbox-odd {\\n background: transparent; /* Odd row striping */\\n}\\n\\n.mwiki .collapseButton {\\n /* 'show'/'hide' buttons created dynamically by the */\\n float: right; /* CollapsibleTables javascript in [[MediaWiki:Common.js]] */\\n font-weight: normal; /* are styled here so they can be customised. */\\n text-align: right;\\n width: auto;\\n}\\n.mwiki .navbox .collapseButton {\\n /* In navboxes, the show/hide button balances the vde links from */\\n width: 6em; /* [[Template:Tnavbar]], so they need to be the same width. */\\n}\\n\\n/* Infobox template style */\\n.mwiki .infobox {\\n border: 1px solid #aaa;\\n background-color: #f9f9f9;\\n color: black;\\n /* margin: 0.5em 0 0.5em 1em;*/\\n margin: 10px auto 0;\\n padding: 0.2em;\\n /*\\n float: right;\\n clear: right;*/\\n}\\n\\n.mwiki .infobox td,\\n.mwiki .infobox th {\\n vertical-align: top;\\n}\\n.mwiki .infobox caption {\\n font-size: larger;\\n}\\n.mwiki .infobox.bordered {\\n border-collapse: collapse;\\n}\\n.mwiki .infobox.bordered td,\\n.mwiki .infobox.bordered th {\\n border: 1px solid #aaa;\\n}\\n.mwiki .infobox.bordered .borderless td,\\n.mwiki .infobox.bordered .borderless th {\\n border: 0;\\n}\\n\\n.mwiki .infobox.sisterproject {\\n width: 20em;\\n font-size: 90%;\\n}\\n\\n.mwiki .infobox.standard-talk {\\n border: 1px solid #c0c090;\\n background-color: #f8eaba;\\n}\\n.mwiki .infobox.standard-talk.bordered td,\\n.mwiki .infobox.standard-talk.bordered th {\\n border: 1px solid #c0c090;\\n}\\n\\n/* styles for bordered infobox with merged rows */\\n.mwiki .infobox.bordered .mergedtoprow td,\\n.mwiki .infobox.bordered .mergedtoprow th {\\n border: 0;\\n border-top: 1px solid #aaa;\\n border-right: 1px solid #aaa;\\n}\\n\\n.mwiki .infobox.bordered .mergedrow td,\\n.mwiki .infobox.bordered .mergedrow th {\\n border: 0;\\n border-right: 1px solid #aaa;\\n}\\n\\n/* Styles for geography infoboxes, e.g. countries, country subdivisions, cities, etc. */\\n.mwiki .infobox.geography {\\n text-align: left;\\n border-collapse: collapse;\\n line-height: 1.2em;\\n font-size: 90%;\\n}\\n\\n.mwiki .infobox.geography td,\\n.mwiki .infobox.geography th {\\n border-top: solid 1px #aaa;\\n padding: 0.4em 0.6em 0.4em 0.6em;\\n}\\n.mwiki .infobox.geography .mergedtoprow td,\\n.mwiki .infobox.geography .mergedtoprow th {\\n border-top: solid 1px #aaa;\\n padding: 0.4em 0.6em 0.2em 0.6em;\\n}\\n\\n.mwiki .infobox.geography .mergedrow td,\\n.mwiki .infobox.geography .mergedrow th {\\n border: 0;\\n padding: 0 0.6em 0.2em 0.6em;\\n}\\n\\n.mwiki .infobox.geography .mergedbottomrow td,\\n.mwiki .infobox.geography .mergedbottomrow th {\\n border-top: 0;\\n border-bottom: solid 1px #aaa;\\n padding: 0 0.6em 0.4em 0.6em;\\n}\\n\\n.mwiki .infobox.geography .maptable td,\\n.mwiki .infobox.geography .maptable th {\\n border: 0;\\n padding: 0;\\n}\\n\\n/* Style for \\\"notices\\\" */\\n.mwiki .notice {\\n margin: 1em;\\n padding: 0.2em;\\n}\\n\\n.mwiki #disambig {\\n border-top: 1px solid #ccc;\\n border-bottom: 1px solid #ccc;\\n}\\n\\n.mwiki .rellink,\\n.mwiki .dablink {\\n font-style: italic;\\n padding-left: 2em;\\n}\\n.mwiki .rellink i,\\n.mwiki .dablink i {\\n font-style: normal;\\n}\\n\\n/* Article message box styles */\\n.mwiki table.ambox {\\n /* 10% = Will not overlap with other elements */\\n margin: -1px 10% 0px; /* -1px = Single border between stacked boxes in all browsers */\\n border: 1px solid #aaa;\\n border-left: 10px solid #1e90ff; /* Default \\\"notice\\\" blue */\\n background: #fbfbfb;\\n}\\n.mwiki .ambox th.mbox-text,\\n.mwiki .ambox td.mbox-text {\\n /* The message body cell(s) */\\n padding: 0.25em 0.5em; /* 0.5em left/right */\\n}\\n.mwiki .ambox td.mbox-image {\\n /* The left image cell */\\n padding: 2px 0 2px 0.5em; /* 0.5em left, 0px right */\\n}\\n.mwiki .ambox td.mbox-imageright {\\n /* The right image cell */\\n padding: 2px 0.5em 2px 0; /* 0px left, 0.5em right */\\n}\\n\\n/* Standard Navigationsleisten, aka box hiding thingy from .de. Documentation at [[Wikipedia:NavFrame]]. */\\n.mwiki div.NavFrame {\\n margin: 0;\\n padding: 4px;\\n border: 1px solid #aaa;\\n text-align: center;\\n border-collapse: collapse;\\n font-size: 95%;\\n}\\n.mwiki div.NavFrame + div.NavFrame {\\n border-top-style: none;\\n border-top-style: hidden;\\n}\\n.mwiki div.NavPic {\\n background-color: #fff;\\n margin: 0;\\n padding: 2px;\\n float: left;\\n}\\n.mwiki div.NavFrame div.NavHead {\\n height: 1.6em;\\n font-weight: bold;\\n background-color: #ccf;\\n position: relative;\\n}\\n.mwiki div.NavFrame p {\\n font-size: 100%;\\n}\\n.mwiki div.NavFrame div.NavContent {\\n font-size: 100%;\\n}\\n.mwiki div.NavFrame div.NavContent p {\\n font-size: 100%;\\n}\\n.mwiki div.NavEnd {\\n margin: 0;\\n padding: 0;\\n line-height: 1px;\\n clear: both;\\n}\\n.mwiki a.NavToggle {\\n position: absolute;\\n top: 0;\\n right: 3px;\\n font-weight: normal;\\n font-size: 90%;\\n}\\n\\n/****** Wiktionary-specific excerpts *********/\\n\\n.mwiki .audiolink a {\\n background: url(\\\"qrc:///icons/audio.png\\\") center left no-repeat !important;\\n padding-left: 20px !important;\\n padding-right: 0 !important;\\n}\\n\\n/* default setting for [[:Category:Inflection templates]] */\\n\\n.mwiki .infl-inline {\\n display: inline;\\n}\\n.mwiki .infl-table {\\n display: none;\\n}\\n\\n.gddicticon {\\n display: none;\\n}\\n\\n.gddicticon img {\\n height: 1rem;\\n}\\n\\n.gdexpandicon {\\n cursor: pointer;\\n width: 1rem;\\n height: 1rem;\\n vertical-align: text-bottom;\\n content: url(\\\"qrc:///icons/arrow.svg\\\");\\n}\\n\\n.gdcollapseicon {\\n cursor: pointer;\\n width: 1rem;\\n height: 1rem;\\n vertical-align: text-bottom;\\n content: url(\\\"qrc:///icons/downarrow.svg\\\");\\n}\\n\\n.gdexpandicon:focus,\\n.gdcollapseicon:focus {\\n outline: 2px solid var(--link-color);\\n outline-offset: 2px;\\n}\\n\\n/********** Slob dictionaries ***********/\\n\\n.slobdict_headword {\\n display: none;\\n}\\n\\n.slobdict img.imgtex {\\n vertical-align: baseline !important;\\n}\\n\\n/************* Welcome Page **************/\\n\\n.welcome-container {\\n max-width: 850px;\\n margin: 2em auto;\\n padding: 1.5em 2em;\\n line-height: 1.7;\\n color: var(--text-color);\\n /* Optional: background and border-radius for a card-like look */\\n /* background-color: var(--container-bg); */\\n /* border-radius: 8px; */\\n}\\n.welcome-container h3,\\n.welcome-container h4 {\\n text-align: center;\\n margin-bottom: 1em;\\n}\\n.welcome-container h3 {\\n font-size: 1.6em;\\n font-weight: 600;\\n}\\n.welcome-container h4 {\\n font-size: 1.2em;\\n font-weight: 500;\\n margin-top: 2em;\\n}\\n.welcome-container p,\\n.welcome-container ul {\\n margin-bottom: 1.2em;\\n}\\n.welcome-container ul {\\n list-style: none;\\n padding-left: 20px;\\n}\\n.welcome-container li {\\n margin-bottom: 0.5em;\\n position: relative;\\n padding-left: 25px;\\n}\\n.welcome-container li::before {\\n content: \\\"✓\\\";\\n position: absolute;\\n left: 0;\\n color: var(--link-color);\\n}\\n.welcome-container a {\\n color: var(--link-color);\\n text-decoration: none;\\n transition: color 0.2s;\\n}\\n.welcome-container a:hover {\\n text-decoration: underline;\\n}\\n.welcome-footer {\\n margin-top: 2.5em;\\n text-align: center;\\n font-size: 0.85em;\\n color: var(--secondary-text-color);\\n}\\n\\n.menu-path > span {\\n --menu-path-text-color: #3b5998;\\n --menu-path-arrow-color: #8b9dc3;\\n font-weight: 600;\\n font-style: normal;\\n color: var(--menu-path-text-color);\\n}\\n.menu-path > span + span::before {\\n content: \\\"\\\";\\n display: inline-block;\\n width: 1em;\\n height: 1em;\\n margin: 0 0.3em;\\n vertical-align: -0.15em;\\n background-color: var(--menu-path-arrow-color);\\n -webkit-mask-image: url('data:image/svg+xml;utf8,<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\" fill=\\\"black\\\"><path d=\\\"M10 6L8.59 7.41L13.17 12l-4.58 4.59L10 18l6-6z\\\"/></svg>');\\n mask-image: url('data:image/svg+xml;utf8,<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\" fill=\\\"black\\\"><path d=\\\"M10 6L8.59 7.41L13.17 12l-4.58 4.59L10 18l6-6z\\\"/></svg>');\\n}\\n/************* GLS dictionaries **************/\\n\\n.glsdict_headwords {\\n font-weight: bold;\\n margin-top: 15px;\\n margin-bottom: 10px;\\n font-size: 116%;\\n}\\n\\n.gls_wav img {\\n vertical-align: middle;\\n}\\n\",\"article-style-print.css\":\"/* This stylesheet is used for printing only, overriding article-style.css */\\n\\n@page {\\n size: auto;\\n margin: 1.5cm;\\n}\\n\\nhtml,\\nbody {\\n background: white !important;\\n color: black !important;\\n margin: 0; /* Let @page or browser handle margins */\\n padding: 0;\\n}\\n\\nbody {\\n /* Fallback margin for engines that ignore @page */\\n margin: 1.5cm;\\n}\\n\\n.gdarticle {\\n background: white !important;\\n color: black !important;\\n text-align: justify;\\n}\\n\\n/* Hide audio icons */\\n\\n.dsl_s_wav {\\n display: none;\\n}\\n\\n/* hide collapse area*/\\n\\n.collapse_expand_area {\\n display: none;\\n}\\n\\n/* Hide edit links and other UI elements for printing */\\n.mwiki .editsection,\\n.mwiki .mw-editsection,\\n.mwiki .toctoggle,\\n.mwiki .magnify {\\n display: none !important;\\n}\\n\\n/* Reset MediaWiki TOC for printing */\\n.mwiki #toc,\\n.mwiki .toc {\\n display: block !important;\\n position: static !important;\\n width: 100% !important;\\n box-sizing: border-box !important;\\n height: auto !important;\\n max-height: none !important;\\n max-width: none !important;\\n opacity: 1 !important;\\n overflow: visible !important;\\n float: none !important;\\n clear: both !important;\\n margin: 1em 0 !important;\\n box-shadow: none !important;\\n border: none !important;\\n}\\n\\n.mwiki #toc .toctitle,\\n.mwiki .toc .toctitle,\\n.mwiki #toc ul,\\n.mwiki .toc ul {\\n position: static !important;\\n display: block !important;\\n width: auto !important;\\n height: auto !important;\\n border-bottom: none !important;\\n}\\n\\n.mwiki #toc ul,\\n.mwiki .toc ul {\\n border-bottom: none !important;\\n}\\n\\n/* Reset wrappers that might be using display: contents */\\n.mwiki div[class*=\\\"toclimit-\\\"],\\n.mwiki div.tocright {\\n display: block !important;\\n float: none !important;\\n clear: both !important;\\n width: 100% !important;\\n}\\n\",\"article-style-st-babylon.css\":\"html {\\n background-color: white;\\n}\\n\\nbody {\\n background: white;\\n}\\n\\n.gdarticle {\\n background: white;\\n}\\n\\nh3 {\\n font-size: 1em;\\n}\\n\\n::selection {\\n background: #4492e8;\\n color: white;\\n}\\n\\n/* Dictionary's name heading */\\n.gddictname {\\n font-weight: normal;\\n font-size: 11px;\\n border: none;\\n border-top-left-radius: 8px;\\n border-top-right-radius: 0px;\\n background: #f0eded;\\n padding-top: 5px;\\n padding-bottom: 5px;\\n}\\n\\n.gddicticon {\\n display: inline;\\n padding-right: 5px;\\n}\\n\\n.gddicticon img {\\n border: 0;\\n height: 16px;\\n vertical-align: text-top;\\n}\\n\\n/* The 'From ' string which precedes dictionary name in the heading */\\n.gdfromprefix {\\n display: none;\\n}\\n\\n/* Move the collapse/expand buttons to the right */\\n.collapse_expand_area {\\n float: right;\\n margin-right: 2px;\\n}\\n\\n.gdexpandicon,\\n.gdexpandicon:hover,\\n.gdcollapseicon,\\n.gdcollapseicon:hover {\\n width: auto;\\n height: 100%;\\n vertical-align: text-bottom;\\n}\\n\\n.gdexpandicon {\\n content: url(\\\"qrc:///icons/expand_article.svg\\\");\\n}\\n\\n.gdexpandicon:hover {\\n content: url(\\\"qrc:///icons/expand_article_hovered.svg\\\");\\n}\\n\\n.gdcollapseicon {\\n content: url(\\\"qrc:///icons/collapse_article.svg\\\");\\n}\\n\\n.gdcollapseicon:hover {\\n content: url(\\\"qrc:///icons/collapse_article_hovered.svg\\\");\\n}\\n\\n.bglpos {\\n color: black;\\n font-weight: bold;\\n font-size: 11px;\\n background: #f0eded;\\n display: inline;\\n}\\n\\n.bgltrn {\\n color: #808080;\\n font-size: 12px;\\n display: inline;\\n}\\n\\na,\\n.mwiki a {\\n color: #0066cc;\\n}\\n\",\"article-style-st-classic.css\":\"/******** Global, non-dictionary-specific classes ***********/\\n\\nhtml {\\n height: 100%;\\n}\\n\\nbody {\\n background: #fefdeb;\\n font-family: Tahoma, Verdana, \\\"Lucida Sans Unicode\\\", sans-serif;\\n height: 100%;\\n}\\n\\n/* This stylesheet is used to highligh current selection when doing a search.\\n It changes the default selection color (e.g. blue under Windows, orange under Ubuntu) */\\n\\n/* highlight/select color in Windows when a widget is inactive is nearly impossible to read (light gray).\\n * then change it to green to use with the find option. */\\n::selection {\\n background: #c00;\\n color: #fff;\\n}\\n\\n/* Don't allow to select [] */\\n:before,\\n:after {\\n user-select: none;\\n}\\n\\n/* Plaintext dictionaries are usually 80-column formatted and take a lot\\n * of space. We try to use smaller fonts for them therefore. */\\npre {\\n font-size: 12px;\\n}\\n\\n/* Dictionary's name heading */\\n.gddictname {\\n /* border: 1px dotted black;\\n padding: 0.2em;\\n padding-left: 0.5em;\\n margin-top: 1.2em;\\n margin-bottom: 9px;\\n font-weight: bold;\\n font-size: 14px;\\n background: #ffffdd; */\\n}\\n\\n.gddicttitle {\\n user-select: none;\\n}\\n\\n/* The 'From ' string which precedes dictionary name in the heading */\\n.gdfromprefix {\\n display: none;\\n}\\n\\n/* The article span. Here we have a padding/margin hack to make fragment links\\n behave better (have some space before the start of article) */\\n.gdarticle {\\n display: block;\\n padding-top: 1px;\\n margin-top: -8px;\\n margin-bottom: 8px;\\n background: #fefdeb;\\n /*fix for invalid blg*/\\n font-style: normal;\\n}\\n\\n/* CSS trick to prevent the floating elements to overflow\\n the article boundaries, see Issue #333. */\\n.gdarticle:after {\\n content: \\\"\\\";\\n display: block;\\n height: 0;\\n clear: both;\\n}\\n\\n/* Appears between the articles */\\n.gdarticleseparator {\\n display: inline-block;\\n clear: both;\\n}\\n\\n/* Dictionary query error description string */\\n.gderrordesc {\\n font-style: italic;\\n background: url(\\\"qrc:///icons/warning.svg\\\") center left no-repeat !important;\\n background-size: auto min(100%, 24px);\\n padding-left: 2em !important;\\n margin: 1em;\\n}\\n\\n/********* Babylon dictionaries' classes *********/\\n\\n/* Transcriptions in Babylon dictionaries */\\n.bgltrn:before {\\n content: \\\"[\\\";\\n}\\n\\n.bgltrn:after {\\n content: \\\"]\\\";\\n}\\n\\n.bgltrn {\\n display: block;\\n}\\n\\n/* Part of speech in Babylon dictionaries. Usually irrelevant,\\n * therefore hidden */\\n.bglpos {\\n display: none;\\n}\\n\\n/* Right-to-left text */\\n.bglrtl {\\n text-align: right;\\n direction: rtl;\\n}\\n\\n/******** StarDict dictionaries' classes *********/\\n\\n/* StarDict type 'h' -- Html content. We don't normally do anything here. */\\n.sdct_h {\\n}\\n\\n.sdict_h_wav img {\\n vertical-align: middle;\\n}\\n\\n/* StarDict type 'm' -- Pure meaning. Presented as <pre> */\\n.sdct_m {\\n}\\n\\n/* StarDict type 'l' -- Pure meaning which used to be in locale encoding. */\\n.sdct_l {\\n}\\n\\n/* StarDict type 'g' -- Pango Markup */\\n.sdct_g {\\n}\\n\\n/* StarDict type 't' -- Transcription */\\n.sdct_t {\\n font-weight: bold;\\n}\\n\\n/* StarDict type 'y' -- Chinese YinBiao or Japanese KANA */\\n.sdct_y {\\n}\\n\\n/* StarDict type 'x'. Should have xdxf_*-styled elements inside */\\n.sdct_x {\\n}\\n\\n/* Blockquotes in XDXF-styled elements are used\\n for indentation purposes, see Issue #305. */\\n.sdct_x blockquote {\\n margin: 0px;\\n padding-left: 9px;\\n display: inline-block;\\n}\\n\\n/******** XDXF markup classes *********/\\n\\ndiv.xdxf {\\n}\\n\\n/* Key -- keys shouldn't normally be present in the article's body since they\\n * are accounted for separately, hence we hide them */\\n.xdxf_k {\\n display: none;\\n}\\n\\n/* ...and if there's a break after it, we hide it too so we don't have an\\n * extra vertical spacing. */\\n.xdxf_k + br {\\n display: none;\\n}\\n\\n/* Article structure tag */\\n.xdxf_num {\\n color: red;\\n font-weight: bold;\\n padding-left: -15px;\\n}\\n.xdxf_def {\\n display: block;\\n border-color: #e3e3e3;\\n border-width: 1px;\\n border-style: dashed;\\n margin: 1px;\\n margin-left: 15px;\\n}\\n\\n.xdxf_def:target {\\n /* this pseudoclass is used to marked out the referenced <def> that was just clicked */\\n border-color: red;\\n border-width: 1px;\\n border-style: double;\\n}\\n\\n/* Abbreviation */\\n.xdxf_abbr {\\n font-style: italic;\\n color: seagreen;\\n cursor: default;\\n border-bottom: 1px seagreen dotted;\\n}\\n\\n/* Editorial comment */\\n.xdxf_co,\\n.xdxf_co_old {\\n color: darkslateblue;\\n font-style: italic;\\n}\\n.xdxf_co:before {\\n content: \\\"(\\\";\\n}\\n.xdxf_co:after {\\n content: \\\")\\\";\\n}\\n\\n/* Grammar information */\\n.xdxf_gr {\\n color: orangered;\\n display: block;\\n}\\n\\n.xdxf_gr_old {\\n color: blue; /*orangered;*/\\n}\\n\\n/* Example */\\n.xdxf_ex {\\n color: #808080;\\n display: block;\\n margin-left: 14px;\\n}\\n\\n.xdxf_ex_old {\\n color: #808080;\\n}\\n\\n.xdxf_ex_source:before {\\n content: \\\"[\\\";\\n}\\n.xdxf_ex_source:after {\\n content: \\\"]\\\";\\n}\\n\\n.xdxf_ex_tran:before {\\n content: \\\"— \\\";\\n}\\n\\n.xdxf_ex_tran {\\n font-style: italic;\\n}\\n\\n/* Direct translation */\\n.xdxf_dtrn {\\n font-weight: bold;\\n color: #dd7800;\\n}\\n\\n/* Transcription */\\n.xdxf_tr:before {\\n content: \\\"[\\\";\\n}\\n\\n.xdxf_tr:after {\\n content: \\\"]\\\";\\n}\\n\\n.xdxf_tr,\\n.xdxf_tr_old {\\n font-weight: bold;\\n}\\n\\n/* Resource reference -- for now just a span. Since there's not yet a mechanism\\n * to load resources off XDXF articles in GoldenDict, we just hide them. */\\n.xdxf_rref {\\n display: none;\\n}\\n\\n.xdxf_headwords {\\n font-size: 116%;\\n font-weight: bold;\\n margin-top: 10px;\\n margin-bottom: 10px;\\n}\\n\\n/* The words in examples that are meaked out; they are marked out only when placed into <ex> tag */\\n.xdxf_ex .xdxf_ex_markd,\\n.xdxf_ex_old .xdxf_ex_markd {\\n color: black;\\n background-color: lightgray;\\n}\\n\\n.xdxf_opt {\\n color: #808080;\\n}\\n\\n/******** SDictionary markup classes *********/\\n\\n.sdict_forms {\\n font-style: italic;\\n}\\n\\n/* Transcription */\\n.sdict_tr:before {\\n content: \\\"[\\\";\\n}\\n\\n.sdict_tr:after {\\n content: \\\"] \\\";\\n}\\n\\n.sdict_tr {\\n font-weight: bold;\\n}\\n\\n/************* LSA audio archives **************/\\n\\n/************* DSL dictionaries **************/\\n\\n.dsl_u {\\n text-decoration: underline;\\n}\\n\\n.dsl_article {\\n display: inline;\\n}\\n\\n.dsl_article .c_default_color {\\n color: green;\\n}\\n\\n.dsl_m,\\n.dsl_m0 {\\n padding-left: 0px;\\n}\\n\\n.dsl_m1 {\\n padding-left: 9px;\\n}\\n\\n.dsl_m2 {\\n padding-left: 18px;\\n}\\n\\n.dsl_m3 {\\n padding-left: 27px;\\n}\\n\\n.dsl_m4 {\\n padding-left: 36px;\\n}\\n\\n.dsl_m5 {\\n padding-left: 45px;\\n}\\n\\n.dsl_m6 {\\n padding-left: 54px;\\n}\\n\\n.dsl_m7 {\\n padding-left: 63px;\\n}\\n\\n.dsl_m8 {\\n padding-left: 72px;\\n}\\n\\n.dsl_m9 {\\n padding-left: 81px;\\n}\\n\\n.dsl_p, .dsl_p :not(a) /* DSL Feature: Enforce the style even if the children tags say otherwise, except links */ {\\n color: green !important; /* DSL label color must have highest priority */\\n font-style: italic;\\n cursor: default;\\n font-weight: normal; /* DSL feature: labels are always of normal weight */\\n}\\n\\n.dsl_stress_without_accent {\\n display: none;\\n}\\n\\n.dsl_t {\\n font-weight: bold;\\n}\\n\\n.dsl_headwords {\\n font-weight: bold;\\n margin-top: 15px;\\n margin-bottom: 10px;\\n}\\n\\n.dsl_headwords p {\\n font-weight: bold;\\n font-size: 15px;\\n margin: 0;\\n}\\n\\n.dsl_definition p {\\n margin: 0;\\n}\\n\\n.dsl_opt {\\n display: none;\\n}\\n\\n.dsl_opt,\\n.dsl_opt .dsl_ex,\\n.dsl_opt .dsl_ex :not(a),\\n.dsl_opt .dsl_ex [color] /* DSL Feature: Enforce the optional zone color even if the children tags say otherwise */ {\\n color: gray;\\n}\\n\\n.dsl_ex,\\n.dsl_ex .dsl_opt {\\n color: gray;\\n}\\n\\n/* Style for expand optional parts button */\\n.hidden_expand_opt {\\n color: blue;\\n cursor: pointer;\\n vertical-align: text-bottom;\\n width: 16px;\\n height: auto;\\n}\\n\\n.dsl_s_wav img {\\n vertical-align: middle;\\n}\\n\\n.dsl_video .img {\\n display: inline-block;\\n background: url(\\\"qrc:///icons/video.svg\\\");\\n background-repeat: no-repeat;\\n vertical-align: middle;\\n width: 22px;\\n height: 22px;\\n margin: 0;\\n padding: 0;\\n}\\n\\n.dsl_video .filename {\\n display: none; /* by default, the file name is hidden */\\n padding-left: 5px;\\n}\\n\\n/************* MDict dictionaries **************/\\n.mdict {\\n}\\n\\n.mdict a[name] {\\n text-decoration: none;\\n color: inherit;\\n}\\n\\n/************* Zim dictionaries **************/\\n\\n.zimdict {\\n font-size: 110% !important;\\n}\\n\\n.zimdict_headword {\\n font-weight: bold !important;\\n}\\n\\n/************* Spelling suggestions *****************/\\n\\n.gdspellsuggestion {\\n /* Add some vertical space before the article */\\n margin-top: 1em;\\n}\\n\\n/************* Stemmed suggestions *****************/\\n\\n.gdstemmedsuggestion {\\n /* Add some horizontal and vertical space */\\n margin-top: 1em;\\n margin-left: 1px;\\n}\\n\\n.gdstemmedsuggestion_head {\\n margin-left: 11px;\\n font-style: italic;\\n}\\n\\n.gdstemmedsuggestion_body {\\n}\\n\\n/************* Dictd articles *****************/\\n.dictd_article {\\n /* Add some vertical space before the article */\\n margin-top: 1em;\\n}\\n\\n.dictd_phonetic:before,\\n.dictd_phonetic:after {\\n content: \\\"\\\\\\\\\\\";\\n font-style: normal;\\n}\\n\\n.dictd_phonetic:after {\\n margin-left: 3px;\\n}\\n\\n.dictd_phonetic {\\n font-style: italic;\\n color: #009900;\\n}\\n\\n.dictd_article a:link {\\n color: #0000ff;\\n}\\n\\n.dictserver_from {\\n font-size: 110%;\\n font-weight: 600;\\n}\\n\\n/************* Epwing dictionaries *****************/\\n\\n.epwing_narrow_font {\\n width: 0.5em;\\n height: 1em;\\n vertical-align: -15%;\\n}\\n\\n.epwing_wide_font {\\n width: 1em;\\n height: 1em;\\n vertical-align: -15%;\\n}\\n\\n.epwing_article {\\n display: inline;\\n}\\n\\n/************* Websites *****************/\\n\\n.website_padding {\\n height: 1em;\\n clear: both;\\n}\\n\\n/************* Forvo **************/\\n\\n.forvo_headword {\\n margin-top: 15px;\\n margin-bottom: 10px;\\n font-weight: bold;\\n font-size: 15px;\\n}\\n\\n/* A table which contains a play icon and information about the sound */\\n.forvo_play {\\n margin-top: 8px;\\n margin-left: 8px;\\n}\\n\\n.forvo_user {\\n text-decoration: none;\\n color: green;\\n}\\n\\n.forvo_location {\\n color: grey;\\n}\\n\\n.forvo_positive_votes {\\n font-weight: bold;\\n color: green;\\n}\\n\\n.forvo_negative_votes {\\n font-weight: bold;\\n color: red;\\n}\\n\\n/************* MediaWiki articles *****************\\n The following consist of excerpts from different .css files edited\\n with a .mwiki prepended to each record.\\n*/\\n\\n.mwiki {\\n /* Add some vertical space before the article */\\n margin-top: 1em;\\n}\\n\\n.mwiki .topicon {\\n /* Those are padlocks on top and such -- we disable those for GoldenDict\\n since they look really ugly here */\\n display: none;\\n}\\n\\n/************ common.css **************/\\n\\n/**\\n * CSS in this file is used by *all* skins (that have any CSS at all). Be\\n * careful what you put in here, since what looks good in one skin may not in\\n * another, but don't ignore the poor non-Monobook users either.\\n */\\n.mwiki .mw-plusminus-null {\\n color: #aaa;\\n}\\n\\n.mwiki .texvc {\\n direction: ltr;\\n unicode-bidi: embed;\\n}\\n.mwiki img.tex {\\n vertical-align: middle;\\n}\\n.mwiki span.texhtml {\\n font-family: serif;\\n}\\n\\n/* add a bit of margin space between the preview and the toolbar */\\n/* this replaces the ugly <p><br /></p> we used to insert into the page source */\\n.mwiki #wikiPreview.ontop {\\n margin-bottom: 1em;\\n}\\n\\n/* Stop floats from intruding into edit area in previews */\\n.mwiki #toolbar,\\n.mwiki #wpTextbox1 {\\n clear: both;\\n}\\n\\n.mwiki div#mw-js-message {\\n margin: 1em 5%;\\n padding: 0.5em 2.5%;\\n border: solid 1px #ddd;\\n background-color: #fcfcfc;\\n}\\n\\n/* Edit section links */\\n.mwiki .editsection {\\n float: right;\\n margin-left: 5px;\\n}\\n\\n/**\\n * File histories\\n */\\n.mwiki table.filehistory {\\n border: 1px solid #ccc;\\n border-collapse: collapse;\\n}\\n\\n.mwiki table.filehistory th,\\n.mwiki table.filehistory td {\\n padding: 0 0.2em 0 0.2em;\\n vertical-align: top;\\n border: 1px solid #ccc;\\n}\\n.mwiki table.filehistory th {\\n text-align: left;\\n}\\n.mwiki table.filehistory td.mw-imagepage-filesize,\\n.mwiki table.filehistory th.mw-imagepage-filesize {\\n white-space: nowrap;\\n}\\n\\n.mwiki table.filehistory td.filehistory-selected {\\n font-weight: bold;\\n}\\n\\n/*\\n * rev_deleted stuff\\n */\\n.mwiki li span.deleted,\\n.mwiki span.history-deleted {\\n text-decoration: line-through;\\n color: #888;\\n font-style: italic;\\n}\\n\\n.mwiki td.mw-label {\\n vertical-align: top;\\n}\\n.mwiki td.mw-submit {\\n white-space: nowrap;\\n}\\n/**\\n * Forms\\n */\\n.mwiki body.ltr td.mw-label {\\n text-align: right;\\n}\\n.mwiki body.ltr td.mw-input {\\n text-align: left;\\n}\\n.mwiki body.ltr td.mw-submit {\\n text-align: left;\\n}\\n.mwiki body.rtl td.mw-label {\\n text-align: left;\\n}\\n.mwiki body.rtl td.mw-input {\\n text-align: right;\\n}\\n.mwiki body.rtl td.mw-submit {\\n text-align: right;\\n}\\n\\n/**\\n * Image captions\\n */\\n.mwiki body.rtl .thumbcaption {\\n text-align: right;\\n}\\n.mwiki body.rtl .magnify {\\n float: left;\\n}\\n\\n.mwiki body.ltr .thumbcaption {\\n text-align: left;\\n}\\n.mwiki body.ltr .magnify {\\n float: right;\\n}\\n\\n/**\\n * Hidden categories\\n */\\n.mwiki .mw-hidden-cats-hidden {\\n display: none;\\n}\\n.mwiki .catlinks-allhidden {\\n display: none;\\n}\\n\\n/* Convenience links to edit block, delete and protect reasons */\\n.mwiki p.mw-ipb-conveniencelinks,\\n.mwiki p.mw-protect-editreasons,\\n.mwiki p.mw-filedelete-editreasons,\\n.mwiki p.mw-delete-editreasons {\\n font-size: 90%;\\n float: right;\\n}\\n\\n/* Search results */\\n.mwiki div.searchresult {\\n font-size: 95%;\\n width: 38em;\\n}\\n.mwiki .mw-search-results li {\\n padding-bottom: 1em;\\n list-style: none;\\n}\\n.mwiki .mw-search-result-data {\\n color: green;\\n font-size: 97%;\\n}\\n\\n.mwiki td#mw-search-menu {\\n padding-left: 6em;\\n font-size: 85%;\\n}\\n\\n.mwiki div#mw-search-interwiki {\\n float: right;\\n width: 18em;\\n border-style: solid;\\n border-color: #aaaaaa;\\n border-width: 1px;\\n margin-top: 2ex;\\n}\\n\\n.mwiki div#mw-search-interwiki li {\\n font-size: 95%;\\n}\\n\\n.mwiki .mw-search-interwiki-more {\\n float: right;\\n font-size: 90%;\\n}\\n\\n.mwiki span.searchalttitle {\\n font-size: 95%;\\n}\\n\\n.mwiki div.searchdidyoumean {\\n font-size: 127%;\\n margin-bottom: 1ex;\\n margin-top: 1ex;\\n /* Note that this color won't affect the link, as desired. */\\n color: #c00;\\n}\\n\\n.mwiki div.searchdidyoumean em {\\n font-weight: bold;\\n}\\n\\n.mwiki .searchmatch {\\n font-weight: bold;\\n}\\n\\n.mwiki div.searchresults {\\n border: 1px solid darkblue;\\n padding-top: 10px;\\n padding-bottom: 10px;\\n padding-left: 20px;\\n padding-right: 20px;\\n}\\n\\n/*\\n * UserRights stuff\\n */\\n.mwiki .mw-userrights-disabled {\\n color: #888;\\n}\\n\\n.mwiki table.mw-userrights-groups * td,\\n.mwiki table.mw-userrights-groups * th {\\n padding-right: 1.5em;\\n}\\n\\n/*\\n * OpenSearch ajax suggestions\\n */\\n.mwiki .os-suggest {\\n overflow: auto;\\n overflow-x: hidden;\\n position: absolute;\\n top: 0px;\\n left: 0px;\\n width: 0px;\\n background-color: white;\\n border-style: solid;\\n border-color: #aaaaaa;\\n border-width: 1px;\\n z-index: 99;\\n visibility: hidden;\\n font-size: 95%;\\n}\\n\\n.mwiki table.os-suggest-results {\\n font-size: 95%;\\n cursor: pointer;\\n border: 0;\\n border-collapse: collapse;\\n width: 100%;\\n}\\n\\n.mwiki td.os-suggest-result,\\n.mwiki td.os-suggest-result-hl {\\n white-space: nowrap;\\n background-color: white;\\n color: black;\\n padding: 2px;\\n}\\n.mwiki td.os-suggest-result-hl,\\n.mwiki td.os-suggest-result-hl-webkit {\\n background-color: #4c59a6;\\n color: white;\\n}\\n\\n.mwiki .os-suggest-toggle {\\n position: relative;\\n left: 1ex;\\n font-size: 65%;\\n}\\n.mwiki .os-suggest-toggle-def {\\n position: absolute;\\n top: 0px;\\n left: 0px;\\n font-size: 65%;\\n visibility: hidden;\\n}\\n\\n/* Page history styling */\\n/* the auto-generated edit comments */\\n.mwiki .autocomment {\\n color: gray;\\n}\\n.mwiki #pagehistory .history-user {\\n margin-left: 0.4em;\\n margin-right: 0.2em;\\n}\\n.mwiki #pagehistory span.minor {\\n font-weight: bold;\\n}\\n.mwiki #pagehistory li {\\n border: 1px solid white;\\n}\\n.mwiki #pagehistory li.selected {\\n background-color: #f9f9f9;\\n border: 1px dashed #aaa;\\n}\\n\\n/*\\n * Special:ListGroupRights styling\\n * Special:Statistics styling\\n*/\\n\\n.mwiki table.mw-listgrouprights-table,\\n.mwiki table.mw-statistics-table {\\n border: 1px solid #ccc;\\n border-collapse: collapse;\\n}\\n\\n.mwiki table.mw-listgrouprights-table tr {\\n vertical-align: top;\\n}\\n\\n.mwiki table.mw-listgrouprights-table td,\\n.mwiki table.mw-listgrouprights-table th,\\n.mwiki table.mw-statistics-table td,\\n.mwiki table.mw-statistics-table th {\\n padding: 0.5em 0.2em 0.5em 0.2em;\\n border: 1px solid #ccc;\\n}\\n\\n.mwiki td.mw-statistics-numbers {\\n text-align: right;\\n}\\n\\n/* Special:SpecialPages styling */\\n.mwiki h4.mw-specialpagesgroup {\\n background-color: #dcdcdc;\\n padding: 2px;\\n margin: 0.3em 0em 0em 0em;\\n}\\n.mwiki .mw-specialpagerestricted {\\n font-weight: bold;\\n}\\n\\n.mwiki #shared-image-dup,\\n.mwiki #shared-image-conflict {\\n font-style: italic;\\n}\\n\\n/* Special:EmailUser styling */\\n.mwiki table.mw-emailuser-table {\\n width: 98%;\\n}\\n.mwiki td#mw-emailuser-sender,\\n.mwiki td#mw-emailuser-recipient {\\n font-weight: bold;\\n}\\n\\n/* Special:Prefixindex styling */\\n.mwiki table#mw-prefixindex-list-table,\\n.mwiki table#mw-prefixindex-nav-table {\\n width: 98%;\\n background-color: transparent;\\n}\\n.mwiki td#mw-prefixindex-nav-form {\\n font-size: smaller;\\n margin-bottom: 1em;\\n text-align: right;\\n vertical-align: top;\\n}\\n\\n/*\\n * Recreating deleted page warning\\n * Reupload file warning\\n * Page protection warning\\n * incl. log entries for these warnings\\n */\\n.mwiki div.mw-warning-with-logexcerpt {\\n padding: 3px;\\n margin-bottom: 3px;\\n border: 2px solid #2f6fab;\\n}\\n.mwiki div.mw-warning-with-logexcerpt ul li {\\n font-size: 90%;\\n}\\n\\n/* (show/hide) revision deletion links */\\n.mwiki span.mw-revdelundel-link,\\n.mwiki strong.mw-revdelundel-link {\\n font-family: monospace;\\n font-size: smaller;\\n}\\n\\n/* feed links */\\n.mwiki a.feedlink {\\n background: url(\\\"images/feed-icon.png\\\") center left no-repeat;\\n padding-left: 16px;\\n}\\n\\n/************ monobook/main.css **************/\\n\\n/*\\n** MediaWiki 'monobook' style sheet for CSS2-capable browsers.\\n** Copyright Gabriel Wicke - http://wikidev.net/\\n** License: GPL (http://www.gnu.org/copyleft/gpl.html)\\n**\\n** Loosely based on http://www.positioniseverything.net/ordered-floats.html by Big John\\n** and the Plone 2.0 styles, see http://plone.org/ (Alexander Limi,Joe Geldart & Tom Croucher,\\n** Michael Zeltner and Geir Bækholt)\\n** All you guys rock :)\\n*/\\n\\n.mwiki #column-content {\\n width: 100%;\\n float: right;\\n margin: 0 0 0.6em -12.2em;\\n padding: 0;\\n}\\n.mwiki #content {\\n margin: 2.8em 0 0 12.2em;\\n padding: 0 1em 1em 1em;\\n position: relative;\\n z-index: 2;\\n}\\n.mwiki #column-one {\\n padding-top: 160px;\\n}\\n.mwiki #content {\\n background: white;\\n color: black;\\n border: 1px solid #aaa;\\n border-right: none;\\n line-height: 1.5em;\\n}\\n/* the left column width is specified in class .portlet */\\n\\n/* scale back up to a sane default */\\n.mwiki #globalWrapper {\\n font-size: 127%;\\n width: 100%;\\n margin: 0;\\n padding: 0;\\n}\\n.mwiki .visualClear {\\n clear: both;\\n}\\n\\n/* general styles */\\n\\n.mwiki table {\\n font-size: 100%;\\n color: black;\\n /* we don't want the bottom borders of <h2>s to be visible through\\n\\t floated tables */\\n background-color: white;\\n}\\n.mwiki fieldset table {\\n /* but keep table layouts in forms clean... */\\n background: none;\\n}\\n.mwiki a {\\n text-decoration: none;\\n color: #002bb8;\\n background: none;\\n}\\n.mwiki a:visited {\\n color: #5a3696;\\n}\\n.mwiki a:active {\\n color: #faa700;\\n}\\n.mwiki a:hover {\\n text-decoration: underline;\\n}\\n.mwiki a.stub {\\n color: #772233;\\n}\\n.mwiki a.new,\\n.mwiki #p-personal a.new {\\n color: #ba0000;\\n}\\n.mwiki a.new:visited,\\n.mwiki #p-personal a.new:visited {\\n color: #a55858;\\n}\\n\\n.mwiki img {\\n border: none;\\n vertical-align: middle;\\n}\\n.mwiki p {\\n margin: 0.4em 0 0.5em 0;\\n line-height: 1.5em;\\n}\\n.mwiki p img {\\n margin: 0;\\n}\\n\\n.mwiki hr {\\n height: 1px;\\n color: #aaa;\\n background-color: #aaa;\\n border: 0;\\n margin: 0.2em 0 0.2em 0;\\n}\\n\\n.mwiki h1,\\n.mwiki h2,\\n.mwiki h3,\\n.mwiki h4,\\n.mwiki h5,\\n.mwiki h6 {\\n color: black;\\n background: none;\\n font-weight: normal;\\n margin: 0;\\n padding-top: 0.5em;\\n padding-bottom: 0.17em;\\n border-bottom: 1px solid #aaa;\\n}\\n.mwiki h1 {\\n font-size: 188%;\\n}\\n.mwiki h1 .editsection {\\n font-size: 53%;\\n}\\n.mwiki h2 {\\n font-size: 150%;\\n}\\n.mwiki h2 .editsection {\\n font-size: 67%;\\n}\\n.mwiki h3,\\n.mwiki h4,\\n.mwiki h5,\\n.mwiki h6 {\\n border-bottom: none;\\n font-weight: bold;\\n}\\n.mwiki h3 {\\n font-size: 132%;\\n}\\n.mwiki h3 .editsection {\\n font-size: 76%;\\n font-weight: normal;\\n}\\n.mwiki h4 {\\n font-size: 116%;\\n}\\n.mwiki h4 .editsection {\\n font-size: 86%;\\n font-weight: normal;\\n}\\n.mwiki h5 {\\n font-size: 100%;\\n}\\n.mwiki h5 .editsection {\\n font-weight: normal;\\n}\\n.mwiki h6 {\\n font-size: 80%;\\n}\\n.mwiki h6 .editsection {\\n font-size: 125%;\\n font-weight: normal;\\n}\\n\\n.mwiki ul {\\n line-height: 1.5em;\\n list-style-type: square;\\n margin: 0.3em 0 0 1.5em;\\n padding: 0;\\n}\\n.mwiki ol {\\n line-height: 1.5em;\\n margin: 0.3em 0 0 3.2em;\\n padding: 0;\\n list-style-image: none;\\n}\\n.mwiki li {\\n margin-bottom: 0.1em;\\n}\\n.mwiki dt {\\n font-weight: bold;\\n margin-bottom: 0.1em;\\n}\\n.mwiki dl {\\n margin-top: 0.2em;\\n margin-bottom: 0.5em;\\n}\\n.mwiki dd {\\n line-height: 1.5em;\\n margin-left: 2em;\\n margin-bottom: 0.1em;\\n}\\n\\n.mwiki fieldset {\\n border: 1px solid #2f6fab;\\n margin: 1em 0 1em 0;\\n padding: 0 1em 1em;\\n line-height: 1.5em;\\n}\\n.mwiki fieldset.nested {\\n margin: 0 0 0.5em 0;\\n padding: 0 0.5em 0.5em;\\n}\\n.mwiki legend {\\n padding: 0.5em;\\n font-size: 95%;\\n}\\n.mwiki form {\\n border: none;\\n margin: 0;\\n}\\n\\n.mwiki textarea {\\n width: 100%;\\n padding: 0.1em;\\n}\\n\\n.mwiki input.historysubmit {\\n padding: 0 0.3em 0.3em 0.3em !important;\\n font-size: 94%;\\n cursor: pointer;\\n height: 1.7em !important;\\n margin-left: 1.6em;\\n}\\n.mwiki select {\\n vertical-align: top;\\n}\\n.mwiki abbr,\\n.mwiki .explain {\\n border-bottom: 1px dotted black;\\n color: black;\\n background: none;\\n cursor: help;\\n}\\n.mwiki q {\\n font-family: Times, \\\"Times New Roman\\\", serif;\\n font-style: italic;\\n}\\n/* disabled for now\\n.mwiki blockquote {\\n\\tfont-family: Times, \\\"Times New Roman\\\", serif;\\n\\tfont-style: italic;\\n}*/\\n.mwiki code {\\n background-color: #f9f9f9;\\n}\\n.mwiki pre {\\n padding: 1em;\\n border: 1px dashed #2f6fab;\\n color: black;\\n background-color: #f9f9f9;\\n line-height: 1.1em;\\n}\\n\\n/*\\n** the main content area\\n*/\\n\\n.mwiki #siteSub {\\n display: none;\\n}\\n.mwiki #jump-to-nav {\\n display: none;\\n}\\n\\n.mwiki #contentSub,\\n.mwiki #contentSub2 {\\n font-size: 84%;\\n line-height: 1.2em;\\n margin: 0 0 1.4em 1em;\\n color: #7d7d7d;\\n width: auto;\\n}\\n.mwiki span.subpages {\\n display: block;\\n}\\n\\n/* Some space under the headers in the content area */\\n.mwiki #bodyContent h1,\\n.mwiki #bodyContent h2 {\\n margin-bottom: 0.6em;\\n}\\n.mwiki #bodyContent h3,\\n.mwiki #bodyContent h4,\\n.mwiki #bodyContent h5 {\\n margin-bottom: 0.3em;\\n}\\n.mwiki #firstHeading {\\n margin-bottom: 0.1em;\\n /* These two rules hack around bug 2013 (fix for more limited bug 11325).\\n\\t When bug 2013 is fixed properly, they should be removed. */\\n line-height: 1.2em;\\n padding-bottom: 0;\\n}\\n\\n/* user notification thing */\\n.mwiki .usermessage {\\n background-color: #ffce7b;\\n border: 1px solid #ffa500;\\n color: black;\\n font-weight: bold;\\n margin: 2em 0 1em;\\n padding: 0.5em 1em;\\n vertical-align: middle;\\n}\\n.mwiki #siteNotice {\\n text-align: center;\\n font-size: 95%;\\n padding: 0 0.9em;\\n}\\n.mwiki #siteNotice p {\\n margin: 0;\\n padding: 0;\\n}\\n.mwiki .success {\\n color: green;\\n font-size: larger;\\n}\\n.mwiki .error {\\n color: red;\\n font-size: larger;\\n}\\n.mwiki .errorbox,\\n.mwiki .successbox {\\n font-size: larger;\\n border: 2px solid;\\n padding: 0.5em 1em;\\n float: left;\\n margin-bottom: 2em;\\n color: #000;\\n}\\n.mwiki .errorbox {\\n border-color: red;\\n background-color: #fff2f2;\\n}\\n.mwiki .successbox {\\n border-color: green;\\n background-color: #dfd;\\n}\\n.mwiki .errorbox h2,\\n.mwiki .successbox h2 {\\n font-size: 1em;\\n font-weight: bold;\\n display: inline;\\n margin: 0 0.5em 0 0;\\n border: none;\\n}\\n\\n.mwiki .catlinks {\\n border: 1px solid #aaa;\\n background-color: #f9f9f9;\\n padding: 5px;\\n margin-top: 1em;\\n clear: both;\\n}\\n/* currently unused, intended to be used by a metadata box\\nin the bottom-right corner of the content area */\\n.mwiki .documentDescription {\\n /* The summary text describing the document */\\n font-weight: bold;\\n display: block;\\n margin: 1em 0;\\n line-height: 1.5em;\\n}\\n.mwiki .documentByLine {\\n text-align: right;\\n font-size: 90%;\\n clear: both;\\n font-weight: normal;\\n color: #76797c;\\n}\\n\\n/* emulate center */\\n.mwiki .center {\\n width: 100%;\\n text-align: center;\\n}\\n.mwiki *.center * {\\n margin-left: auto;\\n margin-right: auto;\\n}\\n/* small for tables and similar */\\n.mwiki .small,\\n.mwiki .small * {\\n font-size: 94%;\\n}\\n.mwiki table.small {\\n font-size: 100%;\\n}\\n\\n/*\\n** content styles\\n*/\\n\\n.mwiki #toc,\\n.mwiki .toc,\\n.mwiki .mw-warning {\\n border: 1px solid #aaa;\\n background-color: #f9f9f9;\\n padding: 5px;\\n font-size: 95%;\\n}\\n.mwiki #toc h2,\\n.mwiki .toc h2 {\\n display: inline;\\n border: none;\\n padding: 0;\\n font-size: 100%;\\n font-weight: bold;\\n}\\n.mwiki #toc #toctitle,\\n.mwiki .toc #toctitle,\\n.mwiki #toc .toctitle,\\n.mwiki .toc .toctitle {\\n text-align: center;\\n}\\n.mwiki #toc ul,\\n.mwiki .toc ul {\\n list-style-type: none;\\n list-style-image: none;\\n margin-left: 0;\\n padding-left: 0;\\n text-align: left;\\n}\\n.mwiki #toc ul ul,\\n.mwiki .toc ul ul {\\n margin: 0 0 0 2em;\\n}\\n.mwiki #toc .toctoggle,\\n.mwiki .toc .toctoggle {\\n font-size: 94%;\\n}\\n\\n.mwiki .mw-warning {\\n margin-left: 50px;\\n margin-right: 50px;\\n text-align: center;\\n}\\n\\n/* images */\\n.mwiki div.floatright,\\n.mwiki table.floatright {\\n clear: right;\\n float: right;\\n position: relative;\\n margin: 0 0 0.5em 0.5em;\\n border: 0;\\n /*\\n\\tborder: .5em solid white;\\n\\tborder-width: .5em 0 .8em 1.4em;\\n*/\\n}\\n.mwiki div.floatright p {\\n font-style: italic;\\n}\\n.mwiki div.floatleft,\\n.mwiki table.floatleft {\\n float: left;\\n clear: left;\\n position: relative;\\n margin: 0 0.5em 0.5em 0;\\n border: 0;\\n /*\\n\\tmargin: .3em .5em .5em 0;\\n\\tborder: .5em solid white;\\n\\tborder-width: .5em 1.4em .8em 0;\\n*/\\n}\\n.mwiki div.floatleft p {\\n font-style: italic;\\n}\\n/* thumbnails */\\n.mwiki div.thumb {\\n margin-bottom: 0.5em;\\n border-style: solid;\\n border-color: white;\\n width: auto;\\n}\\n.mwiki div.thumbinner {\\n border: 1px solid #ccc;\\n padding: 3px !important;\\n background-color: #f9f9f9;\\n font-size: 94%;\\n text-align: center;\\n overflow: hidden;\\n}\\n.mwiki html .thumbimage {\\n border: 1px solid #ccc;\\n}\\n.mwiki html .thumbcaption {\\n border: none;\\n text-align: left;\\n line-height: 1.4em;\\n padding: 3px !important;\\n font-size: 94%;\\n}\\n.mwiki div.magnify {\\n float: right;\\n border: none !important;\\n background: none !important;\\n}\\n.mwiki div.magnify a,\\n.mwiki div.magnify img {\\n display: block;\\n border: none !important;\\n background: none !important;\\n}\\n.mwiki div.tright {\\n clear: right;\\n float: right;\\n border-width: 0.5em 0 0.8em 1.4em;\\n}\\n.mwiki div.tleft {\\n float: left;\\n clear: left;\\n margin-right: 0.5em;\\n border-width: 0.5em 1.4em 0.8em 0;\\n}\\n.mwiki img.thumbborder {\\n border: 1px solid #dddddd;\\n}\\n.mwiki .hiddenStructure {\\n display: none;\\n}\\n\\n/*\\n** classes for special content elements like town boxes\\n** intended to be referenced directly from the wiki src\\n*/\\n\\n/*\\n** User styles\\n*/\\n/* table standards */\\n.mwiki table.rimage {\\n float: right;\\n position: relative;\\n margin-left: 1em;\\n margin-bottom: 1em;\\n text-align: center;\\n}\\n.mwiki .toccolours {\\n border: 1px solid #aaa;\\n background-color: #f9f9f9;\\n padding: 5px;\\n font-size: 95%;\\n}\\n\\n/*\\n** edit views etc\\n*/\\n.mwiki .special li {\\n line-height: 1.4em;\\n margin: 0;\\n padding: 0;\\n}\\n\\n/*\\n** keep the whitespace in front of the ^=, hides rule from konqueror\\n** this is css3, the validator doesn't like it when validating as css2\\n*/\\n\\n.mwiki #bodyContent a.external[href$=\\\".ogg\\\"],\\n.mwiki #bodyContent a.external[href$=\\\".OGG\\\"],\\n.mwiki #bodyContent a.external[href$=\\\".oga\\\"],\\n.mwiki #bodyContent a.external[href$=\\\".OGA\\\"],\\n.mwiki #bodyContent a.external[href$=\\\".mid\\\"],\\n.mwiki #bodyContent a.external[href$=\\\".MID\\\"],\\n.mwiki #bodyContent a.external[href$=\\\".midi\\\"],\\n.mwiki #bodyContent a.external[href$=\\\".MIDI\\\"],\\n.mwiki #bodyContent a.external[href$=\\\".mp3\\\"],\\n.mwiki #bodyContent a.external[href$=\\\".MP3\\\"],\\n.mwiki #bodyContent a.external[href$=\\\".wav\\\"],\\n.mwiki #bodyContent a.external[href$=\\\".WAV\\\"],\\n.mwiki #bodyContent a.external[href$=\\\".wma\\\"],\\n.mwiki #bodyContent a.external[href$=\\\".WMA\\\"],\\n.mwiki .link-audio {\\n background: url(\\\"qrc:///icons/audio.png\\\") center right no-repeat;\\n padding-right: 1em;\\n}\\n.mwiki #bodyContent a.external[href$=\\\".ogm\\\"],\\n.mwiki #bodyContent a.external[href$=\\\".OGM\\\"],\\n.mwiki #bodyContent a.external[href$=\\\".avi\\\"],\\n.mwiki #bodyContent a.external[href$=\\\".AVI\\\"],\\n.mwiki #bodyContent a.external[href$=\\\".mpeg\\\"],\\n.mwiki #bodyContent a.external[href$=\\\".MPEG\\\"],\\n.mwiki #bodyContent a.external[href$=\\\".mpg\\\"],\\n.mwiki #bodyContent a.external[href$=\\\".MPG\\\"],\\n.mwiki .link-video {\\n background: url(\\\"qrc:///icons/video.svg\\\") center right no-repeat;\\n padding-right: 1em;\\n}\\n.mwiki #bodyContent a.external[href$=\\\".pdf\\\"],\\n.mwiki #bodyContent a.external[href$=\\\".PDF\\\"],\\n.mwiki #bodyContent a.external[href*=\\\".pdf#\\\"],\\n.mwiki #bodyContent a.external[href*=\\\".PDF#\\\"],\\n.mwiki #bodyContent a.external[href*=\\\".pdf?\\\"],\\n.mwiki #bodyContent a.external[href*=\\\".PDF?\\\"],\\n.mwiki .link-document {\\n background: url(\\\"qrc:///icons/document.png\\\") center right no-repeat;\\n padding-right: 12px;\\n}\\n\\n/* disable interwiki styling */\\n.mwiki #bodyContent a.extiw,\\n.mwiki #bodyContent a.extiw:active {\\n color: #36b;\\n background: none;\\n padding: 0;\\n}\\n.mwiki #bodyContent a.external {\\n color: #36b;\\n}\\n/* this can be used in the content area to switch off\\nspecial external link styling */\\n.mwiki #bodyContent .plainlinks a {\\n background: none !important;\\n padding: 0 !important;\\n}\\n/*\\n** Structural Elements\\n*/\\n\\n/*\\n** general portlet styles (elements in the quickbar)\\n*/\\n.mwiki .portlet {\\n border: none;\\n margin: 0 0 0.5em;\\n padding: 0;\\n float: none;\\n width: 11.6em;\\n overflow: hidden;\\n}\\n.mwiki .portlet h4 {\\n font-size: 95%;\\n font-weight: normal;\\n white-space: nowrap;\\n}\\n.mwiki .portlet h5 {\\n background: transparent;\\n padding: 0 1em 0 0.5em;\\n display: inline;\\n height: 1em;\\n text-transform: lowercase;\\n font-size: 91%;\\n font-weight: normal;\\n white-space: nowrap;\\n}\\n.mwiki .portlet h6 {\\n background: #ffae2e;\\n border: 1px solid #2f6fab;\\n border-style: solid solid none solid;\\n padding: 0 1em 0 1em;\\n text-transform: lowercase;\\n display: block;\\n font-size: 1em;\\n height: 1.2em;\\n font-weight: normal;\\n white-space: nowrap;\\n}\\n.mwiki .pBody {\\n font-size: 95%;\\n background-color: white;\\n color: black;\\n border-collapse: collapse;\\n border: 1px solid #aaa;\\n padding: 0 0.8em 0.3em 0.5em;\\n}\\n.mwiki .portlet h1,\\n.mwiki .portlet h2,\\n.mwiki .portlet h3,\\n.mwiki .portlet h4 {\\n margin: 0;\\n padding: 0;\\n}\\n.mwiki .portlet ul {\\n line-height: 1.5em;\\n list-style-type: square;\\n font-size: 95%;\\n}\\n.mwiki .portlet li {\\n padding: 0;\\n margin: 0;\\n}\\n\\n/*\\n** Logo properties\\n*/\\n\\n.mwiki #p-logo {\\n top: 0;\\n left: 0;\\n position: absolute; /*needed to use z-index */\\n z-index: 3;\\n height: 155px;\\n width: 12em;\\n overflow: visible;\\n}\\n.mwiki #p-logo h5 {\\n display: none;\\n}\\n.mwiki #p-logo a,\\n.mwiki #p-logo a:hover {\\n display: block;\\n height: 155px;\\n width: 12.2em;\\n background-repeat: no-repeat;\\n background-position: 35% 50% !important;\\n text-decoration: none;\\n}\\n\\n/*\\n** Search portlet\\n*/\\n.mwiki #p-search {\\n position: relative;\\n z-index: 3;\\n}\\n.mwiki input.searchButton {\\n margin-top: 1px;\\n font-size: 95%;\\n}\\n.mwiki #searchGoButton {\\n padding-left: 0.5em;\\n padding-right: 0.5em;\\n font-weight: bold;\\n}\\n.mwiki #searchInput {\\n width: 10.9em;\\n margin: 0;\\n font-size: 95%;\\n}\\n.mwiki #p-search .pBody {\\n padding: 0.5em 0.4em 0.4em 0.4em;\\n text-align: center;\\n}\\n.mwiki #p-search #searchform div div {\\n margin-top: 0.4em;\\n font-size: 95%;\\n}\\n/*\\n** the personal toolbar\\n*/\\n.mwiki #p-personal {\\n position: absolute;\\n left: 0;\\n top: 0;\\n z-index: 0;\\n}\\n.mwiki #p-personal {\\n width: 100%;\\n white-space: nowrap;\\n padding: 0;\\n margin: 0;\\n border: none;\\n background: none;\\n overflow: visible;\\n line-height: 1.2em;\\n}\\n.mwiki #p-personal h5 {\\n display: none;\\n}\\n.mwiki #p-personal .portlet,\\n.mwiki #p-personal .pBody {\\n z-index: 0;\\n padding: 0;\\n margin: 0;\\n border: none;\\n overflow: visible;\\n background: none;\\n}\\n/* this is the ul contained in the portlet */\\n.mwiki #p-personal ul {\\n border: none;\\n line-height: 1.4em;\\n color: #2f6fab;\\n padding: 0 2em 0 3em;\\n margin: 0;\\n text-align: right;\\n list-style: none;\\n z-index: 0;\\n background: none;\\n cursor: default;\\n}\\n.mwiki #p-personal li {\\n z-index: 0;\\n border: none;\\n padding: 0;\\n display: inline;\\n color: #2f6fab;\\n margin-left: 1em;\\n line-height: 1.2em;\\n background: none;\\n}\\n.mwiki #p-personal li a {\\n text-decoration: none;\\n color: #005896;\\n padding-bottom: 0.2em;\\n background: none;\\n}\\n.mwiki #p-personal li a:hover {\\n background-color: white;\\n padding-bottom: 0.2em;\\n text-decoration: none;\\n}\\n.mwiki #p-personal li.active a:hover {\\n background-color: transparent;\\n}\\n/* the icon in front of the user name, single quotes\\nin bg url to hide it from iemac */\\n.mwiki li#pt-userpage,\\n.mwiki li#pt-anonuserpage,\\n.mwiki li#pt-login {\\n padding-left: 20px;\\n text-transform: none;\\n}\\n.mwiki #p-personal ul {\\n text-transform: lowercase;\\n}\\n.mwiki #p-personal li.active {\\n font-weight: bold;\\n}\\n/*\\n** the page-related actions- page/talk, edit etc\\n*/\\n.mwiki #p-cactions {\\n position: absolute;\\n top: 1.3em;\\n left: 11.5em;\\n margin: 0;\\n white-space: nowrap;\\n width: 76%;\\n line-height: 1.1em;\\n overflow: visible;\\n background: none;\\n border-collapse: collapse;\\n padding-left: 1em;\\n list-style: none;\\n font-size: 95%;\\n}\\n.mwiki #p-cactions ul {\\n list-style: none;\\n}\\n.mwiki #p-cactions li {\\n display: inline;\\n border: 1px solid #aaa;\\n border-bottom: none;\\n padding: 0 0 0.1em 0;\\n margin: 0 0.3em 0 0;\\n overflow: visible;\\n background: white;\\n}\\n.mwiki #p-cactions li.selected {\\n border-color: #fabd23;\\n padding: 0 0 0.2em 0;\\n font-weight: bold;\\n}\\n.mwiki #p-cactions li a {\\n background-color: #fbfbfb;\\n color: #002bb8;\\n border: none;\\n padding: 0 0.8em 0.3em;\\n position: relative;\\n z-index: 0;\\n margin: 0;\\n text-decoration: none;\\n}\\n.mwiki #p-cactions li.selected a {\\n z-index: 3;\\n padding: 0 1em 0.2em !important;\\n background-color: white;\\n}\\n.mwiki #p-cactions .new a {\\n color: #ba0000;\\n}\\n.mwiki #p-cactions li a:hover {\\n z-index: 3;\\n text-decoration: none;\\n background-color: white;\\n}\\n.mwiki #p-cactions h5 {\\n display: none;\\n}\\n.mwiki #p-cactions li.istalk {\\n margin-right: 0;\\n}\\n.mwiki #p-cactions li.istalk a {\\n padding-right: 0.5em;\\n}\\n.mwiki #p-cactions #ca-addsection a {\\n padding-left: 0.4em;\\n padding-right: 0.4em;\\n}\\n/* offsets to distinguish the tab groups */\\n.mwiki li#ca-talk {\\n margin-right: 1.6em;\\n}\\n.mwiki li#ca-watch,\\n.mwiki li#ca-unwatch,\\n.mwiki li#ca-varlang-0,\\n.mwiki li#ca-print {\\n margin-left: 1.6em;\\n}\\n.mwiki #p-cactions .pBody {\\n font-size: 1em;\\n background-color: transparent;\\n color: inherit;\\n border-collapse: inherit;\\n border: 0;\\n padding: 0;\\n}\\n.mwiki #p-cactions .hiddenStructure {\\n display: none;\\n}\\n.mwiki #p-cactions li a {\\n text-transform: lowercase;\\n}\\n\\n.mwiki #p-lang {\\n position: relative;\\n z-index: 3;\\n}\\n\\n/* #t-iscite is only used by the Cite extension, come up with some\\n * system which allows extensions to add to this file on the fly\\n */\\n.mwiki #t-ispermalink,\\n.mwiki #t-iscite {\\n color: #999;\\n}\\n/*\\n** footer\\n*/\\n.mwiki #footer {\\n background-color: white;\\n border-top: 1px solid #fabd23;\\n border-bottom: 1px solid #fabd23;\\n margin: 0.6em 0 1em 0;\\n padding: 0.4em 0 1.2em 0;\\n text-align: center;\\n font-size: 90%;\\n}\\n.mwiki #footer li {\\n display: inline;\\n margin: 0 1.3em;\\n}\\n.mwiki #f-poweredbyico,\\n.mwiki #f-copyrightico {\\n margin: 0 8px;\\n position: relative;\\n top: -2px; /* Bump it up just a tad */\\n}\\n.mwiki #f-poweredbyico {\\n float: right;\\n height: 1%;\\n}\\n.mwiki #f-copyrightico {\\n float: left;\\n height: 1%;\\n}\\n\\n/* js pref toc */\\n.mwiki #preftoc {\\n margin: 0;\\n padding: 0;\\n width: 100%;\\n clear: both;\\n}\\n.mwiki #preftoc li {\\n background-color: #f0f0f0;\\n color: #000;\\n}\\n.mwiki #preftoc li {\\n margin: 1px -2px 1px 2px;\\n float: left;\\n padding: 2px 0 3px 0;\\n border: 1px solid #fff;\\n border-right-color: #716f64;\\n border-bottom: 0;\\n position: relative;\\n white-space: nowrap;\\n list-style-type: none;\\n list-style-image: none;\\n z-index: 3;\\n}\\n.mwiki #preftoc li.selected {\\n font-weight: bold;\\n background-color: #f9f9f9;\\n border: 1px solid #aaa;\\n border-bottom: none;\\n cursor: default;\\n top: 1px;\\n padding-top: 2px;\\n margin-right: -3px;\\n}\\n.mwiki #preftoc > li.selected {\\n top: 2px;\\n}\\n.mwiki #preftoc a,\\n.mwiki #preftoc a:active {\\n display: block;\\n color: #000;\\n padding: 0 0.7em;\\n position: relative;\\n text-decoration: none;\\n}\\n.mwiki #preftoc li.selected a {\\n cursor: default;\\n text-decoration: none;\\n}\\n.mwiki #prefcontrol {\\n padding-top: 2em;\\n clear: both;\\n}\\n.mwiki #preferences {\\n margin: 0;\\n border: 1px solid #aaa;\\n clear: both;\\n padding: 1.5em;\\n background-color: #f9f9f9;\\n}\\n.mwiki .prefsection {\\n border: none;\\n padding: 0;\\n margin: 0;\\n}\\n.mwiki .prefsection fieldset {\\n border: 1px solid #aaa;\\n float: left;\\n margin-right: 2em;\\n}\\n.mwiki .prefsection legend {\\n font-weight: bold;\\n}\\n.mwiki .prefsection table,\\n.mwiki .prefsection legend {\\n background-color: #f9f9f9;\\n}\\n.mwiki .mainLegend {\\n display: none;\\n}\\n.mwiki div.prefsectiontip {\\n font-size: x-small;\\n padding: 0.2em 2em;\\n color: #666;\\n}\\n.mwiki .btnSavePrefs {\\n font-weight: bold;\\n padding-left: 0.3em;\\n padding-right: 0.3em;\\n}\\n\\n.mwiki .preferences-login {\\n clear: both;\\n margin-bottom: 1.5em;\\n}\\n\\n.mwiki .prefcache {\\n font-size: 90%;\\n margin-top: 2em;\\n}\\n\\n.mwiki div#userloginForm form,\\n.mwiki div#userlogin form#userlogin2 {\\n margin: 0 3em 1em 0;\\n border: 1px solid #aaa;\\n clear: both;\\n padding: 1.5em 2em;\\n background-color: #f9f9f9;\\n float: left;\\n}\\n.mwiki .rtl div#userloginForm form,\\n.mwiki .rtl div#userlogin form#userlogin2 {\\n float: right;\\n}\\n\\n.mwiki div#userloginForm table,\\n.mwiki div#userlogin form#userlogin2 table {\\n background-color: #f9f9f9;\\n}\\n\\n.mwiki div#userloginForm h2,\\n.mwiki div#userlogin form#userlogin2 h2 {\\n padding-top: 0;\\n}\\n\\n.mwiki div#userlogin .captcha,\\n.mwiki div#userloginForm .captcha {\\n border: 1px solid #bbb;\\n padding: 1.5em 2em;\\n background-color: white;\\n}\\n\\n.mwiki #loginend,\\n.mwiki #signupend {\\n clear: both;\\n}\\n\\n.mwiki #userloginprompt,\\n.mwiki #languagelinks {\\n font-size: 85%;\\n}\\n\\n.mwiki #login-sectiontip {\\n font-size: 85%;\\n line-height: 1.2;\\n padding-top: 2em;\\n}\\n\\n.mwiki #userlogin .loginText,\\n.mwiki #userlogin .loginPassword {\\n width: 12em;\\n}\\n\\n.mwiki #userloginlink a,\\n.mwiki #wpLoginattempt,\\n.mwiki #wpCreateaccount {\\n font-weight: bold;\\n}\\n\\n/* IE/Mac fixes were cut out */\\n\\n.mwiki .redirectText {\\n font-size: 150%;\\n margin: 5px;\\n}\\n\\n.mwiki .printfooter {\\n display: none;\\n}\\n\\n.mwiki .not-patrolled {\\n background-color: #ffa;\\n}\\n.mwiki div.patrollink {\\n clear: both;\\n font-size: 75%;\\n text-align: right;\\n}\\n.mwiki span.newpage,\\n.mwiki span.minor,\\n.mwiki span.bot {\\n font-weight: bold;\\n}\\n.mwiki span.unpatrolled {\\n font-weight: bold;\\n color: red;\\n}\\n\\n.mwiki .sharedUploadNotice {\\n font-style: italic;\\n}\\n\\n.mwiki span.updatedmarker {\\n color: black;\\n background-color: #0f0;\\n}\\n\\n.mwiki table.gallery {\\n border: 1px solid #ccc;\\n margin: 2px;\\n padding: 2px;\\n background-color: white;\\n}\\n\\n.mwiki table.gallery tr {\\n vertical-align: top;\\n}\\n\\n.mwiki table.gallery td {\\n vertical-align: top;\\n background-color: #f9f9f9;\\n border: solid 2px white;\\n}\\n/* Keep this temporarily so that cached pages will display right */\\n.mwiki table.gallery td.galleryheader {\\n text-align: center;\\n font-weight: bold;\\n}\\n.mwiki table.gallery caption {\\n font-weight: bold;\\n}\\n\\n.mwiki div.gallerybox {\\n margin: 2px;\\n}\\n\\n.mwiki div.gallerybox div.thumb {\\n text-align: center;\\n border: 1px solid #ccc;\\n margin: 2px;\\n}\\n\\n.mwiki div.gallerytext {\\n overflow: hidden;\\n font-size: 94%;\\n padding: 2px 4px;\\n}\\n\\n.mwiki span.comment {\\n font-style: italic;\\n}\\n\\n.mwiki span.changedby {\\n font-size: 95%;\\n}\\n\\n.mwiki .previewnote {\\n text-indent: 3em;\\n color: #c00;\\n border-bottom: 1px solid #aaa;\\n padding-bottom: 1em;\\n margin-bottom: 1em;\\n}\\n\\n.mwiki .previewnote p {\\n margin: 0;\\n padding: 0;\\n}\\n\\n.mwiki .editExternally {\\n border: 1px solid gray;\\n background-color: #ffffff;\\n padding: 3px;\\n margin-top: 0.5em;\\n float: left;\\n font-size: small;\\n text-align: center;\\n}\\n.mwiki .editExternallyHelp {\\n font-style: italic;\\n color: gray;\\n}\\n\\n.mwiki .toggle {\\n margin-left: 2em;\\n text-indent: -2em;\\n}\\n\\n/* Classes for EXIF data display */\\n.mwiki table.mw_metadata {\\n font-size: 0.8em;\\n margin-left: 0.5em;\\n margin-bottom: 0.5em;\\n width: 300px;\\n}\\n\\n.mwiki table.mw_metadata caption {\\n font-weight: bold;\\n}\\n\\n.mwiki table.mw_metadata th {\\n font-weight: normal;\\n}\\n\\n.mwiki table.mw_metadata td {\\n padding: 0.1em;\\n}\\n\\n.mwiki table.mw_metadata {\\n border: none;\\n border-collapse: collapse;\\n}\\n\\n.mwiki table.mw_metadata td,\\n.mwiki table.mw_metadata th {\\n text-align: center;\\n border: 1px solid #aaaaaa;\\n padding-left: 0.1em;\\n padding-right: 0.1em;\\n}\\n\\n.mwiki table.mw_metadata th {\\n background-color: #f9f9f9;\\n}\\n\\n.mwiki table.mw_metadata td {\\n background-color: #fcfcfc;\\n}\\n\\n.mwiki table.collapsed tr.collapsable {\\n display: none;\\n}\\n\\n/* filetoc */\\n.mwiki ul#filetoc {\\n text-align: center;\\n border: 1px solid #aaaaaa;\\n background-color: #f9f9f9;\\n padding: 5px;\\n font-size: 95%;\\n margin-bottom: 0.5em;\\n margin-left: 0;\\n margin-right: 0;\\n}\\n\\n.mwiki #filetoc li {\\n display: inline;\\n list-style-type: none;\\n padding-right: 2em;\\n}\\n\\n.mwiki input#wpSummary {\\n width: 80%;\\n}\\n\\n/* @bug 1714 */\\n.mwiki input#wpSave,\\n.mwiki input#wpDiff {\\n margin-right: 0.33em;\\n}\\n\\n.mwiki #wpSave {\\n font-weight: bold;\\n}\\n\\n/* Classes for article validation */\\n\\n.mwiki table.revisionform_default {\\n border: 1px solid #000000;\\n}\\n\\n.mwiki table.revisionform_focus {\\n border: 1px solid #000000;\\n background-color: #00bbff;\\n}\\n\\n.mwiki tr.revision_tr_default {\\n background-color: #eeeeee;\\n}\\n\\n.mwiki tr.revision_tr_first {\\n background-color: #dddddd;\\n}\\n\\n.mwiki p.revision_saved {\\n color: green;\\n font-weight: bold;\\n}\\n\\n.mwiki #mw_trackbacks {\\n border: solid 1px #bbbbff;\\n background-color: #eeeeff;\\n padding: 0.2em;\\n}\\n\\n/* Allmessages table */\\n\\n.mwiki #allmessagestable th {\\n background-color: #b2b2ff;\\n}\\n\\n.mwiki #allmessagestable tr.orig {\\n background-color: #ffe2e2;\\n}\\n\\n.mwiki #allmessagestable tr.new {\\n background-color: #e2ffe2;\\n}\\n\\n.mwiki #allmessagestable tr.def {\\n background-color: #f0f0ff;\\n}\\n\\n/* noarticletext */\\n.mwiki div.noarticletext {\\n border: 1px solid #ccc;\\n background: #fff;\\n padding: 0.2em 1em;\\n color: #000;\\n}\\n\\n.mwiki div#searchTargetContainer {\\n left: 10px;\\n top: 10px;\\n width: 90%;\\n background: white;\\n}\\n\\n.mwiki div#searchTarget {\\n padding: 3px;\\n margin: 5px;\\n background: #f0f0f0;\\n border: solid 1px blue;\\n}\\n\\n.mwiki div#searchTarget ul li {\\n list-style: none;\\n}\\n\\n.mwiki div#searchTarget ul li:before {\\n color: orange;\\n content: \\\"\\\\00BB \\\\0020\\\";\\n}\\n\\n.mwiki div#searchTargetHide {\\n float: right;\\n border: solid 1px black;\\n background: #dcdcdc;\\n padding: 2px;\\n}\\n\\n.mwiki #powersearch p {\\n margin-top: 0px;\\n}\\n\\n.mwiki div.multipageimagenavbox {\\n border: solid 1px silver;\\n padding: 4px;\\n margin: 1em;\\n background: #f0f0f0;\\n}\\n\\n.mwiki div.multipageimagenavbox div.thumb {\\n border: none;\\n margin-left: 2em;\\n margin-right: 2em;\\n}\\n\\n.mwiki div.multipageimagenavbox hr {\\n margin: 6px;\\n}\\n\\n.mwiki table.multipageimage td {\\n text-align: center;\\n}\\n\\n/** Special:Version */\\n\\n.mwiki table#sv-ext,\\ntable#sv-hooks,\\n.mwiki table#sv-software {\\n margin: 1em;\\n padding: 0em;\\n}\\n\\n.mwiki #sv-ext td,\\n.mwiki #sv-hooks td,\\n.mwiki #sv-software td,\\n.mwiki #sv-ext th,\\n.mwiki #sv-hooks th,\\n.mwiki #sv-software th {\\n border: 1px solid #a0a0a0;\\n padding: 0 0.15em 0 0.15em;\\n}\\n.mwiki #sv-ext th,\\n.mwiki #sv-hooks th,\\n.mwiki #sv-software th {\\n background-color: #f0f0f0;\\n color: black;\\n padding: 0 0.15em 0 0.15em;\\n}\\n.mwiki tr.sv-space {\\n height: 0.8em;\\n border: none;\\n}\\n.mwiki tr.sv-space td {\\n display: none;\\n}\\n\\n/*\\n Table pager (e.g. Special:Imagelist)\\n - remove underlines from the navigation link\\n - collapse borders\\n - set the borders to outsets (similar to Special:Allmessages)\\n - remove line wrapping for all td and th, set background color\\n - restore line wrapping for the last two table cells (description and size)\\n*/\\n.mwiki .TablePager {\\n min-width: 80%;\\n}\\n.mwiki .TablePager_nav a {\\n text-decoration: none;\\n}\\n.mwiki .TablePager {\\n border-collapse: collapse;\\n}\\n.mwiki .TablePager,\\n.mwiki .TablePager td,\\n.mwiki .TablePager th {\\n border: 1px solid #aaaaaa;\\n padding: 0 0.15em 0 0.15em;\\n}\\n.mwiki .TablePager th {\\n background-color: #eeeeff;\\n}\\n.mwiki .TablePager td {\\n background-color: #ffffff;\\n}\\n.mwiki .TablePager tr:hover td {\\n background-color: #eeeeff;\\n}\\n\\n.mwiki .imagelist td,\\n.mwiki .imagelist th {\\n white-space: nowrap;\\n}\\n.mwiki .imagelist .TablePager_col_links {\\n background-color: #eeeeff;\\n}\\n.mwiki .imagelist .TablePager_col_img_description {\\n white-space: normal;\\n}\\n.mwiki .imagelist th.TablePager_sort {\\n background-color: #ccccff;\\n}\\n\\n.mwiki .templatesUsed {\\n margin-top: 1.5em;\\n}\\n\\n.mwiki .mw-summary-preview {\\n margin: 0.1em 0;\\n}\\n\\n/* Friendlier slave lag warnings */\\n.mwiki div.mw-lag-warn-normal,\\n.mwiki div.mw-lag-warn-high {\\n padding: 3px;\\n text-align: center;\\n margin: 3px auto;\\n}\\n.mwiki div.mw-lag-warn-normal {\\n border: 1px solid #ffcc66;\\n background-color: #ffffcc;\\n}\\n.mwiki div.mw-lag-warn-high {\\n font-weight: bold;\\n border: 2px solid #ff0033;\\n background-color: #ffcccc;\\n}\\n\\n.mwiki .MediaTransformError {\\n background-color: #ccc;\\n padding: 0.1em;\\n}\\n.mwiki .MediaTransformError td {\\n text-align: center;\\n vertical-align: middle;\\n font-size: 90%;\\n}\\n\\n/** Special:Search stuff */\\n.mwiki div#mw-search-interwiki-caption {\\n text-align: center;\\n font-weight: bold;\\n font-size: 95%;\\n}\\n\\n.mwiki .mw-search-interwiki-project {\\n font-size: 97%;\\n text-align: left;\\n padding-left: 0.2em;\\n padding-right: 0.15em;\\n padding-bottom: 0.2em;\\n padding-top: 0.15em;\\n background: #cae8ff;\\n}\\n\\n/* God-damned hack for the crappy layout */\\n.mwiki .os-suggest {\\n font-size: 127%;\\n}\\n\\n/**** Excerpts from http://en.wikipedia.org/wiki/MediaWiki:Common.css ******/\\n/* Since GoldenDict support is not Wikipedia-specific, we don't include all\\n * of it, and besides, it's large and volatile anyway. */\\n/* It was also edited for the usually narrow article view */\\n\\n/* Make the list of references smaller */\\n.mwiki ol.references {\\n font-size: 100%;\\n}\\n.mwiki .references-small {\\n font-size: 90%;\\n}\\n\\n.mwiki .references-2column {\\n font-size: 90%;\\n column-count: 2;\\n}\\n\\n/* Highlight clicked reference in blue to help navigation */\\n.mwiki ol.references > li:target {\\n background-color: #def;\\n}\\n\\n.mwiki sup.reference:target {\\n background-color: #def;\\n}\\n\\n/* Styling for citations */\\n.mwiki cite {\\n font-style: normal;\\n word-wrap: break-word;\\n}\\n\\n/* If there is an inline link to a full citation, the full citation will turn blue when the inline link is clicked */\\n.mwiki cite:target {\\n background-color: #def;\\n}\\n\\n/* wikitable/prettytable class for skinning normal tables */\\n.mwiki table.wikitable,\\n.mwiki table.prettytable {\\n margin: 1em 1em 1em 0;\\n background: #f9f9f9;\\n border: 1px #aaa solid;\\n border-collapse: collapse;\\n}\\n.mwiki .wikitable th,\\n.mwiki .wikitable td,\\n.mwiki .prettytable th,\\n.mwiki .prettytable td {\\n border: 1px #aaa solid;\\n padding: 0.2em;\\n}\\n.mwiki .wikitable th,\\n.mwiki .prettytable th {\\n background: #f2f2f2;\\n text-align: center;\\n}\\n.mwiki .wikitable caption,\\n.mwiki .prettytable caption {\\n font-weight: bold;\\n}\\n\\n/* default skin for navigation boxes */\\n.mwiki table.navbox {\\n /* navbox container style */\\n border: 1px solid #aaa;\\n width: 100%;\\n margin: auto;\\n clear: both;\\n font-size: 88%;\\n text-align: center;\\n padding: 1px;\\n}\\n.mwiki table.navbox + table.navbox {\\n margin-top: -1px; /* single pixel border between adjacent navboxes (doesn't work for IE6, but that's okay) */\\n}\\n.mwiki .navbox-title,\\n.mwiki .navbox-abovebelow,\\n.mwiki table.navbox th {\\n text-align: center; /* title and above/below styles */\\n padding-left: 1em;\\n padding-right: 1em;\\n}\\n.mwiki .navbox-group {\\n /* group style */\\n white-space: nowrap;\\n text-align: right;\\n font-weight: bold;\\n padding-left: 1em;\\n padding-right: 1em;\\n}\\n.mwiki .navbox,\\n.mwiki .navbox-subgroup {\\n background: #fdfdfd; /* Background color */\\n}\\n.mwiki .navbox-list {\\n border-color: #fdfdfd; /* Must match background color */\\n}\\n.mwiki .navbox-title,\\n.mwiki table.navbox th {\\n background: #ccccff; /* Level 1 color */\\n}\\n.mwiki .navbox-abovebelow,\\n.mwiki .navbox-group,\\n.mwiki .navbox-subgroup .navbox-title {\\n background: #ddddff; /* Level 2 color */\\n}\\n.mwiki .navbox-subgroup .navbox-group,\\n.mwiki .navbox-subgroup .navbox-abovebelow {\\n background: #e6e6ff; /* Level 3 color */\\n}\\n.mwiki .navbox-even {\\n background: #f7f7f7; /* Even row striping */\\n}\\n.mwiki .navbox-odd {\\n background: transparent; /* Odd row striping */\\n}\\n\\n.mwiki .collapseButton {\\n /* 'show'/'hide' buttons created dynamically by the */\\n float: right; /* CollapsibleTables javascript in [[MediaWiki:Common.js]] */\\n font-weight: normal; /* are styled here so they can be customised. */\\n text-align: right;\\n width: auto;\\n}\\n.mwiki .navbox .collapseButton {\\n /* In navboxes, the show/hide button balances the vde links from */\\n width: 6em; /* [[Template:Tnavbar]], so they need to be the same width. */\\n}\\n\\n/* Infobox template style */\\n.mwiki .infobox {\\n border: 1px solid #aaa;\\n background-color: #f9f9f9;\\n color: black;\\n /* margin: 0.5em 0 0.5em 1em;*/\\n margin: 10px auto 0;\\n padding: 0.2em;\\n /*\\n float: right;\\n clear: right;*/\\n}\\n\\n.mwiki .infobox td,\\n.mwiki .infobox th {\\n vertical-align: top;\\n}\\n.mwiki .infobox caption {\\n font-size: larger;\\n}\\n.mwiki .infobox.bordered {\\n border-collapse: collapse;\\n}\\n.mwiki .infobox.bordered td,\\n.mwiki .infobox.bordered th {\\n border: 1px solid #aaa;\\n}\\n.mwiki .infobox.bordered .borderless td,\\n.mwiki .infobox.bordered .borderless th {\\n border: 0;\\n}\\n\\n.mwiki .infobox.sisterproject {\\n width: 20em;\\n font-size: 90%;\\n}\\n\\n.mwiki .infobox.standard-talk {\\n border: 1px solid #c0c090;\\n background-color: #f8eaba;\\n}\\n.mwiki .infobox.standard-talk.bordered td,\\n.mwiki .infobox.standard-talk.bordered th {\\n border: 1px solid #c0c090;\\n}\\n\\n/* styles for bordered infobox with merged rows */\\n.mwiki .infobox.bordered .mergedtoprow td,\\n.mwiki .infobox.bordered .mergedtoprow th {\\n border: 0;\\n border-top: 1px solid #aaa;\\n border-right: 1px solid #aaa;\\n}\\n\\n.mwiki .infobox.bordered .mergedrow td,\\n.mwiki .infobox.bordered .mergedrow th {\\n border: 0;\\n border-right: 1px solid #aaa;\\n}\\n\\n/* Styles for geography infoboxes, e.g. countries, country subdivisions, cities, etc. */\\n.mwiki .infobox.geography {\\n text-align: left;\\n border-collapse: collapse;\\n line-height: 1.2em;\\n font-size: 90%;\\n}\\n\\n.mwiki .infobox.geography td,\\n.mwiki .infobox.geography th {\\n border-top: solid 1px #aaa;\\n padding: 0.4em 0.6em 0.4em 0.6em;\\n}\\n.mwiki .infobox.geography .mergedtoprow td,\\n.mwiki .infobox.geography .mergedtoprow th {\\n border-top: solid 1px #aaa;\\n padding: 0.4em 0.6em 0.2em 0.6em;\\n}\\n\\n.mwiki .infobox.geography .mergedrow td,\\n.mwiki .infobox.geography .mergedrow th {\\n border: 0;\\n padding: 0 0.6em 0.2em 0.6em;\\n}\\n\\n.mwiki .infobox.geography .mergedbottomrow td,\\n.mwiki .infobox.geography .mergedbottomrow th {\\n border-top: 0;\\n border-bottom: solid 1px #aaa;\\n padding: 0 0.6em 0.4em 0.6em;\\n}\\n\\n.mwiki .infobox.geography .maptable td,\\n.mwiki .infobox.geography .maptable th {\\n border: 0;\\n padding: 0;\\n}\\n\\n/* Style for \\\"notices\\\" */\\n.mwiki .notice {\\n margin: 1em;\\n padding: 0.2em;\\n}\\n\\n.mwiki #disambig {\\n border-top: 1px solid #ccc;\\n border-bottom: 1px solid #ccc;\\n}\\n\\n.mwiki .rellink,\\n.mwiki .dablink {\\n font-style: italic;\\n padding-left: 2em;\\n}\\n.mwiki .rellink i,\\n.mwiki .dablink i {\\n font-style: normal;\\n}\\n\\n/* Article message box styles */\\n.mwiki table.ambox {\\n /* 10% = Will not overlap with other elements */\\n margin: -1px 10% 0px; /* -1px = Single border between stacked boxes in all browsers */\\n border: 1px solid #aaa;\\n border-left: 10px solid #1e90ff; /* Default \\\"notice\\\" blue */\\n background: #fbfbfb;\\n}\\n.mwiki .ambox th.mbox-text,\\n.mwiki .ambox td.mbox-text {\\n /* The message body cell(s) */\\n padding: 0.25em 0.5em; /* 0.5em left/right */\\n}\\n.mwiki .ambox td.mbox-image {\\n /* The left image cell */\\n padding: 2px 0 2px 0.5em; /* 0.5em left, 0px right */\\n}\\n.mwiki .ambox td.mbox-imageright {\\n /* The right image cell */\\n padding: 2px 0.5em 2px 0; /* 0px left, 0.5em right */\\n}\\n\\n/* Standard Navigationsleisten, aka box hiding thingy from .de. Documentation at [[Wikipedia:NavFrame]]. */\\n.mwiki div.NavFrame {\\n margin: 0;\\n padding: 4px;\\n border: 1px solid #aaa;\\n text-align: center;\\n border-collapse: collapse;\\n font-size: 95%;\\n}\\n.mwiki div.NavFrame + div.NavFrame {\\n border-top-style: none;\\n border-top-style: hidden;\\n}\\n.mwiki div.NavPic {\\n background-color: #fff;\\n margin: 0;\\n padding: 2px;\\n float: left;\\n}\\n.mwiki div.NavFrame div.NavHead {\\n height: 1.6em;\\n font-weight: bold;\\n background-color: #ccf;\\n position: relative;\\n}\\n.mwiki div.NavFrame p {\\n font-size: 100%;\\n}\\n.mwiki div.NavFrame div.NavContent {\\n font-size: 100%;\\n}\\n.mwiki div.NavFrame div.NavContent p {\\n font-size: 100%;\\n}\\n.mwiki div.NavEnd {\\n margin: 0;\\n padding: 0;\\n line-height: 1px;\\n clear: both;\\n}\\n.mwiki a.NavToggle {\\n position: absolute;\\n top: 0;\\n right: 3px;\\n font-weight: normal;\\n font-size: 90%;\\n}\\n\\n/****** Wiktionary-specific excerpts *********/\\n\\n.mwiki .audiolink a {\\n background: url(\\\"qrc:///icons/audio.png\\\") center left no-repeat !important;\\n padding-left: 20px !important;\\n padding-right: 0 !important;\\n}\\n\\n/* default setting for [[:Category:Inflection templates]] */\\n\\n.mwiki .infl-inline {\\n display: inline;\\n}\\n.mwiki .infl-table {\\n display: none;\\n}\\n/****default hide dict icon ***/\\n.gddicticon {\\n display: none;\\n}\\n\\n.gdexpandicon {\\n cursor: pointer;\\n width: 16px;\\n height: 16px;\\n vertical-align: text-bottom;\\n content: url(\\\"qrc:///icons/old-arrow.svg\\\");\\n}\\n\\n.gdcollapseicon {\\n cursor: pointer;\\n width: 16px;\\n height: 16px;\\n vertical-align: text-bottom;\\n content: url(\\\"qrc:///icons/old-downarrow.svg\\\");\\n}\\n\\n/********** Slob dictionaries ***********/\\n\\n.slobdict img.imgtex {\\n vertical-align: baseline !important;\\n}\\n\\n/************* GLS dictionaries **************/\\n\\n.glsdict_headwords {\\n font-weight: bold;\\n margin-top: 15px;\\n margin-bottom: 10px;\\n font-size: 116%;\\n}\\n\\n.gls_wav img {\\n vertical-align: middle;\\n}\\n\",\"article-style-st-lingoes-blue.css\":\"body {\\n background: #eaf0f8;\\n margin: 0.3em;\\n font-family:\\n \\\"Arial Unicode MS\\\", \\\"Lucida Sans Unicode\\\", Tahoma, Verdana,\\n \\\"Palatino Linotype\\\", sans-serif;\\n line-height: 120%;\\n}\\n\\na {\\n text-decoration: none;\\n color: #18a3fa;\\n}\\n\\na:hover {\\n text-decoration: underline;\\n}\\n\\n.gdarticle {\\n background: #fffef2;\\n margin-top: 0.1em;\\n margin-bottom: 0.35em;\\n padding: 5px;\\n padding-top: -10px;\\n border: 1px solid #c7d4dc;\\n border-radius: 8px;\\n}\\n\\n.gdactivearticle {\\n background: #fffef2;\\n border: 1px solid #92b0dd;\\n}\\n\\n.gdarticleseparator + script + .gdactivearticle .gddictname {\\n border-top: 1px solid #92b0dd;\\n border-right: 1px solid #92b0dd;\\n}\\n\\n.gddictname {\\n display: flex;\\n justify-content: flex-end;\\n font-size: 12px;\\n font-weight: normal;\\n border: 0px;\\n border-top: 1px solid #c7d4dc;\\n border-right: 1px solid #c7d4dc;\\n border-top-right-radius: 8px;\\n border-bottom-left-radius: 6px;\\n margin: -6px;\\n margin-bottom: 5px;\\n margin-left: 2px;\\n padding-right: 0.4em;\\n color: #34517d;\\n background: #dde6f5;\\n user-select: none;\\n cursor: default;\\n}\\n\\n/* Actual text with the dictionary title */\\n.gddicttitle {\\n display: block;\\n order: 1;\\n}\\n\\n.gdactivearticle .gddictname {\\n border-top: 1px solid #92b0dd;\\n border-right: 1px solid #92b0dd;\\n color: darkblue;\\n background: #cfddf0;\\n}\\n\\n.gdcollapsedarticle .gddictname {\\n opacity: 0.7;\\n}\\n\\n/* Nice diagonal pattern for the collapsed article */\\n.gdcollapsedarticle {\\n background-image: linear-gradient(\\n to bottom right,\\n #ccc 0%,\\n #ccc 25%,\\n #bbb 25%,\\n #bbb 50%,\\n #ccc 50%,\\n #ccc 75%,\\n #bbb 75%\\n );\\n background-size: 50px 50px;\\n}\\n\\n/* Move the collapse/expand buttons to the last, 3rd position */\\n.collapse_expand_area {\\n display: block;\\n order: 3;\\n}\\n\\n.gddicticon {\\n display: block;\\n vertical-align: text-bottom;\\n padding-right: -1em;\\n padding-left: 0.3em;\\n order: 2;\\n}\\n\\n.gdexpandicon,\\n.gdexpandicon:hover,\\n.gdcollapseicon,\\n.gdcollapseicon:hover {\\n width: auto;\\n height: 100%;\\n vertical-align: text-bottom;\\n}\\n\\n.gdexpandicon {\\n content: url(\\\"qrc:///icons/expand_article.svg\\\");\\n}\\n\\n.gdexpandicon:hover {\\n content: url(\\\"qrc:///icons/expand_article_hovered.svg\\\");\\n}\\n\\n.gdcollapseicon {\\n content: url(\\\"qrc:///icons/collapse_article.svg\\\");\\n}\\n\\n.gdcollapseicon:hover {\\n content: url(\\\"qrc:///icons/collapse_article_hovered.svg\\\");\\n}\\n\\n.gdarticleseparator {\\n display: none;\\n clear: both;\\n}\\n\\n/* The 'From ' string which preceeds dictionary name in the heading */\\n.gdfromprefix {\\n display: none;\\n}\\n\\n/* Headers */\\nh3 {\\n color: inherit;\\n font-family: Arial, sans-serif;\\n}\\n\\n/* The first headword in a (possibly) multi-headword DSL article */\\n.gdarticlebody > div:first-child .dsl_headwords {\\n margin-top: -3px;\\n display: inline-block;\\n}\\n\\n.mwiki .toc,\\n.mwiki .metadata,\\n.mwiki .mbox-small,\\n.mwiki .plainlinks {\\n display: none;\\n}\\n\\n.gddicticon img {\\n border: 0;\\n height: 15px;\\n vertical-align: text-top;\\n}\\n\\n/* Text selection */\\n::selection {\\n background: #839ec7;\\n color: #fff;\\n}\\n\\ncode::selection {\\n background: #839ec7;\\n}\\n\\n/******** DSL Dictionaries ****************/\\n\\n/* DSL headwords */\\n.dsl_headwords {\\n color: inherit;\\n font-family: Arial, sans-serif;\\n}\\n\\n/* Formatting */\\n.dsl_b {\\n font-family: Arial, sans-serif;\\n}\\n\\n.dsl_ex,\\n.dsl_ex .dsl_opt {\\n color: slategray;\\n}\\n\\n.dsl_ref {\\n color: #0000dd;\\n}\\n\\n.dsl_url {\\n color: #0000dd;\\n}\\n\\n/* Stress settings */\\n.dsl_stress_without_accent,\\n.dsl_opt .dsl_ex .dsl_stress_without_accent {\\n display: none;\\n color: green;\\n}\\n\\n.dsl_stress_with_accent,\\n.dsl_opt .dsl_ex .dsl_stress_with_accent {\\n display: inline;\\n color: #dd0000;\\n}\\n.dsl_stress,\\n.dsl_opt .dsl_ex .dsl_stress {\\n display: inline;\\n color: blue;\\n}\\n\\n/* Sound icon */\\n.dsl_s_wav img {\\n display: none;\\n}\\n\\n.dsl_s_wav a {\\n text-decoration: none;\\n user-select: none;\\n display: inline-block;\\n width: 18px;\\n height: 18px;\\n border-radius: 100px;\\n text-align: center;\\n vertical-align: text-bottom;\\n color: #1a3300;\\n border: 1px solid #798415;\\n box-shadow:\\n 1px 1px #ccc,\\n inset -1px -1px #4e7500;\\n\\n background: linear-gradient(\\n to bottom right,\\n rgba(191, 210, 85, 1) 0%,\\n rgba(142, 185, 42, 1) 50%,\\n rgba(114, 170, 0, 1) 51%,\\n rgba(158, 203, 45, 1) 100%\\n );\\n}\\n\\n.dsl_s_wav a:hover {\\n background: linear-gradient(\\n to bottom right,\\n #e6f0a3 0%,\\n #d2e638 50%,\\n #c3d825 51%,\\n #dbf043 100%\\n );\\n\\n border: 1px solid #a2b01c;\\n box-shadow:\\n 1px 1px #ccc,\\n inset -1px -1px #8a991a;\\n}\\n\\n.dsl_s_wav a:active {\\n box-shadow:\\n 1px 1px #ccc,\\n inset 1px 1px #b1c421;\\n}\\n\\n.dsl_s_wav a:after {\\n display: inline-block;\\n font-family: \\\"Webdings\\\", sans-serif;\\n content: \\\"X\\\";\\n width: 18px;\\n height: 18px;\\n font-size: 16px;\\n text-align: center;\\n vertical-align: center;\\n background-clip: text;\\n color: #e6ef8f;\\n -webkit-text-stroke: 1px #51580e;\\n}\\n\\n.dsl_s_wav a:hover:after {\\n -webkit-text-stroke: 1px #656e11;\\n}\\n\\n/******** Verbix Dictionaries ****************/\\n\\n.sdct_h .normal {\\n font-family: Arial, sans-serif;\\n font-size: 10pt;\\n color: #000000;\\n font-weight: normal;\\n text-decoration: none;\\n}\\n\\n.sdct_h .irregular {\\n font-family: Arial, sans-serif;\\n font-size: 10pt;\\n color: #ff0000;\\n font-weight: bold;\\n text-decoration: none;\\n}\\n\\n.sdct_h .orto {\\n font-family: Arial, sans-serif;\\n font-size: 10pt;\\n color: #0000ff;\\n font-weight: normal;\\n text-decoration: none;\\n}\\n\\n.sdct_h .archaic {\\n font-family: Arial, sans-serif;\\n font-size: 10pt;\\n color: #800080;\\n font-weight: normal;\\n text-decoration: none;\\n}\\n\\n.sdct_h .notused {\\n font-family: Arial, sans-serif;\\n font-size: 10pt;\\n color: #808080;\\n font-weight: normal;\\n text-decoration: none;\\n}\\n\\n.sdct_h .pronoun {\\n font-family: Arial, sans-serif;\\n font-size: 10pt;\\n color: #008000;\\n font-weight: normal;\\n text-decoration: none;\\n}\\n\\n.sdct_h > table {\\n border: 1px solid #444444;\\n border-collapse: collapse;\\n}\\n\\n.sdct_h td.verbtable {\\n border: 1px solid #444444;\\n}\\n\\n.sdct_h th {\\n background-color: #a6c9ef;\\n font-weight: bold;\\n}\\n\\n.sdct_h .mini {\\n font-size: 8pt;\\n font-weight: normal;\\n color: #808080;\\n}\\n\\n.sdct_h div.spacerline {\\n clear: both;\\n margin-left: 8px;\\n width: 100%;\\n border-top: 1px solid #ccc;\\n}\\n\\n.sdct_h div.spacer {\\n clear: both;\\n}\\n\\n.sdct_h div.float {\\n margin-left: 8px;\\n float: left;\\n}\\n\\n.sdct_h div.float400 {\\n margin-left: 8px;\\n float: left;\\n width: 400px;\\n}\\n\\n.sdct_h div.float250color {\\n margin-left: 8px;\\n float: left;\\n width: 250px;\\n border-style: dashed;\\n border-color: #0033cc;\\n border-collapse: collapse;\\n border-width: 1px;\\n background-color: #eeeeee;\\n padding: 8px 8px 8px 8px;\\n}\\n\",\"article-style-st-lingoes.css\":\"a {\\n color: #2233bb;\\n text-decoration: none;\\n}\\n\\na:hover {\\n color: #6677ff;\\n}\\n\\n::selection {\\n background: #3399ff;\\n color: white;\\n}\\n\\nbody {\\n background: #fffef2;\\n color: black;\\n font-family: Tahoma, Verdana, SimSun, SimSun-ExtB, sans-serif;\\n margin: 5px;\\n}\\n\\n.gdarticle {\\n background: #fffef2;\\n margin-top: -8px;\\n position: relative;\\n}\\n\\n.gddicticon {\\n display: inline;\\n margin-left: -3px;\\n padding-right: 5px;\\n}\\n\\n.gddicticon img {\\n border: 0px;\\n height: 16px;\\n vertical-align: text-top;\\n}\\n\\n.gdexpandicon,\\n.gdexpandicon:hover,\\n.gdcollapseicon,\\n.gdcollapseicon:hover {\\n width: auto;\\n height: 100%;\\n vertical-align: text-bottom;\\n}\\n\\n.gdexpandicon {\\n content: url(\\\"qrc:///icons/expand_article.svg\\\");\\n}\\n\\n.gdexpandicon:hover {\\n content: url(\\\"qrc:///icons/expand_article_hovered.svg\\\");\\n}\\n\\n.gdcollapseicon {\\n content: url(\\\"qrc:///icons/collapse_article.svg\\\");\\n}\\n\\n.gdcollapseicon:hover {\\n content: url(\\\"qrc:///icons/collapse_article_hovered.svg\\\");\\n}\\n\\n.gdfromprefix {\\n display: none;\\n}\\n\\n.gddictname {\\n display: flex;\\n align-items: center;\\n width: 100%;\\n box-sizing: border-box;\\n padding: 0.5em 0.5em;\\n margin-top: 1em;\\n margin-bottom: 0;\\n background: #cfddf0;\\n color: #000080;\\n font-weight: normal;\\n font-size: 12px;\\n cursor: pointer;\\n user-select: none;\\n}\\n\\n.collapse_expand_area {\\n position: absolute;\\n right: 0px;\\n}\\n\\n.gdarticlebody {\\n clear: both;\\n border-top: 1px solid #92b0dd;\\n margin-top: 1em;\\n}\\n\",\"article-style-st-lingvo.css\":\"html {\\n background-color: white;\\n}\\n\\nbody {\\n background: white;\\n}\\n\\na:hover {\\n text-decoration: underline;\\n}\\n\\n.gdarticle {\\n background: white;\\n}\\n\\n/* The 'From ' string which preceeds dictionary name in the heading */\\n.gdfromprefix {\\n display: none;\\n}\\n\\n/* Dictionary's name heading */\\n.gddictname {\\n padding: 0.2em;\\n padding-left: 0.5em;\\n margin-bottom: 0.1em;\\n font-size: 14px;\\n font-weight: normal;\\n float: right;\\n border: 1px solid white;\\n margin-top: 7px;\\n color: #7f7f7f;\\n background: white;\\n}\\n\\n.gdarticleseparator + script + .gdarticle .gddictname {\\n border-top: 1px solid #ccc;\\n /* margin-top: 11px;*/\\n}\\n\\n.gdactivearticle .gddictname {\\n font-weight: normal;\\n\\n float: right;\\n border: 1px solid #b3d7f7;\\n margin-top: 7px;\\n color: #0066ff;\\n background: #deecf8;\\n}\\n\\n.gdarticleseparator + script + .gdactivearticle .gddictname {\\n border-top: 1px solid #b3d7f7;\\n /* margin-top: 11px;*/\\n}\\n\\n.gdarticleseparator {\\n margin-top: 10px;\\n border-bottom: 1px solid #cccccc;\\n margin-bottom: 0px;\\n width: 100%;\\n display: inline-block;\\n clear: both;\\n}\\n\\n.gddictname + h3,\\n.gddictname + .dsl_article > .dsl_headwords {\\n margin-top: 10px;\\n}\\n\\n.dsl_ex,\\n.dsl_ex .dsl_opt {\\n color: inherit;\\n}\\n\\n.dsl_com {\\n color: black;\\n}\\n\",\"article-style-st-modern.css\":\"html {\\n background-color: white;\\n}\\n\\nbody {\\n margin: 0;\\n background: white;\\n}\\n\\na {\\n text-decoration: none;\\n color: #18a3fa;\\n}\\n\\na:hover {\\n text-decoration: underline;\\n}\\n\\n.gdarticle {\\n margin-top: 0.1em;\\n margin-bottom: 0.4em;\\n padding: 5px;\\n border: 1px solid #d0dde2;\\n border-radius: 8px;\\n background: white;\\n padding-left: 2em;\\n padding-right: 2em;\\n}\\n\\n.gdactivearticle {\\n border: 1px solid #3399ff;\\n}\\n\\n.gdarticleseparator + script + .gdactivearticle .gddictname {\\n border-top: 1px solid #3399ff;\\n}\\n\\n.gdarticleseparator {\\n display: none;\\n clear: both;\\n}\\n\\n/* Hide the 'From ' string which precedes dictionary name in the heading */\\n.gdfromprefix {\\n display: none;\\n}\\n\\n.gddictname {\\n display: flex;\\n justify-content: flex-end;\\n font-size: 12px;\\n font-weight: normal;\\n border: 0;\\n border-bottom-right-radius: 8px;\\n border-bottom-left-radius: 8px;\\n margin: -6px;\\n margin-bottom: 5px;\\n margin-left: 2px;\\n padding-right: 0.3em;\\n color: #4480f8;\\n background: #e0e8f0;\\n user-select: none;\\n cursor: default;\\n}\\n\\n/* Actual text with the dictionary title */\\n.gddicttitle {\\n display: block;\\n order: 1;\\n}\\n\\n.gdactivearticle .gddictname {\\n font-weight: normal;\\n margin: -6px;\\n margin-bottom: 5px;\\n margin-left: 2px;\\n border: 1px solid #3399ff;\\n color: #0066cc;\\n background: #deecf8;\\n}\\n\\n.gdcollapsedarticle .gddictname {\\n opacity: 0.7;\\n}\\n\\n/* Nice diagonal pattern for the collapsed article */\\n.gdcollapsedarticle {\\n background-image: linear-gradient(\\n to bottom right,\\n #ccc 0%,\\n #ccc 25%,\\n #bbb 25%,\\n #bbb 50%,\\n #ccc 50%,\\n #ccc 75%,\\n #bbb 75%\\n );\\n background-size: 50px 50px;\\n}\\n\\n/* Move the collapse/expand buttons to the last, 3rd position */\\n.collapse_expand_area {\\n display: block;\\n order: 3;\\n}\\n\\n.gddicticon {\\n display: block;\\n vertical-align: text-bottom;\\n padding-right: -1em;\\n padding-left: 0.3em;\\n order: 2;\\n}\\n\\n.gddicticon img {\\n height: 1.3em;\\n}\\n\\n.gdexpandicon,\\n.gdexpandicon:hover,\\n.gdcollapseicon,\\n.gdcollapseicon:hover {\\n width: auto;\\n height: 100%;\\n vertical-align: text-bottom;\\n}\\n\\n.gdexpandicon {\\n content: url(\\\"qrc:///icons/expand_article.svg\\\");\\n}\\n\\n.gdexpandicon:hover {\\n content: url(\\\"qrc:///icons/expand_article_hovered.svg\\\");\\n}\\n\\n.gdcollapseicon {\\n content: url(\\\"qrc:///icons/collapse_article.svg\\\");\\n}\\n\\n.gdcollapseicon:hover {\\n content: url(\\\"qrc:///icons/collapse_article_hovered.svg\\\");\\n}\\n\\n.gdarticlebody {\\n position: relative;\\n}\\n\\n/* The first headword in a (possibly) multi-headword DSL article */\\n.gdarticlebody > div:first-child .dsl_headwords {\\n margin-top: -3px;\\n display: inline-block;\\n}\\n\\n.gdspellsuggestion {\\n /* Add some vertical space before the article */\\n margin-top: 1.5em;\\n}\\n\\n.dsl_ex,\\n.dsl_ex .dsl_opt {\\n color: steelblue;\\n}\\n\\n::selection {\\n background: #cc0000;\\n color: #fff;\\n}\\n\\ncode::selection {\\n background: #333333;\\n}\\n\"};\n","import { rewriteBuiltinAssetUrls } from \"../assets\";\nimport type { GoldenDictPreset } from \"../types\";\nimport { GOLDENDICT_VENDOR_CSS } from \"./vendor.generated\";\n\nconst baseCss = GOLDENDICT_VENDOR_CSS[\"article-style.css\"];\nconst printCss = GOLDENDICT_VENDOR_CSS[\"article-style-print.css\"];\nconst babylonCss = GOLDENDICT_VENDOR_CSS[\"article-style-st-babylon.css\"];\nconst classicCss = GOLDENDICT_VENDOR_CSS[\"article-style-st-classic.css\"];\nconst lingoesBlueCss =\n GOLDENDICT_VENDOR_CSS[\"article-style-st-lingoes-blue.css\"];\nconst lingoesCss = GOLDENDICT_VENDOR_CSS[\"article-style-st-lingoes.css\"];\nconst lingvoCss = GOLDENDICT_VENDOR_CSS[\"article-style-st-lingvo.css\"];\nconst modernCss = GOLDENDICT_VENDOR_CSS[\"article-style-st-modern.css\"];\n\nconst presets: Readonly<Record<GoldenDictPreset, string>> = {\n default: \"\",\n classic: classicCss,\n modern: modernCss,\n lingvo: lingvoCss,\n babylon: babylonCss,\n lingoes: lingoesCss,\n \"lingoes-blue\": lingoesBlueCss,\n};\n\nexport const GOLDENDICT_BASE_CSS = rewriteBuiltinAssetUrls(baseCss);\nexport const GOLDENDICT_PRINT_CSS = rewriteBuiltinAssetUrls(printCss);\n\nexport function getGoldenDictPresetCss(\n preset: GoldenDictPreset = \"default\",\n): string {\n return rewriteBuiltinAssetUrls(presets[preset]);\n}\n","import { resolveBuiltinAsset } from \"../assets\";\n\nexport interface ResourceContext {\n apiBaseUrl: string;\n dictionaryId: string;\n iconUrl?: string;\n resourceBaseUrl?: string;\n}\n\nexport type ArticleLinkAction =\n | { kind: \"anchor\"; anchor: string }\n | { kind: \"lookup\"; word: string; anchor?: string; dictionaryIds?: string[] }\n | { kind: \"audio\" | \"video\" | \"resource\"; url: string }\n | { kind: \"external\"; url: string }\n | { kind: \"unsafe\" };\n\nconst CUSTOM_RESOURCE_SCHEMES = new Set([\n \"bres\",\n \"qrcx\",\n \"gico\",\n \"gdau\",\n \"gdvideo\",\n]);\n\nexport const GOLDENDICT_SCHEME_SUPPORT = {\n gdlookup: \"lookup\",\n bword: \"lookup\",\n entry: \"lookup\",\n bres: \"resource\",\n qrcx: \"resource\",\n gico: \"resource\",\n gdau: \"audio\",\n gdvideo: \"video\",\n qrc: \"asset\",\n gdprg: \"unsupported\",\n gdtts: \"unsupported\",\n gdinternal: \"unsupported\",\n ankicard: \"unsupported\",\n ankisearch: \"unsupported\",\n} as const;\n\nconst UNSUPPORTED_INTERNAL_SCHEMES = new Set(\n Object.entries(GOLDENDICT_SCHEME_SUPPORT)\n .filter(([, support]) => support === \"unsupported\")\n .map(([scheme]) => scheme),\n);\n\nfunction decode(value: string): string {\n try {\n return decodeURIComponent(value);\n } catch {\n return value;\n }\n}\n\nfunction joinUrl(base: string, path: string): string {\n return `${base.replace(/\\/+$/, \"\")}/${path.replace(/^\\/+/, \"\")}`;\n}\n\nfunction normalizedResourcePath(url: URL): string {\n return url.pathname\n .replace(/^\\/+/, \"\")\n .split(\"/\")\n .map((part) => encodeURIComponent(decode(part)))\n .join(\"/\");\n}\n\nfunction absoluteOrRelativeUrl(raw: string, base: string): string {\n if (/^[a-z][a-z\\d+.-]*:/i.test(raw) || raw.startsWith(\"//\")) {\n return raw;\n }\n if (/^[a-z][a-z\\d+.-]*:/i.test(base)) {\n return new URL(raw, base.endsWith(\"/\") ? base : `${base}/`).toString();\n }\n return joinUrl(base, raw);\n}\n\nfunction contextResourceBase(context: ResourceContext): string | undefined {\n const base = context.resourceBaseUrl;\n if (!base) {\n return undefined;\n }\n if (\n base.startsWith(\"/\") &&\n !base.startsWith(\"//\") &&\n /^[a-z][a-z\\d+.-]*:/i.test(context.apiBaseUrl)\n ) {\n return new URL(base, context.apiBaseUrl).toString();\n }\n return base;\n}\n\nexport function resolveResourceUrl(\n rawUrl: string,\n context: ResourceContext,\n): string {\n const builtin = resolveBuiltinAsset(rawUrl);\n if (builtin) {\n return builtin;\n }\n if (rawUrl.startsWith(\"/\") && !rawUrl.startsWith(\"//\")) {\n if (/^[a-z][a-z\\d+.-]*:/i.test(context.apiBaseUrl)) {\n return new URL(rawUrl, context.apiBaseUrl).toString();\n }\n return rawUrl;\n }\n let url: URL;\n try {\n url = new URL(rawUrl);\n } catch {\n const resourceBase = contextResourceBase(context);\n return resourceBase\n ? absoluteOrRelativeUrl(rawUrl, resourceBase)\n : rawUrl;\n }\n const scheme = url.protocol.slice(0, -1).toLowerCase();\n if (!CUSTOM_RESOURCE_SCHEMES.has(scheme)) {\n return rawUrl;\n }\n const dictionaryId = url.hostname || context.dictionaryId;\n if (scheme === \"gico\") {\n return context.iconUrl\n ? resolveResourceUrl(context.iconUrl, {\n ...context,\n iconUrl: undefined,\n })\n : (resolveBuiltinAsset(\"qrc:///icons/document.png\") ?? \"\");\n }\n const path = normalizedResourcePath(url);\n const fallbackBase = `${context.apiBaseUrl.replace(/\\/+$/, \"\")}/dictionaries/${encodeURIComponent(dictionaryId)}/resources`;\n const resolved = joinUrl(contextResourceBase(context) ?? fallbackBase, path);\n return url.hash ? `${resolved}${url.hash}` : resolved;\n}\n\nfunction parseLookupUrl(rawUrl: string): ArticleLinkAction | undefined {\n const schemeMatch = /^([a-z][a-z\\d+.-]*):(.*)$/i.exec(rawUrl);\n if (!schemeMatch) {\n return undefined;\n }\n const scheme = schemeMatch[1]?.toLowerCase();\n if (scheme !== \"gdlookup\" && scheme !== \"bword\" && scheme !== \"entry\") {\n return undefined;\n }\n let word = \"\";\n let anchor: string | undefined;\n let dictionaryIds: string[] | undefined;\n try {\n const parsed = new URL(rawUrl);\n word = parsed.searchParams.get(\"word\") ?? parsed.pathname.replace(/^\\/+/, \"\");\n anchor =\n parsed.searchParams.get(\"gdanchor\") ??\n (parsed.hash.slice(1) || undefined);\n const dictionaries = parsed.searchParams.get(\"dictionaries\");\n dictionaryIds = dictionaries?.split(\",\").filter(Boolean);\n if (!word && (scheme === \"bword\" || scheme === \"entry\")) {\n word = parsed.hostname;\n }\n } catch {\n const remainder = schemeMatch[2]?.replace(/^\\/{0,2}/, \"\") ?? \"\";\n const [pathAndQuery, hash] = remainder.split(\"#\", 2);\n const [path, query] = (pathAndQuery ?? \"\").split(\"?\", 2);\n word = path ?? \"\";\n const params = new URLSearchParams(query ?? \"\");\n anchor = params.get(\"gdanchor\") ?? (hash || undefined);\n }\n word = decode(word.replace(/^\\/+/, \"\"));\n if (!word) {\n return { kind: \"unsafe\" };\n }\n return {\n kind: \"lookup\",\n word,\n ...(anchor ? { anchor: decode(anchor) } : {}),\n ...(dictionaryIds?.length ? { dictionaryIds } : {}),\n };\n}\n\nexport function classifyArticleLink(\n rawUrl: string,\n context: ResourceContext,\n): ArticleLinkAction {\n const value = rawUrl.trim();\n if (!value || value === \"#\") {\n return { kind: \"anchor\", anchor: \"\" };\n }\n if (value.startsWith(\"#\")) {\n return { kind: \"anchor\", anchor: decode(value.slice(1)) };\n }\n const lookup = parseLookupUrl(value);\n if (lookup) {\n return lookup;\n }\n const scheme = /^([a-z][a-z\\d+.-]*):/i.exec(value)?.[1]?.toLowerCase();\n if (\n scheme === \"javascript\" ||\n scheme === \"vbscript\" ||\n scheme === \"file\" ||\n scheme === \"data\"\n ) {\n return { kind: \"unsafe\" };\n }\n if (scheme && UNSUPPORTED_INTERNAL_SCHEMES.has(scheme)) {\n return { kind: \"unsafe\" };\n }\n if (scheme && CUSTOM_RESOURCE_SCHEMES.has(scheme)) {\n const kind = scheme === \"gdau\" ? \"audio\" : scheme === \"gdvideo\" ? \"video\" : \"resource\";\n return { kind, url: resolveResourceUrl(value, context) };\n }\n if (\n value.startsWith(\"//\") ||\n scheme === \"http\" ||\n scheme === \"https\" ||\n scheme === \"mailto\" ||\n scheme === \"tel\"\n ) {\n return { kind: \"external\", url: value };\n }\n if (scheme) {\n return { kind: \"unsafe\" };\n }\n if (value.startsWith(\"/\")) {\n return { kind: \"resource\", url: resolveResourceUrl(value, context) };\n }\n const [word, anchor] = value.split(\"#\", 2);\n if (!word) {\n return { kind: \"anchor\", anchor: decode(anchor ?? \"\") };\n }\n return {\n kind: \"lookup\",\n word: decode(word),\n ...(anchor ? { anchor: decode(anchor) } : {}),\n };\n}\n","import type { LookupArticle, ScriptPolicy } from \"../types\";\nimport {\n classifyArticleLink,\n resolveResourceUrl,\n type ArticleLinkAction,\n type ResourceContext,\n} from \"./link-router\";\n\nconst RESOURCE_ATTRIBUTES = [\"src\", \"poster\", \"data\"] as const;\n\nfunction isDirectBrowserUrl(url: string): boolean {\n return /^(?:data:|blob:|https?:|#)/i.test(url);\n}\n\nfunction declaredLinkAction(\n element: Element,\n href: string,\n context: ResourceContext,\n): ArticleLinkAction | undefined {\n const declarations = [\n [\"data-gd-audio\", \"audio\"],\n [\"data-gd-video\", \"video\"],\n [\"data-gd-resource\", \"resource\"],\n ] as const;\n for (const [attribute, kind] of declarations) {\n if (element.hasAttribute(attribute)) {\n const declaredUrl = element.getAttribute(attribute)?.trim();\n return {\n kind,\n url: resolveResourceUrl(declaredUrl || href, context),\n };\n }\n }\n const declaredKind = element.getAttribute(\"data-gd-action\")?.trim().toLowerCase();\n if (\n declaredKind === \"audio\" ||\n declaredKind === \"video\" ||\n declaredKind === \"resource\"\n ) {\n return { kind: declaredKind, url: resolveResourceUrl(href, context) };\n }\n if (element.hasAttribute(\"data-gd-lookup\") || declaredKind === \"lookup\") {\n const declaredWord = element.getAttribute(\"data-gd-lookup\")?.trim();\n if (declaredWord && declaredWord !== \"true\" && declaredWord !== \"1\") {\n return { kind: \"lookup\", word: declaredWord };\n }\n const classified = classifyArticleLink(href, context);\n if (classified.kind === \"lookup\") {\n return classified;\n }\n const word = element.getAttribute(\"data-gd-word\")?.trim();\n return word ? { kind: \"lookup\", word } : { kind: \"unsafe\" };\n }\n if (declaredKind === \"unsafe\") {\n return { kind: \"unsafe\" };\n }\n return undefined;\n}\n\nfunction setActionAttributes(\n element: Element,\n action: ArticleLinkAction,\n dictionaryId: string,\n): void {\n switch (action.kind) {\n case \"anchor\":\n element.setAttribute(\n \"href\",\n action.anchor ? `#${encodeURIComponent(action.anchor)}` : \"#\",\n );\n break;\n case \"lookup\":\n element.setAttribute(\"href\", \"#\");\n element.setAttribute(\"data-gd-action\", \"lookup\");\n element.setAttribute(\"data-gd-word\", action.word);\n if (action.anchor) {\n element.setAttribute(\"data-gd-anchor\", action.anchor);\n }\n if (action.dictionaryIds?.length) {\n element.setAttribute(\n \"data-gd-dictionaries\",\n action.dictionaryIds.join(\",\"),\n );\n }\n break;\n case \"audio\":\n case \"video\":\n case \"resource\":\n element.setAttribute(\"href\", action.url);\n element.setAttribute(\"data-gd-action\", action.kind);\n element.setAttribute(\"data-gd-dictionary\", dictionaryId);\n break;\n case \"external\":\n element.setAttribute(\"href\", action.url);\n element.setAttribute(\"data-gd-action\", \"external\");\n break;\n case \"unsafe\":\n element.setAttribute(\"href\", \"#\");\n element.setAttribute(\"data-gd-action\", \"unsafe\");\n break;\n }\n}\n\nexport function rewriteCssResourceUrls(\n css: string,\n context: ResourceContext,\n): string {\n const rewrittenUrls = css.replace(\n /url\\(\\s*([\"']?)([^\"')]+)\\1\\s*\\)/gi,\n (match, quote: string, rawUrl: string) => {\n const value = rawUrl.trim();\n if (isDirectBrowserUrl(value)) {\n return match;\n }\n return `url(${quote}${resolveResourceUrl(value, context)}${quote})`;\n },\n );\n return rewrittenUrls.replace(\n /@import\\s+([\"'])([^\"']+)\\1/gi,\n (match, quote: string, rawUrl: string) => {\n if (isDirectBrowserUrl(rawUrl)) {\n return match;\n }\n return `@import ${quote}${resolveResourceUrl(rawUrl, context)}${quote}`;\n },\n );\n}\n\nfunction rewriteSrcset(value: string, context: ResourceContext): string {\n return value\n .split(/,\\s+(?=[^,]+(?:\\s+\\d+(?:\\.\\d+)?[wx])?(?:,|$))/)\n .map((candidate) => {\n const match = /^(\\S+)([\\s\\S]*)$/.exec(candidate.trim());\n if (!match?.[1] || isDirectBrowserUrl(match[1])) {\n return candidate.trim();\n }\n return `${resolveResourceUrl(match[1], context)}${match[2] ?? \"\"}`;\n })\n .join(\", \");\n}\n\nfunction preserveOptionalPartTarget(element: Element): void {\n if (!element.classList.contains(\"hidden_expand_opt\")) {\n return;\n }\n const handler = element.getAttribute(\"onclick\") ?? \"\";\n const match = /gdExpandOptPart\\(\\s*['\"]([^'\"]+)['\"]\\s*,\\s*['\"]([^'\"]+)['\"]\\s*\\)/.exec(\n handler,\n );\n if (match?.[1] && match[2]) {\n element.setAttribute(\"data-gd-expander\", match[1]);\n element.setAttribute(\"data-gd-optional\", match[2]);\n }\n}\n\nexport function prepareArticleHtml(\n article: LookupArticle,\n apiBaseUrl: string,\n scriptPolicy: ScriptPolicy,\n): string {\n if (typeof document === \"undefined\") {\n throw new Error(\"Article rendering requires a browser document\");\n }\n const context: ResourceContext = {\n apiBaseUrl,\n dictionaryId: article.dictionaryId,\n ...(article.iconUrl ? { iconUrl: article.iconUrl } : {}),\n ...(article.resourceBaseUrl\n ? { resourceBaseUrl: article.resourceBaseUrl }\n : {}),\n };\n const parsed = document.implementation.createHTMLDocument(\"\");\n const container = parsed.createElement(\"div\");\n container.innerHTML = article.html;\n\n container.querySelectorAll(\"base, meta[http-equiv='refresh' i]\").forEach((node) => {\n node.remove();\n });\n if (scriptPolicy === \"none\") {\n container.querySelectorAll(\"script\").forEach((node) => node.remove());\n }\n\n for (const element of container.querySelectorAll(\"*\")) {\n preserveOptionalPartTarget(element);\n if (scriptPolicy === \"none\") {\n for (const attribute of [...element.attributes]) {\n if (/^on/i.test(attribute.name) || attribute.name.toLowerCase() === \"srcdoc\") {\n element.removeAttribute(attribute.name);\n }\n }\n }\n\n if (element instanceof HTMLAnchorElement || element.tagName === \"AREA\") {\n const href = element.getAttribute(\"href\");\n if (href !== null) {\n setActionAttributes(\n element,\n declaredLinkAction(element, href, context) ??\n classifyArticleLink(href, context),\n article.dictionaryId,\n );\n }\n } else if (element.hasAttribute(\"href\")) {\n const href = element.getAttribute(\"href\") ?? \"\";\n if (!isDirectBrowserUrl(href)) {\n element.setAttribute(\"href\", resolveResourceUrl(href, context));\n }\n }\n\n for (const attribute of RESOURCE_ATTRIBUTES) {\n const value = element.getAttribute(attribute);\n if (value === null || isDirectBrowserUrl(value)) {\n continue;\n }\n if (/^(?:javascript|vbscript|file):/i.test(value)) {\n element.removeAttribute(attribute);\n } else {\n element.setAttribute(attribute, resolveResourceUrl(value, context));\n }\n }\n const srcset = element.getAttribute(\"srcset\");\n if (srcset) {\n element.setAttribute(\"srcset\", rewriteSrcset(srcset, context));\n }\n const inlineStyle = element.getAttribute(\"style\");\n if (inlineStyle) {\n element.setAttribute(\n \"style\",\n rewriteCssResourceUrls(inlineStyle, context),\n );\n }\n }\n\n for (const style of container.querySelectorAll(\"style\")) {\n style.textContent = rewriteCssResourceUrls(style.textContent ?? \"\", context);\n }\n return container.innerHTML;\n}\n","import type {\n GoldenDictTheme,\n GoldenDictThemeTokens,\n ThemeMode,\n} from \"../types\";\n\nexport const LIGHT_THEME_TOKENS: Readonly<GoldenDictThemeTokens> = {\n fontFamily:\n '-apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Ubuntu, Arial, sans-serif',\n textColor: \"#222222\",\n mutedTextColor: \"#555555\",\n linkColor: \"#005a9c\",\n backgroundColor: \"#ffffff\",\n surfaceColor: \"#f9f9f9\",\n headerColor: \"#ddeeff\",\n borderColor: \"#e3e3e3\",\n accentColor: \"#cc0000\",\n selectionColor: \"#cc0000\",\n selectionTextColor: \"#ffffff\",\n radius: \"8px\",\n spacing: \"8px\",\n};\n\nexport const DARK_THEME_TOKENS: Readonly<GoldenDictThemeTokens> = {\n fontFamily: LIGHT_THEME_TOKENS.fontFamily,\n textColor: \"#edf1f5\",\n mutedTextColor: \"#aeb8c3\",\n linkColor: \"#79bfff\",\n backgroundColor: \"#16191d\",\n surfaceColor: \"#20252b\",\n headerColor: \"#283746\",\n borderColor: \"#3c4652\",\n accentColor: \"#ff6b6b\",\n selectionColor: \"#b43a45\",\n selectionTextColor: \"#ffffff\",\n radius: \"8px\",\n spacing: \"8px\",\n};\n\nexport function resolveThemeMode(mode: ThemeMode = \"light\"): \"light\" | \"dark\" {\n if (mode !== \"auto\") {\n return mode;\n }\n return globalThis.matchMedia?.(\"(prefers-color-scheme: dark)\").matches\n ? \"dark\"\n : \"light\";\n}\n\nfunction declaration(name: string, value: string | undefined): string {\n return value === undefined ? \"\" : `${name}:${value};`;\n}\n\nexport function escapeStyleText(css: string): string {\n return css.replace(/<\\/style/gi, \"<\\\\/style\");\n}\n\nexport function themeToCss(theme: GoldenDictTheme = {}): string {\n const mode = resolveThemeMode(theme.mode);\n const supplied = theme.tokens ?? {};\n const tokens: Partial<GoldenDictThemeTokens> =\n mode === \"dark\" ? { ...DARK_THEME_TOKENS, ...supplied } : supplied;\n const variables = [\n declaration(\"--gd-font-family\", tokens.fontFamily),\n declaration(\"--gd-text-color\", tokens.textColor),\n declaration(\"--gd-muted-text-color\", tokens.mutedTextColor),\n declaration(\"--gd-link-color\", tokens.linkColor),\n declaration(\"--gd-background-color\", tokens.backgroundColor),\n declaration(\"--gd-surface-color\", tokens.surfaceColor),\n declaration(\"--gd-header-color\", tokens.headerColor),\n declaration(\"--gd-border-color\", tokens.borderColor),\n declaration(\"--gd-accent-color\", tokens.accentColor),\n declaration(\"--gd-selection-color\", tokens.selectionColor),\n declaration(\"--gd-selection-text-color\", tokens.selectionTextColor),\n declaration(\"--gd-radius\", tokens.radius),\n declaration(\"--gd-spacing\", tokens.spacing),\n ].join(\"\");\n const optionalRules = [\n tokens.fontFamily ? \"body{font-family:var(--gd-font-family);}\" : \"\",\n tokens.textColor\n ? \"body{color:var(--gd-text-color);--text-color:var(--gd-text-color);}\"\n : \"\",\n tokens.mutedTextColor\n ? \"body{--secondary-text-color:var(--gd-muted-text-color);}\"\n : \"\",\n tokens.linkColor\n ? \"body{--link-color:var(--gd-link-color);}a{color:var(--gd-link-color);}\"\n : \"\",\n tokens.backgroundColor\n ? \"html,body,.gdarticle{background-color:var(--gd-background-color);}\"\n : \"\",\n tokens.surfaceColor\n ? \".gddictname{background:var(--gd-surface-color);}\"\n : \"\",\n tokens.headerColor\n ? \".gddictname{background:var(--gd-header-color);}\"\n : \"\",\n tokens.borderColor\n ? \".gdarticle,.gddictname{border-color:var(--gd-border-color);}\"\n : \"\",\n tokens.accentColor\n ? \".gdactivearticle{border-color:var(--gd-accent-color);}\"\n : \"\",\n tokens.selectionColor || tokens.selectionTextColor\n ? \"::selection{background:var(--gd-selection-color,var(--selection-bg));color:var(--gd-selection-text-color,var(--selection-text));}\"\n : \"\",\n tokens.radius ? \".gdarticle{border-radius:var(--gd-radius);}\" : \"\",\n ].join(\"\");\n\n return escapeStyleText(\n `:root{color-scheme:${mode};${variables}}${optionalRules}${theme.cssText ?? \"\"}`,\n );\n}\n","import { BUILTIN_ASSET_URLS } from \"../assets\";\nimport {\n GOLDENDICT_BASE_CSS,\n GOLDENDICT_PRINT_CSS,\n getGoldenDictPresetCss,\n} from \"../styles/fidelity\";\nimport type {\n GoldenDictTheme,\n LookupArticle,\n LookupResponse,\n ScriptPolicy,\n} from \"../types\";\nimport { prepareArticleHtml } from \"./article-html\";\nimport { resolveResourceUrl } from \"./link-router\";\nimport { escapeStyleText, themeToCss } from \"./theme\";\n\nexport interface ArticleDocumentOptions {\n apiBaseUrl: string;\n instanceId: string;\n scriptPolicy: ScriptPolicy;\n theme?: GoldenDictTheme;\n}\n\nfunction escapeHtml(value: string): string {\n return value\n .replaceAll(\"&\", \"&\")\n .replaceAll(\"<\", \"<\")\n .replaceAll(\">\", \">\")\n .replaceAll('\"', \""\")\n .replaceAll(\"'\", \"'\");\n}\n\nfunction safeDomId(value: string): string {\n return value.replace(/[^a-zA-Z0-9_-]/g, (character) =>\n `_u${character.codePointAt(0)?.toString(16) ?? \"0\"}_`,\n );\n}\n\nfunction safeLanguageClass(value: string | undefined): string {\n return (value ?? \"unknown\").toLowerCase().replace(/[^a-z0-9_-]/g, \"-\");\n}\n\nfunction articleIconUrl(article: LookupArticle, apiBaseUrl: string): string {\n if (!article.iconUrl) {\n return BUILTIN_ASSET_URLS[\"document.png\"] ?? \"\";\n }\n return resolveResourceUrl(article.iconUrl, {\n apiBaseUrl,\n dictionaryId: article.dictionaryId,\n ...(article.resourceBaseUrl\n ? { resourceBaseUrl: article.resourceBaseUrl }\n : {}),\n });\n}\n\nfunction renderArticle(\n article: LookupArticle,\n apiBaseUrl: string,\n scriptPolicy: ScriptPolicy,\n): string {\n const dictionaryId = escapeHtml(article.dictionaryId);\n const domId = safeDomId(article.dictionaryId);\n const body = prepareArticleHtml(article, apiBaseUrl, scriptPolicy);\n const sourceLanguage = safeLanguageClass(article.sourceLanguage);\n const targetLanguage = escapeHtml(article.targetLanguage ?? \"\");\n const iconUrl = escapeHtml(articleIconUrl(article, apiBaseUrl));\n return `\n <article class=\"gdarticle\" id=\"gdfrom-${domId}\" data-gd-id=\"${dictionaryId}\">\n <gd-dict-header class=\"gddictname\" id=\"gddictname-${domId}\"\n role=\"button\" tabindex=\"0\" aria-expanded=\"true\" aria-controls=\"gd-${domId}\">\n <span class=\"gddicticon\"><img src=\"${iconUrl}\" alt=\"\"></span>\n <span class=\"gdfromprefix\">From </span>\n <span class=\"gddicttitle\">${escapeHtml(article.dictionaryName)}</span>\n <span class=\"collapse_expand_area\" aria-hidden=\"true\">\n <img class=\"gdcollapseicon\" id=\"expandicon-${domId}\" alt=\"\">\n </span>\n </gd-dict-header>\n <section class=\"gdarticlebody gdlangfrom-${sourceLanguage}\"\n lang=\"${targetLanguage}\" id=\"gd-${domId}\">${body}</section>\n </article>\n <div class=\"gdclear\" aria-hidden=\"true\"></div>\n <span class=\"gdarticleseparator\"></span>`;\n}\n\nfunction renderSuggestions(suggestions: readonly string[]): string {\n if (!suggestions.length) {\n return \"\";\n }\n const links = suggestions\n .map(\n (suggestion) =>\n `<a href=\"#\" data-gd-action=\"lookup\" data-gd-word=\"${escapeHtml(suggestion)}\">${escapeHtml(suggestion)}</a>`,\n )\n .join(\", \");\n return `<div class=\"gdstemmedsuggestion\">\n <span class=\"gdstemmedsuggestion_head\">Close words: </span>\n <span class=\"gdstemmedsuggestion_body\">${links}</span>\n </div>`;\n}\n\nfunction bridgeScript(instanceId: string): string {\n const config = JSON.stringify({\n namespace: \"goldendict-web\",\n instanceId,\n expandOptIcon: BUILTIN_ASSET_URLS[\"expand_opt.svg\"],\n collapseOptIcon: BUILTIN_ASSET_URLS[\"collapse_opt.svg\"],\n }).replace(/<\\//g, \"<\\\\/\");\n return `(function(){\n \"use strict\";\n const config=${config};\n const post=(type,detail={})=>parent.postMessage({\n namespace:config.namespace,\n instanceId:config.instanceId,\n type,\n detail\n },\"*\");\n const articleOf=(target)=>target instanceof Element?target.closest(\".gdarticle\"):null;\n const articleId=(article)=>article?.getAttribute(\"data-gd-id\")||\"\";\n const setActive=(article,notify=true)=>{\n if(!article)return;\n document.querySelector(\".gdactivearticle\")?.classList.remove(\"gdactivearticle\");\n article.classList.add(\"gdactivearticle\");\n if(notify)post(\"active-article\",{dictionaryId:articleId(article)});\n };\n const toggleArticle=(article)=>{\n if(!article)return;\n const body=article.querySelector(\".gdarticlebody\");\n const header=article.querySelector(\".gddictname\");\n const icon=article.querySelector(\".gdexpandicon,.gdcollapseicon\");\n if(!body||!header)return;\n const collapsed=!body.hidden&&getComputedStyle(body).display!==\"none\";\n body.hidden=collapsed;\n body.style.display=collapsed?\"none\":\"block\";\n article.classList.toggle(\"gdcollapsedarticle\",collapsed);\n header.setAttribute(\"aria-expanded\",String(!collapsed));\n if(icon)icon.className=collapsed?\"gdexpandicon\":\"gdcollapseicon\";\n post(\"article-toggle\",{dictionaryId:articleId(article),collapsed});\n requestSize();\n };\n const expandOptional=(expanderId,optionalId)=>{\n const expander=document.getElementById(expanderId);\n const optional=document.getElementById(optionalId);\n if(!expander||!optional)return;\n const expanding=expander.getAttribute(\"aria-expanded\")!==\"true\"&&expander.getAttribute(\"alt\")!==\"[-]\";\n expander.setAttribute(\"aria-expanded\",String(expanding));\n expander.setAttribute(\"alt\",expanding?\"[-]\":\"[+]\");\n if(expander instanceof HTMLImageElement)expander.src=expanding?config.collapseOptIcon:config.expandOptIcon;\n optional.querySelectorAll(\".dsl_opt\").forEach((part)=>{\n part.style.display=expanding?\"inline\":\"none\";\n });\n requestSize();\n };\n globalThis.gdExpandOptPart=expandOptional;\n globalThis.gdMakeArticleActive=(id,noEvent)=>{\n const article=[...document.querySelectorAll(\".gdarticle\")].find((item)=>articleId(item)===id);\n setActive(article,!noEvent);\n };\n globalThis.gdCheckArticlesNumber=()=>{\n const articles=document.querySelectorAll(\".gdarticle\");\n if(articles.length===1&&articles[0].classList.contains(\"gdcollapsedarticle\"))toggleArticle(articles[0]);\n };\n globalThis.articleview={\n onJsActiveArticleChanged:(id)=>post(\"active-article\",{dictionaryId:String(id).replace(/^gdfrom-/,\"\")}),\n linkClickedInHtml:()=>{},\n collapseInHtml:(id,collapsed)=>post(\"article-toggle\",{dictionaryId:id,collapsed:Boolean(collapsed)})\n };\n const handleAction=(anchor,event)=>{\n const action=anchor.getAttribute(\"data-gd-action\");\n if(!action)return false;\n event.preventDefault();\n if(action===\"lookup\"){\n const dictionaries=(anchor.getAttribute(\"data-gd-dictionaries\")||\"\").split(\",\").filter(Boolean);\n post(\"lookup\",{\n word:anchor.getAttribute(\"data-gd-word\")||anchor.textContent||\"\",\n anchor:anchor.getAttribute(\"data-gd-anchor\")||undefined,\n dictionaryIds:dictionaries.length?dictionaries:undefined\n });\n }else if(action===\"external\"){\n post(\"external-link\",{url:anchor.href});\n }else if(action===\"audio\"||action===\"video\"||action===\"resource\"){\n post(\"media\",{kind:action,url:anchor.href,dictionaryId:anchor.getAttribute(\"data-gd-dictionary\")||undefined});\n }\n return true;\n };\n document.addEventListener(\"click\",(event)=>{\n const target=event.target;\n if(!(target instanceof Element))return;\n const optional=target.closest(\".hidden_expand_opt[data-gd-optional]\");\n if(optional){\n event.preventDefault();\n expandOptional(optional.getAttribute(\"data-gd-expander\")||optional.id,optional.getAttribute(\"data-gd-optional\"));\n return;\n }\n const anchor=target.closest(\"a,area\");\n if(anchor&&handleAction(anchor,event))return;\n const header=target.closest(\".gddictname\");\n const article=articleOf(target);\n if(header){event.preventDefault();toggleArticle(article);event.stopPropagation();}\n setActive(article,true);\n });\n document.addEventListener(\"contextmenu\",(event)=>setActive(articleOf(event.target),true));\n document.addEventListener(\"keydown\",(event)=>{\n if(event.key!==\"Enter\"&&event.key!==\" \")return;\n const target=event.target;\n if(!(target instanceof Element))return;\n const header=target.closest(\".gddictname\");\n if(header){event.preventDefault();toggleArticle(articleOf(header));}\n });\n const requestSize=()=>requestAnimationFrame(()=>post(\"height\",{\n height:Math.max(document.body.scrollHeight,document.documentElement.scrollHeight)\n }));\n addEventListener(\"message\",(event)=>{\n const message=event.data;\n if(event.source!==parent||message?.namespace!==config.namespace||message?.instanceId!==config.instanceId)return;\n if(message.type===\"scroll-anchor\")document.getElementById(message.anchor)?.scrollIntoView({block:\"start\"});\n if(message.type===\"scroll-article\"){\n const article=[...document.querySelectorAll(\".gdarticle\")].find((item)=>articleId(item)===message.dictionaryId);\n article?.scrollIntoView({block:\"start\"});setActive(article,false);\n }\n });\n new ResizeObserver(requestSize).observe(document.documentElement);\n addEventListener(\"load\",()=>{requestSize();post(\"ready\",{});});\n })();`;\n}\n\nfunction contentSecurityPolicy(\n scriptPolicy: ScriptPolicy,\n nonce: string,\n): string {\n const scriptSource =\n scriptPolicy === \"none\"\n ? `'nonce-${nonce}'`\n : \"'unsafe-inline' 'unsafe-eval' data: blob: http: https:\";\n const connectSource = scriptPolicy === \"none\" ? \"'none'\" : \"http: https:\";\n return [\n \"default-src 'none'\",\n \"img-src data: blob: http: https:\",\n \"media-src data: blob: http: https:\",\n \"font-src data: blob: http: https:\",\n \"style-src 'unsafe-inline' data: blob: http: https:\",\n `script-src ${scriptSource}`,\n `connect-src ${connectSource}`,\n \"frame-src http: https:\",\n \"object-src 'none'\",\n \"form-action 'none'\",\n \"base-uri 'none'\",\n ].join(\"; \");\n}\n\nexport function buildArticleDocument(\n response: LookupResponse,\n options: ArticleDocumentOptions,\n): string {\n const theme = options.theme ?? {};\n const nonce = options.instanceId.replace(/[^a-zA-Z0-9_-]/g, \"\");\n const articles = response.articles\n .map((article) =>\n renderArticle(article, options.apiBaseUrl, options.scriptPolicy),\n )\n .join(\"\");\n const content = articles\n ? `${articles}<div class=\"empty-space\" aria-hidden=\"true\"></div>`\n : `<div class=\"gdnotfound\"><p>No translation for <b>${escapeHtml(response.word)}</b> was found.</p></div>`;\n const title = theme.brandName\n ? `${response.word} — ${theme.brandName}`\n : response.word;\n return `<!doctype html>\n<html><head>\n <meta charset=\"utf-8\">\n <meta name=\"viewport\" content=\"width=device-width,initial-scale=1\">\n <meta http-equiv=\"Content-Security-Policy\" content=\"${escapeHtml(contentSecurityPolicy(options.scriptPolicy, nonce))}\">\n <title>${escapeHtml(title)}</title>\n <style>${escapeStyleText(GOLDENDICT_BASE_CSS)}</style>\n <style>${escapeStyleText(getGoldenDictPresetCss(theme.preset))}</style>\n <style>${themeToCss(theme)}</style>\n <style media=\"print\">${escapeStyleText(GOLDENDICT_PRINT_CSS)}</style>\n</head><body>\n ${content}\n ${renderSuggestions(response.suggestions)}\n <script nonce=\"${nonce}\">${bridgeScript(options.instanceId).replace(/<\\/script/gi, \"<\\\\/script\")}</script>\n</body></html>`;\n}\n","export type GoldenDictPreset =\n | \"default\"\n | \"classic\"\n | \"modern\"\n | \"lingvo\"\n | \"babylon\"\n | \"lingoes\"\n | \"lingoes-blue\";\n\nexport type ThemeMode = \"light\" | \"dark\" | \"auto\";\n\nexport type ScriptPolicy = \"none\" | \"sandboxed\";\n\nexport type ViewState =\n | \"idle\"\n | \"loading\"\n | \"ready\"\n | \"not-found\"\n | \"error\";\n\nexport interface DictionarySummary {\n id: string;\n name: string;\n format: string;\n sourceLanguage?: string;\n targetLanguage?: string;\n path?: string;\n iconUrl?: string;\n resourceBaseUrl?: string;\n wordCount?: number;\n}\n\nexport interface LoadDictionaryRequest {\n path: string;\n name?: string;\n}\n\nexport interface LoadDictionaryResponse {\n dictionary: DictionarySummary;\n loaded: boolean;\n message?: string;\n}\n\nexport interface LookupArticle {\n dictionaryId: string;\n dictionaryName: string;\n format: string;\n html: string;\n sourceLanguage?: string;\n targetLanguage?: string;\n iconUrl?: string;\n resourceBaseUrl?: string;\n}\n\nexport interface LookupResponse {\n word: string;\n articles: LookupArticle[];\n suggestions: string[];\n lookupTimeMs: number;\n}\n\nexport interface LookupOptions {\n dictionaryIds?: readonly string[];\n signal?: AbortSignal;\n}\n\nexport interface DictionaryClientOptions {\n baseUrl?: string;\n fetch?: typeof globalThis.fetch;\n headers?: Readonly<Record<string, string>>;\n credentials?: RequestCredentials;\n}\n\nexport interface GoldenDictThemeTokens {\n fontFamily: string;\n textColor: string;\n mutedTextColor: string;\n linkColor: string;\n backgroundColor: string;\n surfaceColor: string;\n headerColor: string;\n borderColor: string;\n accentColor: string;\n selectionColor: string;\n selectionTextColor: string;\n radius: string;\n spacing: string;\n}\n\nexport interface GoldenDictTheme {\n preset?: GoldenDictPreset;\n mode?: ThemeMode;\n tokens?: Partial<GoldenDictThemeTokens>;\n cssText?: string;\n brandName?: string;\n logoUrl?: string;\n}\n\nexport interface LookupEventDetail {\n word: string;\n anchor?: string;\n dictionaryIds?: string[];\n}\n\nexport interface ActiveArticleEventDetail {\n dictionaryId: string;\n}\n\nexport interface ArticleToggleEventDetail {\n dictionaryId: string;\n collapsed: boolean;\n}\n\nexport interface MediaRequestEventDetail {\n kind: \"audio\" | \"video\" | \"resource\";\n url: string;\n dictionaryId?: string;\n}\n\nexport interface ExternalLinkEventDetail {\n url: string;\n}\n\nexport interface ViewStateEventDetail {\n state: ViewState;\n word?: string;\n error?: Error;\n}\n\nexport const GOLDENDICT_EVENTS = {\n lookup: \"goldendict-lookup\",\n activeArticleChange: \"goldendict-active-article-change\",\n articleToggle: \"goldendict-article-toggle\",\n mediaRequest: \"goldendict-media-request\",\n externalLink: \"goldendict-external-link\",\n stateChange: \"goldendict-state-change\",\n} as const;\n","import { DictionaryClient } from \"../client/dictionary-client\";\nimport { buildArticleDocument } from \"../renderer/article-document\";\nimport type {\n ActiveArticleEventDetail,\n ArticleToggleEventDetail,\n DictionaryClientOptions,\n ExternalLinkEventDetail,\n GoldenDictTheme,\n LookupEventDetail,\n LookupResponse,\n MediaRequestEventDetail,\n ScriptPolicy,\n ViewState,\n ViewStateEventDetail,\n} from \"../types\";\nimport { GOLDENDICT_EVENTS } from \"../types\";\n\nconst SHADOW_STYLES = `\n :host{display:block;min-width:0;color:#222;font-family:system-ui,sans-serif}\n .shell{position:relative;min-height:8rem;border-radius:var(--gd-host-radius,8px);overflow:hidden;background:var(--gd-host-background,#fff)}\n .brand{display:flex;align-items:center;gap:.65rem;padding:.65rem .9rem;border-bottom:1px solid var(--gd-host-border,#e3e3e3);background:var(--gd-host-surface,#f7f9fb);font-weight:650}\n .brand[hidden]{display:none}\n .brand img{display:block;width:1.75rem;height:1.75rem;object-fit:contain}\n .brand img[hidden]{display:none}\n .status{display:grid;place-items:center;min-height:8rem;padding:1.25rem;text-align:center;color:var(--gd-host-muted,#59636e)}\n .status[hidden]{display:none}\n .status[data-state=\"error\"]{color:var(--gd-host-error,#a21d2d)}\n .spinner{width:1.25rem;height:1.25rem;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;animation:spin .75s linear infinite;margin:0 auto .7rem}\n iframe{display:block;width:100%;min-height:8rem;border:0;background:transparent}\n iframe[hidden]{display:none}\n @keyframes spin{to{transform:rotate(360deg)}}\n @media (prefers-reduced-motion:reduce){.spinner{animation:none}}\n`;\n\ninterface BridgeMessage {\n namespace?: string;\n instanceId?: string;\n type?: string;\n detail?: unknown;\n}\n\nfunction makeInstanceId(): string {\n return globalThis.crypto?.randomUUID?.() ??\n `gd-${Date.now().toString(36)}-${Math.random().toString(36).slice(2)}`;\n}\n\nfunction isAbortError(error: unknown): boolean {\n return error instanceof DOMException\n ? error.name === \"AbortError\"\n : error instanceof Error && error.name === \"AbortError\";\n}\n\nexport class GoldenDictView extends HTMLElement {\n static readonly observedAttributes = [\n \"api-base\",\n \"word\",\n \"preset\",\n \"theme-mode\",\n \"script-policy\",\n ];\n\n readonly instanceId = makeInstanceId();\n private readonly frame: HTMLIFrameElement;\n private readonly statusElement: HTMLDivElement;\n private readonly brandElement: HTMLDivElement;\n private readonly brandImage: HTMLImageElement;\n private readonly brandText: HTMLSpanElement;\n private clientValue: DictionaryClient;\n private requestController?: AbortController;\n private requestSequence = 0;\n private responseValue?: LookupResponse;\n private themeValue: GoldenDictTheme = {};\n private stateValue: ViewState = \"idle\";\n private dictionaryIdsValue: string[] = [];\n private pendingAnchor?: string;\n\n constructor() {\n super();\n const shadow = this.attachShadow({ mode: \"open\" });\n shadow.innerHTML = `<style>${SHADOW_STYLES}</style>\n <section class=\"shell\" part=\"container\">\n <div class=\"brand\" part=\"brand\" hidden>\n <img alt=\"\" hidden><span></span>\n </div>\n <div class=\"status\" part=\"status\" role=\"status\" aria-live=\"polite\"></div>\n <iframe part=\"article\" title=\"Dictionary article\" sandbox=\"allow-scripts\"\n referrerpolicy=\"no-referrer\" hidden></iframe>\n </section>`;\n this.frame = shadow.querySelector(\"iframe\") as HTMLIFrameElement;\n this.statusElement = shadow.querySelector(\".status\") as HTMLDivElement;\n this.brandElement = shadow.querySelector(\".brand\") as HTMLDivElement;\n this.brandImage = this.brandElement.querySelector(\"img\") as HTMLImageElement;\n this.brandText = this.brandElement.querySelector(\"span\") as HTMLSpanElement;\n this.clientValue = new DictionaryClient({ baseUrl: this.apiBase });\n this.frame.addEventListener(\"load\", () => this.handleFrameLoaded());\n this.updateBrand();\n this.setState(\"idle\");\n }\n\n connectedCallback(): void {\n globalThis.addEventListener(\"message\", this.handleBridgeMessage);\n const attributeWord = this.getAttribute(\"word\")?.trim();\n if (attributeWord) {\n void this.lookup(attributeWord);\n }\n }\n\n disconnectedCallback(): void {\n globalThis.removeEventListener(\"message\", this.handleBridgeMessage);\n this.abort();\n }\n\n attributeChangedCallback(\n name: string,\n oldValue: string | null,\n newValue: string | null,\n ): void {\n if (oldValue === newValue) {\n return;\n }\n if (name === \"api-base\") {\n this.clientValue = new DictionaryClient({ baseUrl: newValue ?? \"/api/v1\" });\n } else if (name === \"word\" && this.isConnected && newValue?.trim()) {\n void this.lookup(newValue);\n } else if (name === \"preset\") {\n this.theme = {\n ...this.themeValue,\n preset: (newValue || \"default\") as GoldenDictTheme[\"preset\"],\n };\n } else if (name === \"theme-mode\") {\n this.theme = {\n ...this.themeValue,\n mode: (newValue || \"light\") as GoldenDictTheme[\"mode\"],\n };\n } else if (name === \"script-policy\" && this.responseValue) {\n this.renderResponse(this.responseValue);\n }\n }\n\n get apiBase(): string {\n return this.getAttribute(\"api-base\")?.trim() || \"/api/v1\";\n }\n\n set apiBase(value: string) {\n this.setAttribute(\"api-base\", value);\n }\n\n get client(): DictionaryClient {\n return this.clientValue;\n }\n\n set client(value: DictionaryClient) {\n this.clientValue = value;\n }\n\n get theme(): GoldenDictTheme {\n return this.themeValue;\n }\n\n set theme(value: GoldenDictTheme) {\n this.themeValue = { ...value, tokens: { ...value.tokens } };\n this.updateBrand();\n if (this.responseValue) {\n this.renderResponse(this.responseValue);\n }\n }\n\n get scriptPolicy(): ScriptPolicy {\n return this.getAttribute(\"script-policy\") === \"sandboxed\"\n ? \"sandboxed\"\n : \"none\";\n }\n\n set scriptPolicy(value: ScriptPolicy) {\n this.setAttribute(\"script-policy\", value);\n }\n\n get dictionaryIds(): readonly string[] {\n return this.dictionaryIdsValue;\n }\n\n set dictionaryIds(value: readonly string[]) {\n this.dictionaryIdsValue = [...value];\n }\n\n get state(): ViewState {\n return this.stateValue;\n }\n\n get response(): LookupResponse | undefined {\n return this.responseValue;\n }\n\n configureClient(options: DictionaryClientOptions): void {\n this.clientValue = new DictionaryClient(options);\n }\n\n async lookup(\n word: string,\n dictionaryIds: readonly string[] = this.dictionaryIdsValue,\n ): Promise<void> {\n const normalizedWord = word.trim();\n if (!normalizedWord) {\n this.clear();\n return;\n }\n this.abort();\n const sequence = ++this.requestSequence;\n const controller = new AbortController();\n this.requestController = controller;\n this.dictionaryIdsValue = [...dictionaryIds];\n this.setState(\"loading\", { word: normalizedWord });\n try {\n const response = await this.clientValue.lookup(normalizedWord, {\n dictionaryIds,\n signal: controller.signal,\n });\n if (sequence !== this.requestSequence || controller.signal.aborted) {\n return;\n }\n this.setLookupResponse(response);\n } catch (error) {\n if (sequence !== this.requestSequence || isAbortError(error)) {\n return;\n }\n const normalizedError =\n error instanceof Error ? error : new Error(String(error));\n this.responseValue = undefined;\n this.frame.hidden = true;\n this.setState(\"error\", { word: normalizedWord, error: normalizedError });\n } finally {\n if (sequence === this.requestSequence) {\n this.requestController = undefined;\n }\n }\n }\n\n setLookupResponse(response: LookupResponse): void {\n this.responseValue = response;\n this.renderResponse(response);\n }\n\n abort(): void {\n this.requestController?.abort();\n this.requestController = undefined;\n }\n\n clear(): void {\n this.abort();\n this.requestSequence += 1;\n this.responseValue = undefined;\n this.frame.removeAttribute(\"srcdoc\");\n this.frame.hidden = true;\n this.setState(\"idle\");\n }\n\n scrollToArticle(dictionaryId: string): void {\n this.postCommand({ type: \"scroll-article\", dictionaryId });\n }\n\n private renderResponse(response: LookupResponse): void {\n this.frame.style.height = \"8rem\";\n this.frame.srcdoc = buildArticleDocument(response, {\n apiBaseUrl: this.clientValue.baseUrl,\n instanceId: this.instanceId,\n scriptPolicy: this.scriptPolicy,\n theme: this.themeValue,\n });\n this.frame.title = response.word\n ? `Dictionary results for ${response.word}`\n : \"Dictionary article\";\n this.frame.hidden = false;\n this.statusElement.hidden = true;\n }\n\n private handleFrameLoaded(): void {\n if (!this.responseValue) {\n return;\n }\n this.setState(\n this.responseValue.articles.length ? \"ready\" : \"not-found\",\n { word: this.responseValue.word },\n );\n if (this.pendingAnchor) {\n this.postCommand({ type: \"scroll-anchor\", anchor: this.pendingAnchor });\n this.pendingAnchor = undefined;\n }\n }\n\n private readonly handleBridgeMessage = (event: MessageEvent): void => {\n if (event.source !== this.frame.contentWindow) {\n return;\n }\n const message = event.data as BridgeMessage;\n if (\n message.namespace !== \"goldendict-web\" ||\n message.instanceId !== this.instanceId ||\n !message.type\n ) {\n return;\n }\n const detail = (message.detail ?? {}) as Record<string, unknown>;\n switch (message.type) {\n case \"ready\":\n this.handleFrameLoaded();\n break;\n case \"height\": {\n const height = Number(detail.height);\n if (Number.isFinite(height) && height > 0) {\n this.frame.style.height = `${Math.min(Math.max(height, 128), 100_000)}px`;\n }\n break;\n }\n case \"lookup\":\n this.handleLookupMessage(detail);\n break;\n case \"active-article\":\n this.emit<ActiveArticleEventDetail>(GOLDENDICT_EVENTS.activeArticleChange, {\n dictionaryId: String(detail.dictionaryId ?? \"\"),\n });\n break;\n case \"article-toggle\":\n this.emit<ArticleToggleEventDetail>(GOLDENDICT_EVENTS.articleToggle, {\n dictionaryId: String(detail.dictionaryId ?? \"\"),\n collapsed: Boolean(detail.collapsed),\n });\n break;\n case \"media\":\n this.handleMediaMessage(detail);\n break;\n case \"external-link\":\n this.handleExternalLink(String(detail.url ?? \"\"));\n break;\n }\n };\n\n private handleLookupMessage(detail: Record<string, unknown>): void {\n const word = String(detail.word ?? \"\").trim();\n if (!word) {\n return;\n }\n const dictionaries = Array.isArray(detail.dictionaryIds)\n ? detail.dictionaryIds.map(String)\n : this.dictionaryIdsValue;\n const eventDetail: LookupEventDetail = {\n word,\n ...(detail.anchor ? { anchor: String(detail.anchor) } : {}),\n ...(dictionaries.length ? { dictionaryIds: [...dictionaries] } : {}),\n };\n const event = this.emit(GOLDENDICT_EVENTS.lookup, eventDetail, true);\n if (!event.defaultPrevented) {\n this.pendingAnchor = eventDetail.anchor;\n void this.lookup(word, dictionaries);\n }\n }\n\n private handleMediaMessage(detail: Record<string, unknown>): void {\n const kind =\n detail.kind === \"video\" || detail.kind === \"resource\"\n ? detail.kind\n : \"audio\";\n const eventDetail: MediaRequestEventDetail = {\n kind,\n url: String(detail.url ?? \"\"),\n ...(detail.dictionaryId\n ? { dictionaryId: String(detail.dictionaryId) }\n : {}),\n };\n if (!eventDetail.url) {\n return;\n }\n const event = this.emit(GOLDENDICT_EVENTS.mediaRequest, eventDetail, true);\n if (event.defaultPrevented) {\n return;\n }\n if (kind === \"audio\") {\n void new Audio(eventDetail.url).play().catch(() => undefined);\n } else {\n this.openExternal(eventDetail.url);\n }\n }\n\n private handleExternalLink(url: string): void {\n if (!url) {\n return;\n }\n const event = this.emit<ExternalLinkEventDetail>(\n GOLDENDICT_EVENTS.externalLink,\n { url },\n true,\n );\n if (!event.defaultPrevented) {\n this.openExternal(url);\n }\n }\n\n private openExternal(url: string): void {\n const opened = globalThis.open?.(url, \"_blank\", \"noopener,noreferrer\");\n if (opened) {\n opened.opener = null;\n }\n }\n\n private updateBrand(): void {\n const brandName = this.themeValue.brandName?.trim() ?? \"\";\n const logoUrl = this.themeValue.logoUrl?.trim() ?? \"\";\n this.brandElement.hidden = !brandName && !logoUrl;\n this.brandText.textContent = brandName;\n this.brandImage.hidden = !logoUrl;\n if (logoUrl) {\n this.brandImage.src = logoUrl;\n } else {\n this.brandImage.removeAttribute(\"src\");\n }\n }\n\n private setState(\n state: ViewState,\n context: { word?: string; error?: Error } = {},\n ): void {\n const changed = state !== this.stateValue;\n this.stateValue = state;\n this.statusElement.dataset.state = state;\n this.statusElement.hidden = state === \"ready\" || state === \"not-found\";\n if (state === \"loading\") {\n this.frame.hidden = true;\n this.statusElement.innerHTML = `<div><div class=\"spinner\" aria-hidden=\"true\"></div>Looking up <strong></strong>…</div>`;\n const strong = this.statusElement.querySelector(\"strong\");\n if (strong) {\n strong.textContent = context.word ?? \"\";\n }\n } else if (state === \"error\") {\n this.statusElement.textContent =\n context.error?.message ?? \"The dictionary request failed.\";\n } else if (state === \"idle\") {\n this.statusElement.textContent = \"Enter a word to search the loaded dictionaries.\";\n } else {\n this.statusElement.textContent =\n state === \"not-found\" ? `No translation found for ${context.word ?? \"\"}.` : \"\";\n }\n if (changed) {\n this.emit<ViewStateEventDetail>(GOLDENDICT_EVENTS.stateChange, {\n state,\n ...(context.word ? { word: context.word } : {}),\n ...(context.error ? { error: context.error } : {}),\n });\n }\n }\n\n private postCommand(message: Record<string, unknown>): void {\n this.frame.contentWindow?.postMessage(\n {\n namespace: \"goldendict-web\",\n instanceId: this.instanceId,\n ...message,\n },\n \"*\",\n );\n }\n\n private emit<T>(\n name: string,\n detail: T,\n cancelable = false,\n ): CustomEvent<T> {\n const event = new CustomEvent<T>(name, {\n detail,\n bubbles: true,\n composed: true,\n cancelable,\n });\n this.dispatchEvent(event);\n return event;\n }\n}\n\nexport function defineGoldendictView(\n tagName = \"goldendict-view\",\n): typeof GoldenDictView {\n if (!globalThis.customElements) {\n return GoldenDictView;\n }\n const existing = globalThis.customElements.get(tagName);\n if (!existing) {\n globalThis.customElements.define(tagName, GoldenDictView);\n return GoldenDictView;\n }\n return existing as typeof GoldenDictView;\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"goldendict-view\": GoldenDictView;\n }\n}\n","export { DictionaryApiError, DictionaryClient } from \"./client/dictionary-client\";\nexport {\n GoldenDictView,\n defineGoldendictView,\n} from \"./element/goldendict-view\";\nexport {\n GOLDENDICT_SCHEME_SUPPORT,\n classifyArticleLink,\n resolveResourceUrl,\n type ArticleLinkAction,\n type ResourceContext,\n} from \"./renderer/link-router\";\nexport {\n DARK_THEME_TOKENS,\n LIGHT_THEME_TOKENS,\n escapeStyleText,\n resolveThemeMode,\n themeToCss,\n} from \"./renderer/theme\";\nexport { GOLDENDICT_EVENTS } from \"./types\";\nexport type * from \"./types\";\n\nimport { defineGoldendictView } from \"./element/goldendict-view\";\n\ndefineGoldendictView();\n"],"names":["DictionaryApiError","message","status","body","normalizeBaseUrl","baseUrl","normalized","normalizeDictionary","value","id","name","readResponseBody","response","text","DictionaryClient","options","fetchImpl","signal","input","word","normalizedWord","query","suffix","path","init","serverMessage","arrowSvg","audioPng","collapseArticleHoveredSvg","collapseArticleSvg","collapseOptSvg","documentPng","downArrowSvg","expandArticleHoveredSvg","expandArticleSvg","expandOptSvg","oldArrowSvg","oldDownArrowSvg","playSoundSvg","videoSvg","warningSvg","svgDataUrl","svg","BUILTIN_ASSET_URLS","resolveBuiltinAsset","url","match","rewriteBuiltinAssetUrls","css","original","fileName","GOLDENDICT_VENDOR_CSS","baseCss","printCss","babylonCss","classicCss","lingoesBlueCss","lingoesCss","lingvoCss","modernCss","presets","GOLDENDICT_BASE_CSS","GOLDENDICT_PRINT_CSS","getGoldenDictPresetCss","preset","CUSTOM_RESOURCE_SCHEMES","GOLDENDICT_SCHEME_SUPPORT","UNSUPPORTED_INTERNAL_SCHEMES","support","scheme","decode","joinUrl","base","normalizedResourcePath","part","absoluteOrRelativeUrl","raw","contextResourceBase","context","resolveResourceUrl","rawUrl","builtin","resourceBase","dictionaryId","fallbackBase","resolved","parseLookupUrl","schemeMatch","anchor","dictionaryIds","parsed","remainder","pathAndQuery","hash","classifyArticleLink","lookup","RESOURCE_ATTRIBUTES","isDirectBrowserUrl","declaredLinkAction","element","href","declarations","attribute","kind","declaredUrl","declaredKind","declaredWord","classified","setActionAttributes","action","rewriteCssResourceUrls","quote","rewriteSrcset","candidate","preserveOptionalPartTarget","handler","prepareArticleHtml","article","apiBaseUrl","scriptPolicy","container","node","srcset","inlineStyle","style","LIGHT_THEME_TOKENS","DARK_THEME_TOKENS","resolveThemeMode","mode","declaration","escapeStyleText","themeToCss","theme","supplied","tokens","variables","optionalRules","escapeHtml","safeDomId","character","safeLanguageClass","articleIconUrl","renderArticle","domId","sourceLanguage","targetLanguage","iconUrl","renderSuggestions","suggestions","suggestion","bridgeScript","instanceId","contentSecurityPolicy","nonce","scriptSource","connectSource","buildArticleDocument","articles","content","title","GOLDENDICT_EVENTS","SHADOW_STYLES","makeInstanceId","isAbortError","error","GoldenDictView","shadow","attributeWord","oldValue","newValue","sequence","controller","normalizedError","event","detail","height","dictionaries","eventDetail","opened","brandName","logoUrl","state","changed","strong","cancelable","defineGoldendictView","tagName","existing"],"mappings":"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A;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GCAfC,IAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GCAfC,IAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GCAfC,IAAe,8wBCAfC,IAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GCAfC,IAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GCAfC,IAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GCAfC,IAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GCAfC,IAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GCAfC,IAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GCAfC,IAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GCAfC,IAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GCAfC,IAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACgBf,SAASC,EAAWC,GAAqB;AACvC,SAAO,oCAAoC,mBAAmBA,CAAG,CAAC;AACpE;AAEO,MAAMC,IAAuD;AAAA,EAClE,aAAaF,EAAWf,CAAQ;AAAA,EAChC,aAAaC;AAAA,EACb,wBAAwBc,EAAWZ,CAAkB;AAAA,EACrD,gCAAgCY,EAAWb,CAAyB;AAAA,EACpE,oBAAoBa,EAAWX,CAAc;AAAA,EAC7C,gBAAgBC;AAAA,EAChB,iBAAiBU,EAAWT,CAAY;AAAA,EACxC,sBAAsBS,EAAWP,CAAgB;AAAA,EACjD,8BAA8BO,EAAWR,CAAuB;AAAA,EAChE,kBAAkBQ,EAAWN,CAAY;AAAA,EACzC,iBAAiBM,EAAWL,CAAW;AAAA,EACvC,qBAAqBK,EAAWJ,CAAe;AAAA,EAC/C,iBAAiBI,EAAWH,CAAY;AAAA,EACxC,aAAaG,EAAWF,CAAQ;AAAA,EAChC,eAAeE,EAAWD,CAAU;AACtC;AAEO,SAASI,EAAoBC,GAAiC;AACnE,QAAMC,IAAQ,gDAAgD,KAAKD,CAAG;AACtE,SAAOC,IAAQ,CAAC,IAAIH,EAAmBG,EAAM,CAAC,CAAC,IAAI;AACrD;AAEO,SAASC,EAAwBC,GAAqB;AAC3D,SAAOA,EAAI;AAAA,IACT;AAAA,IACA,CAACC,GAAUC,MAAqBP,EAAmBO,CAAQ,KAAKD;AAAA,EAAA;AAEpE;AC9CO,MAAME,IAA8E,EAAC,qBAAoB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAA8x8D,2BAA0B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAAsyD,gCAA+B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAA2hD,gCAA+B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAAynvD,qCAAoC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAAg0N,gCAA+B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAAkgD,+BAA8B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA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"}
|